Swiftgram/SSignalKit/SSignal+Mapping.m
2015-01-31 02:39:38 +03:00

43 lines
1.1 KiB
Objective-C

#import "SSignal+Mapping.h"
@implementation SSignal (Mapping)
- (SSignal *)map:(id (^)(id))f
{
return [[SSignal alloc] initWithGenerator:^(SSubscriber *subscriber)
{
id<SDisposable> disposable = [self startWithNext:^(id next)
{
SSubscriber_putNext(subscriber, f(next));
} error:^(id error)
{
SSubscriber_putError(subscriber, error);
} completed:^
{
SSubscriber_putCompletion(subscriber);
}];
[subscriber addDisposable:disposable];
}];
}
- (SSignal *)filter:(bool (^)(id))f
{
return [[SSignal alloc] initWithGenerator:^(SSubscriber *subscriber)
{
id<SDisposable> disposable = [self startWithNext:^(id next)
{
if (f(next))
SSubscriber_putNext(subscriber, next);
} error:^(id error)
{
SSubscriber_putError(subscriber, error);
} completed:^
{
SSubscriber_putCompletion(subscriber);
}];
[subscriber addDisposable:disposable];
}];
}
@end