OpenCombine icon indicating copy to clipboard operation
OpenCombine copied to clipboard

Implement operators

Open broadwaylamb opened this issue 6 years ago • 5 comments

Mapping Elements

  • [x] map — #9
  • [x] tryMap — #15
  • [x] flatMap — #45
  • [x] mapError — #23
  • [x] replaceNil — #24
  • [x] scan — #49, #83
  • [x] tryScan — #49, #83
  • [x] setFailureType — #28

Filtering Elements

  • [x] filter — #22
  • [x] tryFilter — #22
  • [x] compactMap — #32
  • [x] tryCompactMap — #32
  • [x] removeDuplicates — #89
  • [x] tryRemoveDuplicates — #89
  • [x] replaceEmpty — #122
  • [x] replaceError — #50

Reducing Elements

  • [x] collect — #76
  • [x] collect(_:) — #137
  • [ ] collect(_:options:)
  • [x] ignoreOutput — #44
  • [x] reduce — #76
  • [x] tryReduce — #76

Applying Mathematical Operations on Elements

  • [x] count — #20
  • [x] max — #76
  • [x] max(by:) — #76
  • [x] tryMax(by:) — #76
  • [x] min — #76
  • [x] min(by:) — #76
  • [x] tryMin(by:) — #76

Applying Matching Criteria to Elements

  • [x] contains — #76
  • [x] contains(where:) — #76
  • [x] tryContains(where:) — #76
  • [x] allSatisfy — #76
  • [x] tryAllSatisfy — #76

Applying Sequence Operations to Elements

  • [x] drop(untilOutputFrom:) — #136
  • [x] drop(while:)
  • [x] dropFirst — #70
  • [x] tryDrop(while:)
  • [x] append — #90
  • [x] prepend — #90
  • [x] prefix — #91
  • [x] prefix(while:) — #89
  • [x] tryPrefix(while:) — #89
  • [x] prefix(untilOutputFrom:) — #206

Selecting Specific Elements

  • [x] first — #29
  • [x] first(where:) — #29
  • [x] tryFirst(where:) — #29
  • [x] last — #76
  • [x] last(where:) — #76
  • [x] tryLast(where:) — #76
  • [x] output(at:) — #91
  • [x] output(in:) — #91

Combining Elements from Multiple Publishers

  • [ ] combineLatest — #119
  • [ ] merge — #72
  • [x] zip — #51, #109, #222

Handling Errors

  • [x] assertNoFailure — #138
  • [x] catch — #140
  • [x] tryCatch — #140
  • [x] retry(_:) — #178

Adapting Publisher Types

  • [x] switchToLatest — #142

Controlling Timing

  • [x] measureInterval — #117
  • [x] debounce — #133
  • [x] delay — #114
  • [x] throttle — #195
  • [x] timeout — #164

Creating Reference-type Publishers

  • [x] share — #60

Encoding and Decoding

  • [x] decode — #8
  • [x] encode — #8

Identifying Properties with Key Paths

  • [x] map(_ keyPath: KeyPath) — #71

Working with Multiple Subscribers

  • [x] multicast
  • [x] multicast(subject:)

Connecting Automatically

  • [x] autoconnect — #60

Buffering Elements:

  • [x] buffer — #143

Performing Type-Erasure

  • [x] eraseToAnyPublisher — #59

Specifying Schedulers

  • [x] subscribe(on:options:) — #116
  • [x] receive(on:options:) — #115

Adding Explicit Connectability:

  • [x] makeConnectable — #61

Connecting Simple Subscribers:

  • [x] assign
  • [x] sink

Debugging

  • [x] breakpoint — #118
  • [x] breakpointOnError — #118
  • [x] handleEvents — #118
  • [x] print

broadwaylamb avatar Jun 16 '19 13:06 broadwaylamb

Any ETA on combineLatest, merge, zip and catch (or v1) as those are super essential for OpenCombine to be usable instead of RxSwift?

zdnk avatar Mar 02 '20 23:03 zdnk

@zdnk I’m quite busy with my job right now, so I didn’t have time to finish them. I can’t give you any estimation, but I’ll do my best to complete them before summer. Thank you for you interest.

broadwaylamb avatar Mar 03 '20 07:03 broadwaylamb

I would be happy to help to move this forward and hope I can complete some of these operators myself, those few listed are essential to my use as well. #109 with zip with full test coverage is ready for review, so maybe @broadwaylamb you could do just a review of it in the meantime?

MaxDesiatov avatar Mar 03 '20 08:03 MaxDesiatov

Hi folks, what's the status of the last two operators, combineLatest and merge? Our product requires shipping to iOS and macOS that don't support Combine yet, and we're currently using OpenCombine. Is there anything we could do to finish the implementation and have these operators released?

Thank you.

cc: @broadwaylamb

otaviocc avatar May 26 '22 06:05 otaviocc

The status is publicly visible in this issue and linked PRs. They are unfinished and all contributions are very welcome as usual.

MaxDesiatov avatar May 26 '22 06:05 MaxDesiatov