OpenCombine/OpenCombine

Implement operators

broadwaylamb opened this issue · 5 comments

Mapping Elements

Filtering Elements

  • filter#22
  • tryFilter#22
  • compactMap#32
  • tryCompactMap#32
  • removeDuplicates#89
  • tryRemoveDuplicates#89
  • replaceEmpty#122
  • replaceError#50

Reducing Elements

  • collect#76
  • collect(_:)#137
  • collect(_:options:)
  • ignoreOutput#44
  • reduce#76
  • tryReduce#76

Applying Mathematical Operations on Elements

  • count#20
  • max#76
  • max(by:)#76
  • tryMax(by:)#76
  • min#76
  • min(by:)#76
  • tryMin(by:)#76

Applying Matching Criteria to Elements

  • contains#76
  • contains(where:)#76
  • tryContains(where:)#76
  • allSatisfy#76
  • tryAllSatisfy#76

Applying Sequence Operations to Elements

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

Selecting Specific Elements

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

Combining Elements from Multiple Publishers

Handling Errors

Adapting Publisher Types

  • switchToLatest#142

Controlling Timing

Creating Reference-type Publishers

  • share#60

Encoding and Decoding

  • decode#8
  • encode#8

Identifying Properties with Key Paths

  • map(_ keyPath: KeyPath)#71

Working with Multiple Subscribers

  • multicast
  • multicast(subject:)

Connecting Automatically

  • autoconnect#60

Buffering Elements:

Performing Type-Erasure

  • eraseToAnyPublisher#59

Specifying Schedulers

  • subscribe(on:options:)#116
  • receive(on:options:)#115

Adding Explicit Connectability:

  • makeConnectable#61

Connecting Simple Subscribers:

  • assign
  • sink

Debugging

  • breakpoint#118
  • breakpointOnError#118
  • handleEvents#118
  • print
zdnk commented

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

@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.

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?

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

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