Skip to content

Commit f9944ae

Browse files
committed
feat(inspect): added inspect operator
changed name of current `sample` operator to `inspect`. This is because it deviated from the behavior expected in other implementations of Rx sample. BREAKING CHANGE: RxJS 5 `sample` behavior is now `inspect`
1 parent ec69fe7 commit f9944ae

File tree

8 files changed

+35
-35
lines changed

8 files changed

+35
-35
lines changed

spec/operators/sample-spec.js renamed to spec/operators/inspect-spec.js

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,27 @@
22
var Rx = require('../../dist/cjs/Rx');
33
var Observable = Rx.Observable;
44

5-
describe('Observable.prototype.sample', function () {
6-
it('should get samples when the notifier emits', function () {
5+
describe('Observable.prototype.inspect', function () {
6+
it('should get inspections when the notifier emits', function () {
77
var e1 = hot('----a-^--b----c----d----e----f----| ');
88
var e1subs = '^ ! ';
99
var e2 = hot( '-----x----------x----------x----------|');
1010
var e2subs = '^ ! ';
1111
var expected = '-----b----------d----------f| ';
1212

13-
expectObservable(e1.sample(e2)).toBe(expected);
13+
expectObservable(e1.inspect(e2)).toBe(expected);
1414
expectSubscriptions(e1.subscriptions).toBe(e1subs);
1515
expectSubscriptions(e2.subscriptions).toBe(e2subs);
1616
});
1717

18-
it('should sample nothing if source has not nexted yet', function () {
18+
it('should inspect nothing if source has not nexted yet', function () {
1919
var e1 = hot('----a-^-------b----|');
2020
var e1subs = '^ !';
2121
var e2 = hot( '-----x-------|');
2222
var e2subs = '^ !';
2323
var expected = '-------------|';
2424

25-
expectObservable(e1.sample(e2)).toBe(expected);
25+
expectObservable(e1.inspect(e2)).toBe(expected);
2626
expectSubscriptions(e1.subscriptions).toBe(e1subs);
2727
expectSubscriptions(e2.subscriptions).toBe(e2subs);
2828
});
@@ -34,7 +34,7 @@ describe('Observable.prototype.sample', function () {
3434
var e2subs = '^ ! ';
3535
var expected = '------a---------------------------';
3636

37-
expectObservable(e1.sample(e2)).toBe(expected);
37+
expectObservable(e1.inspect(e2)).toBe(expected);
3838
expectSubscriptions(e1.subscriptions).toBe(e1subs);
3939
expectSubscriptions(e2.subscriptions).toBe(e2subs);
4040
});
@@ -46,7 +46,7 @@ describe('Observable.prototype.sample', function () {
4646
var e2subs = '^ ! ';
4747
var expected = '------a--------------------------|';
4848

49-
expectObservable(e1.sample(e2)).toBe(expected);
49+
expectObservable(e1.inspect(e2)).toBe(expected);
5050
expectSubscriptions(e1.subscriptions).toBe(e1subs);
5151
expectSubscriptions(e2.subscriptions).toBe(e2subs);
5252
});
@@ -59,7 +59,7 @@ describe('Observable.prototype.sample', function () {
5959
var e2subs = '^ ! ';
6060
var expected = '-----b--------- ';
6161

62-
expectObservable(e1.sample(e2), unsub).toBe(expected);
62+
expectObservable(e1.inspect(e2), unsub).toBe(expected);
6363
expectSubscriptions(e1.subscriptions).toBe(e1subs);
6464
expectSubscriptions(e2.subscriptions).toBe(e2subs);
6565
});
@@ -74,22 +74,22 @@ describe('Observable.prototype.sample', function () {
7474

7575
var result = e1
7676
.mergeMap(function (x) { return Observable.of(x); })
77-
.sample(e2)
77+
.inspect(e2)
7878
.mergeMap(function (x) { return Observable.of(x); });
7979

8080
expectObservable(result, unsub).toBe(expected);
8181
expectSubscriptions(e1.subscriptions).toBe(e1subs);
8282
expectSubscriptions(e2.subscriptions).toBe(e2subs);
8383
});
8484

85-
it('should sample multiple times according to the notifier', function () {
85+
it('should inspect multiple times according to the notifier', function () {
8686
var e1 = hot('----a----b----c----d----e----f----| ');
8787
var e1subs = '^ ! ';
8888
var e2 = hot('------x-x------xx-x---x-------------|');
8989
var e2subs = '^ ! ';
9090
var expected = '------a-a------cc-c---d-----------| ';
9191

92-
expectObservable(e1.sample(e2)).toBe(expected);
92+
expectObservable(e1.inspect(e2)).toBe(expected);
9393
expectSubscriptions(e1.subscriptions).toBe(e1subs);
9494
expectSubscriptions(e2.subscriptions).toBe(e2subs);
9595
});
@@ -101,7 +101,7 @@ describe('Observable.prototype.sample', function () {
101101
var e2subs = '^ ! ';
102102
var expected = '-----b----------d-# ';
103103

104-
expectObservable(e1.sample(e2)).toBe(expected);
104+
expectObservable(e1.inspect(e2)).toBe(expected);
105105
expectSubscriptions(e1.subscriptions).toBe(e1subs);
106106
expectSubscriptions(e2.subscriptions).toBe(e2subs);
107107
});
@@ -113,7 +113,7 @@ describe('Observable.prototype.sample', function () {
113113
var e1subs = '(^!)';
114114
var e2subs = '(^!)';
115115

116-
expectObservable(e1.sample(e2)).toBe(expected);
116+
expectObservable(e1.inspect(e2)).toBe(expected);
117117
expectSubscriptions(e1.subscriptions).toBe(e1subs);
118118
expectSubscriptions(e2.subscriptions).toBe(e2subs);
119119
});
@@ -125,7 +125,7 @@ describe('Observable.prototype.sample', function () {
125125
var e1subs = '(^!)';
126126
var e2subs = '(^!)';
127127

128-
expectObservable(e1.sample(e2)).toBe(expected);
128+
expectObservable(e1.inspect(e2)).toBe(expected);
129129
expectSubscriptions(e1.subscriptions).toBe(e1subs);
130130
expectSubscriptions(e2.subscriptions).toBe(e2subs);
131131
});
@@ -137,7 +137,7 @@ describe('Observable.prototype.sample', function () {
137137
var e1subs = '^ !';
138138
var e2subs = '^ !';
139139

140-
expectObservable(e1.sample(e2)).toBe(expected);
140+
expectObservable(e1.inspect(e2)).toBe(expected);
141141
expectSubscriptions(e1.subscriptions).toBe(e1subs);
142142
expectSubscriptions(e2.subscriptions).toBe(e2subs);
143143
});
@@ -149,31 +149,31 @@ describe('Observable.prototype.sample', function () {
149149
var e2subs = '^ !';
150150
var expected = '-';
151151

152-
expectObservable(e1.sample(e2)).toBe(expected);
152+
expectObservable(e1.inspect(e2)).toBe(expected);
153153
expectSubscriptions(e1.subscriptions).toBe(e1subs);
154154
expectSubscriptions(e2.subscriptions).toBe(e2subs);
155155
});
156156

157-
it('should sample only until source completes', function () {
157+
it('should inspect only until source completes', function () {
158158
var e1 = hot('----a----b----c----d-|');
159159
var e1subs = '^ !';
160160
var e2 = hot('-----------x----------x------------|');
161161
var e2subs = '^ !';
162162
var expected = '-----------b---------|';
163163

164-
expectObservable(e1.sample(e2)).toBe(expected);
164+
expectObservable(e1.inspect(e2)).toBe(expected);
165165
expectSubscriptions(e1.subscriptions).toBe(e1subs);
166166
expectSubscriptions(e2.subscriptions).toBe(e2subs);
167167
});
168168

169-
it('should complete sampling if sample observable completes', function () {
169+
it('should complete sampling if inspect observable completes', function () {
170170
var e1 = hot('----a----b----c----d-|');
171171
var e1subs = '^ !';
172172
var e2 = hot('|');
173173
var e2subs = '(^!)';
174174
var expected = '---------------------|';
175175

176-
expectObservable(e1.sample(e2)).toBe(expected);
176+
expectObservable(e1.inspect(e2)).toBe(expected);
177177
expectSubscriptions(e1.subscriptions).toBe(e1subs);
178178
expectSubscriptions(e2.subscriptions).toBe(e2subs);
179179
});

src/CoreOperators.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export interface CoreOperators<T> {
3939
elementSelector?: (value: T) => R,
4040
durationSelector?: (group: GroupedObservable<R>) => Observable<any>) => Observable<GroupedObservable<R>>;
4141
ignoreElements?: () => Observable<T>;
42+
inspect?: (notifier: Observable<any>) => Observable<T>;
4243
last?: <R>(predicate?: (value: T, index: number) => boolean,
4344
resultSelector?: (value: T, index: number) => R,
4445
defaultValue?: any) => Observable<T> | Observable<R>;
@@ -62,7 +63,6 @@ export interface CoreOperators<T> {
6263
repeat?: (count?: number) => Observable<T>;
6364
retry?: (count?: number) => Observable<T>;
6465
retryWhen?: (notifier: (errors: Observable<any>) => Observable<any>) => Observable<T>;
65-
sample?: (notifier: Observable<any>) => Observable<T>;
6666
sampleTime?: (delay: number, scheduler?: Scheduler) => Observable<T>;
6767
scan?: <R>(project: (acc: R, x: T) => R, acc?: R) => Observable<R>;
6868
share?: () => Observable<T>;

src/Observable.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ export class Observable<T> implements CoreOperators<T> {
220220
elementSelector?: (value: T) => R,
221221
durationSelector?: (group: GroupedObservable<R>) => Observable<any>) => Observable<GroupedObservable<R>>;
222222
ignoreElements: () => Observable<T>;
223+
inspect: (notifier: Observable<any>) => Observable<T>;
223224
last: <R>(predicate?: (value: T, index: number) => boolean,
224225
resultSelector?: (value: T, index: number) => R,
225226
thisArg?: any, defaultValue?: any) => Observable<T> | Observable<R>;
@@ -244,7 +245,6 @@ export class Observable<T> implements CoreOperators<T> {
244245
repeat: (count?: number) => Observable<T>;
245246
retry: (count?: number) => Observable<T>;
246247
retryWhen: (notifier: (errors: Observable<any>) => Observable<any>) => Observable<T>;
247-
sample: (notifier: Observable<any>) => Observable<T>;
248248
sampleTime: (delay: number, scheduler?: Scheduler) => Observable<T>;
249249
scan: <R>(accumulator: (acc: R, x: T) => R, seed?: T | R) => Observable<R>;
250250
share: () => Observable<T>;

src/Rx.KitchenSink.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ import './add/operator/finally';
7474
import './add/operator/first';
7575
import './add/operator/groupBy';
7676
import './add/operator/ignoreElements';
77+
import './add/operator/inspect';
7778
import './add/operator/extended/isEmpty';
7879
import './add/operator/every';
7980
import './add/operator/last';
@@ -98,7 +99,6 @@ import './add/operator/reduce';
9899
import './add/operator/repeat';
99100
import './add/operator/retry';
100101
import './add/operator/retryWhen';
101-
import './add/operator/sample';
102102
import './add/operator/sampleTime';
103103
import './add/operator/scan';
104104
import './add/operator/share';

src/Rx.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ import './add/operator/finally';
5454
import './add/operator/first';
5555
import './add/operator/groupBy';
5656
import './add/operator/ignoreElements';
57+
import './add/operator/inspect';
5758
import './add/operator/every';
5859
import './add/operator/last';
5960
import './add/operator/map';
@@ -74,7 +75,6 @@ import './add/operator/reduce';
7475
import './add/operator/repeat';
7576
import './add/operator/retry';
7677
import './add/operator/retryWhen';
77-
import './add/operator/sample';
7878
import './add/operator/sampleTime';
7979
import './add/operator/scan';
8080
import './add/operator/share';

src/add/operator/inspect.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import {Observable} from '../../Observable';
2+
import {inspect} from '../../operator/inspect';
3+
Observable.prototype.inspect = inspect;
4+
5+
export var _void: void;

src/add/operator/sample.ts

Lines changed: 0 additions & 5 deletions
This file was deleted.

src/operator/sample.ts renamed to src/operator/inspect.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@ import {Observable} from '../Observable';
22
import {Operator} from '../Operator';
33
import {Subscriber} from '../Subscriber';
44

5-
export function sample<T>(notifier: Observable<any>): Observable<T> {
6-
return this.lift(new SampleOperator(notifier));
5+
export function inspect<T>(notifier: Observable<any>): Observable<T> {
6+
return this.lift(new InspectOperator(notifier));
77
}
88

9-
class SampleOperator<T, R> implements Operator<T, R> {
9+
class InspectOperator<T, R> implements Operator<T, R> {
1010
constructor(private notifier: Observable<any>) {
1111
}
1212

1313
call(subscriber: Subscriber<R>) {
14-
return new SampleSubscriber(subscriber, this.notifier);
14+
return new InspectSubscriber(subscriber, this.notifier);
1515
}
1616
}
1717

18-
class SampleSubscriber<T> extends Subscriber<T> {
18+
class InspectSubscriber<T> extends Subscriber<T> {
1919
private lastValue: T;
2020
private hasValue: boolean = false;
2121

@@ -37,7 +37,7 @@ class SampleSubscriber<T> extends Subscriber<T> {
3737
}
3838

3939
class SampleNotificationSubscriber<T> extends Subscriber<T> {
40-
constructor(private parent: SampleSubscriber<T>) {
40+
constructor(private parent: InspectSubscriber<T>) {
4141
super(null);
4242
}
4343

0 commit comments

Comments
 (0)