#import "SSignal+Mapping.h" @implementation SSignal (Mapping) - (SSignal *)map:(id (^)(id))f { return [[SSignal alloc] initWithGenerator:^id (SSubscriber *subscriber) { return [self startWithNext:^(id next) { [subscriber putNext:f(next)]; } error:^(id error) { [subscriber putError:error]; } completed:^ { [subscriber putCompletion]; }]; }]; } - (SSignal *)filter:(bool (^)(id))f { return [[SSignal alloc] initWithGenerator:^id (SSubscriber *subscriber) { return [self startWithNext:^(id next) { if (f(next)) [subscriber putNext:next]; } error:^(id error) { [subscriber putError:error]; } completed:^ { [subscriber putCompletion]; }]; }]; } @end