Skip to content

Commit 9dcaaa8

Browse files
committed
Work in progress: an HTML definition-list version of Paul Taylor's RxJS decision trees, for RxJava.
1 parent 5fb782f commit 9dcaaa8

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed

operators.html

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
<html lang="en-US">
2+
<head>
3+
<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
4+
<meta name="author" content="PLP Consulting" />
5+
<title>A tree of RxJava Observable operators</title>
6+
<style>
7+
dl { margin-top: 0;
8+
margin-bottom: 0;
9+
margin-left: 1.5em; }
10+
dl#outer>dt { font-weight: bold; }
11+
dt { font-weight: normal; }
12+
dt dt::before { content: "…"; }
13+
dd::before { content: ": "; }
14+
15+
dt { float: left; clear: left; }
16+
dd { float: left; margin-start: 0; -webkit-margin-start: 0; }
17+
dd.s::after { content: " Ⓢ"; }
18+
hr { clear: both; }
19+
</style>
20+
</head>
21+
<body>
22+
<p>
23+
This tree can help you find the Observable operator you&#8217;re looking for. It is based on the RxJS tables (<a href="https://github.com/trxcllnt/RxJS/blob/master/doc/static-operators.md">static</a> and <a href="https://github.com/trxcllnt/RxJS/blob/master/doc/instance-operators.md">instance</a>) created by Paul Taylor.
24+
</p>
25+
<div>
26+
<dl id="outer">
27+
<dt>I want to create a new Observable
28+
<dl>
29+
<dt>that emits a particular item</dt>
30+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#just"><tt>just(&#8239;)</tt></a></dd>
31+
<dl>
32+
<dt>after a specified delay</dt>
33+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#timer"><tt>timer(&#8239;)</tt></a></dd>
34+
</dl>
35+
<dt>that emits a particular set of 1&ndash;10 items</dt>
36+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#from"><tt>from(&#8239;)</tt></a></dd>
37+
<dt>from an Array</dt>
38+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#from"><tt>from(&#8239;)</tt></a></dd>
39+
<dt>from a Future </dt>
40+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#from"><tt>from(&#8239;)</tt></a></dd>
41+
<dl>
42+
<dt>with a timeout</dt>
43+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#from"><tt>from(&#8239;)</tt></a></dd>
44+
</dl>
45+
<dt>from an Iterable</dt>
46+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#from"><tt>from(&#8239;)</tt></a></dd>
47+
<dt>that emits a sequence of items repeatedly</dt>
48+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#repeat"><tt>repeat(&#8239;)</tt></a></dd>
49+
<dt>from scratch, with custom logic</dt>
50+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#create"><tt>create(&#8239;)</tt></a></dd>
51+
<dt>for each observer that subscribes</dt>
52+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#defer"><tt>defer(&#8239;)</tt></a></dd>
53+
<dt>that emits a sequence of integers</dt>
54+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#range"><tt>range(&#8239;)</tt></a></dd>
55+
<dl>
56+
<dt>at particular intervals of time</dt>
57+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#interval"><tt>interval(&#8239;)</tt></a></dd>
58+
<dl>
59+
<dt>after a specified delay</dt>
60+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#timer"><tt>timer(&#8239;)</tt></a></dd>
61+
</dl>
62+
</dl>
63+
<dt>that completes without emitting items</dt>
64+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#empty"><tt>empty(&#8239;)</tt></a></dd>
65+
<dt>that only sends an error notification</dt>
66+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#error"><tt>error(&#8239;)</tt></a></dd>
67+
<dt>that does nothing at all</dt>
68+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#never"><tt>never(&#8239;)</tt></a></dd>
69+
</dl>
70+
</dt>
71+
<dt>I want to transform and then reemit the items emitted by an Observable
72+
<dl>
73+
<dt>one at a time with a function</dt>
74+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#map"><tt>map(&#8239;)</tt></a></dd>
75+
<dt>by casting them to a particular type</dt>
76+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#cast"><tt>cast(&#8239;)</tt></a></dd>
77+
<dt>by emitting all of the items emitted by corresponding Observables</dt>
78+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#flatMap"><tt>flatMap(&#8239;)</tt></a></dd>
79+
<dl>
80+
<dt>combined with the original items by means of a function</dt>
81+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#mergemap-and-mergemapiterable"><tt>mergeMap(collectionSelector,resultSelector)</tt></a></dd>
82+
</dl>
83+
<dt>by emitting all of the items in corresponding Iterables</dt>
84+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#mergemap-and-mergemapiterable"><tt>mergeMapIterable(collectionSelector)</tt></a></dd>
85+
<dl>
86+
<dt>combined with the original items by means of a function</dt>
87+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#mergemap-and-mergemapiterable"><tt>mergeMapIterable(collectionSelector,resultSelector)</tt></a></dd>
88+
</dl>
89+
</dl>
90+
</dt>
91+
<dt>I want to collect items from an Observable and reemit them as buffers of items
92+
<dl>
93+
<dt>with a maximum number of items per buffer</dt>
94+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#buffer"><tt>buffer(count)</tt></a></dd>
95+
<dl>
96+
<dt>and starting every <i>n</i> items</dt>
97+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#buffer"><tt>buffer(count,skip)</tt></a></dd>
98+
</dl>
99+
<dt>each time a second Observable emits an item</dt>
100+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#buffer"><tt>buffer(boundary)</tt></a></dd>
101+
<dl>
102+
<dt>with buffers given an initial capacity for efficiency reasons</dt>
103+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#buffer"><tt>buffer(boundary,initialCapacity)</tt></a></dd>
104+
<dt>where that second Observable is returned from a function I supply</dt>
105+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#buffer"><tt>buffer(bufferClosingSelector)</tt></a></dd>
106+
<dl>
107+
<dt>and operates on the emission of a third Observable that opens the buffer</dt>
108+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#buffer"><tt>buffer(bufferOpenings,bufferClosingSelector)</tt></a></dd>
109+
</dl>
110+
</dl>
111+
<dt>at periodic intervals</dt>
112+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#buffer"><tt>buffer(timespan,unit)</tt></a></dd>
113+
<dl>
114+
<dt>or when a certain maximum number of items fill the buffer</dt>
115+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#buffer"><tt>buffer(timespan,unit,count)</tt></a></dd>
116+
<dt>for a certain period of time after the interval begins</dt>
117+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#buffer"><tt>buffer(timespan,timeshift,unit)</tt></a></dd>
118+
</dl>
119+
</dl>
120+
</dt>
121+
<dt>I want to transform items <em>and</em> notifications from an Observable into items and reemit them
122+
<dl>
123+
<dt>by emitting all of the items emitted by corresponding Observables</dt>
124+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#mergemap-and-mergemapiterable"><tt>mergeMap(&#8239;)</tt></a></dd>
125+
</dl>
126+
</dt>
127+
</dl>
128+
</div>
129+
<hr />
130+
<p>
131+
Ⓢ: a variant of this operator allows you to choose a particular Scheduler
132+
</p>
133+
</body>
134+
</html>

0 commit comments

Comments
 (0)