Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Tidied form of Publisher.prefixInclusive(while:).
extension Publisher {
func prefixInclusive(while predicate: @escaping (Output) -> Bool) -> AnyPublisher<Output, Failure> {
flatMap { value in
Just(PrefixInclusiveEvent.predicatePassingValueOrIncluded(value))
.append(!predicate(value) ? [.end] : [])
.setFailureType(to: Failure.self)
}
.prefix(while: \.isPredicatePassingValueOrIncluded)
.compactMap(\.output)
.eraseToAnyPublisher()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment