Skip to content

Commit 8d6a0c6

Browse files
finish base documentation
1 parent 2ad30c9 commit 8d6a0c6

File tree

15 files changed

+141
-5
lines changed

15 files changed

+141
-5
lines changed

src/base/StopIteration.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1+
/**
2+
* Error thrown by {@link next} when the input iterator is exhausted.
3+
* @class
4+
*/
15
export function StopIteration ( ) { }

src/base/drop.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ import { tail } from './tail' ;
44

55
/**
66
* Drops the first <code>n</code> elements of the input iterable.
7+
* If <code>n</code> is negative, behaves like <code>{@link tail}( iterable,
8+
* -n)</code>.
9+
*
10+
* @example
11+
* // returns [ 3 , 4 ]
12+
* list( drop( range( 5 ) , 3 ) ) ;
713
*
814
* @param {Iterable} iterable - The input iterable.
915
* @param {Number} n - The number of elements to drop.

src/base/exhaust.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
/**
2+
* Exhausts the input iterator.
3+
*
4+
* @example
5+
* let it = range( 1000 ) ;
6+
* exhaust( it ) ;
7+
* list( it ) ; // returns []
8+
*
9+
* @param {Iterator} iterator - The input iterator.
10+
*
11+
*/
112
export function exhaust ( iterator ) {
213

314
for ( let item of iterator ) ;

src/base/frame.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
11
import { iter } from './iter' ;
22
import { range } from './range' ;
33

4+
/**
5+
* Yields tuples that contain the current element of the input iterable and the
6+
* next <code>n-1</code> elements of the input iterable.
7+
*
8+
* @example
9+
* frame( range( 100 ) , 2 ) ;
10+
* // is equivalent to
11+
* zip( range( 100 ) , range( 1 , 100 ) ) ;
12+
*
13+
* @param {Iterable} iterable - The input iterable.
14+
* @param {Number} n - The frame size.
15+
* @returns {Iterator}
16+
*
17+
*/
418
export function* frame ( iterable , n ) {
519

620
// Could have an implementation using a deque

src/base/head.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
import { take } from './take' ;
22

3+
/**
4+
* @function head
5+
* Same as {@link take}.
6+
*/
37
export const head = take ;

src/base/iter.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
/**
2+
* Returns the iterator for the input iterable.
3+
*
4+
* @param {Iterable} iterable - The input iterable.
5+
* @returns {Iterator}
6+
*
7+
*/
18
export function iter ( iterable ) {
29

310
return iterable[Symbol.iterator]( ) ;

src/base/len.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
1-
export function len ( list ) {
1+
/**
2+
* Returns the length of the input array.
3+
*
4+
* @example
5+
* // returns 7
6+
* len( list( range( 7 ) ) ) ;
7+
*
8+
* @param {Array} array - The input array.
9+
* @returns {Number}
10+
*
11+
*/
12+
export function len ( array ) {
213

3-
return list.length ;
14+
return array.length ;
415

516
}

src/base/list.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
/**
2+
* Returns an array containing all elements of the input iterable.
3+
*
4+
* @example
5+
* // return [0,1,2]
6+
* list( range( 3 ) ) ;
7+
*
8+
* @param {Iterable} iterable - The input iterable.
9+
* @returns {Array}
10+
*
11+
*/
112
export function list ( iterable ) {
213

314
return Array.from( iterable ) ;

src/base/ncycle.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
/**
2+
* Same as {@link cycle} but only cycles a limited number of times.
3+
*
4+
* @example
5+
* // returns [0,1,0,1,0,1,0,1]
6+
* list(ncycle(range(2),4)) ;
7+
*
8+
* @param {Iterable} iterable - The input iterable.
9+
* @param {Number} n - The number of times to cycle through the input iterable.
10+
* @returns {Iterator}
11+
*
12+
*/
113
export function* ncycle ( iterable , n ) {
214

315
let buffer = [ ] ;

src/base/pick.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
/**
2+
* Yields some of the properties of the input object. The properties to yield
3+
* are designated by the input iterable.
4+
*
5+
* @example
6+
* // returns [ 'a' , 'e' , 'c' ]
7+
* list( pick( 'abcde' , [ 0 , 4 , 2 ] ) ) ;
8+
*
9+
* @param {Object} object - The input object.
10+
* @param {Iterable} iterable - The input iterable.
11+
* @returns {Iterator}
12+
*/
113
export function* pick ( object , iterable ) {
214

315
for ( let key of iterable ) yield object[key] ;

src/base/tail.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
import { iter } from './iter' ;
22
import { drop } from './drop' ;
33

4+
/**
5+
* Returns the last <code>n</code> elements of the input iterable in an array.
6+
* If <code>n</code> is negative, behaves like <code>{@link drop}( iterable,
7+
* -n)</code>.
8+
*
9+
* @example
10+
* // returns [ 3 , 4 ]
11+
* list( tail( range( 5 ) , 2 ) ) ;
12+
*
13+
* @param {Iterable} iterable - The input iterable.
14+
* @param {Number} n - The number of elements to include in the output.
15+
* @returns {Array} - The last <code>n</code> elements of the input iterable.
16+
*/
417
export function tail ( iterable , n ) {
518

619
if ( n < 0 ) return drop( iterable , -n ) ;

src/base/take.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
import { iter } from './iter' ;
22
import { trunc } from './trunc' ;
33

4+
/**
5+
* Yields the first <code>n</code> elements of the input iterable. If
6+
* <code>n</code> is negative, behaves like <code>{@link trunc}( iterable,
7+
* -n)</code>.
8+
*
9+
* @example
10+
* // returns [ 0 , 1 , 2 ]
11+
* list( take( range( 5 ) , 3 ) ) ;
12+
*
13+
* @param {Iterable} iterable - The input iterable.
14+
* @param {Number} n - The number of elements to include in the output.
15+
* @returns {Iterator} - The first <code>n</code> elements of the input iterable.
16+
*/
417
export function* take ( iterable , n ) {
518

619
if ( n < 0 ) {

src/base/tee.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@ import { iter } from './iter' ;
22
import { list } from './list' ;
33
import { map } from '../map/map' ;
44

5+
/**
6+
* Returns <code>n</code> copies of the input iterable.
7+
*
8+
* @param {Iterable} iterable - The input iterable.
9+
* @param {Number} n - The number of copies to make.
10+
* @returns {Iterator[]}
11+
*/
512
export function tee ( iterable , n ) {
613

714
let iterator = iter( iterable ) ;

src/base/trunc.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
import { iter } from './iter' ;
22
import { take } from './take' ;
33

4+
/**
5+
* Yields all elements of the iterable except the last <code>n</code> ones. If
6+
* <code>n</code> is negative, behaves like <code>{@link take}( iterable, -n
7+
* )</code>.
8+
*
9+
* @example
10+
* // returns [ 0 , 1 , 2 ]
11+
* list( trunc( range( 5 ) , 2 ) ) ;
12+
*
13+
* @param {Iterable} iterable - The input iterable.
14+
* @param {Number} n - The number of elements to exclude from the output.
15+
* @returns {Iterator}
16+
*/
417
export function* trunc ( iterable , n ) {
518

619
if ( n < 0 ) {

src/map/filter.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@ export function* filter ( predicate , iterable ) {
2323
}
2424

2525
/**
26+
* @function filtertrue
2627
* Same as {@link filter}.
27-
*
28-
* @function
29-
*
3028
*/
3129
export const filtertrue = filter ;

0 commit comments

Comments
 (0)