From a90baa3446ca61e406957a6bbde40d438c462231 Mon Sep 17 00:00:00 2001 From: Bence Eros Date: Fri, 12 Jun 2015 22:36:12 +0200 Subject: [PATCH] streamjs nonterminal operation definitions --- streamjs/streamjs-tests.ts | 36 +++++++++++++++++++++++++++++++++++- streamjs/streamjs.d.ts | 30 +++++++++++++++++++++++++----- 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/streamjs/streamjs-tests.ts b/streamjs/streamjs-tests.ts index e5d933851..55bad2bd5 100644 --- a/streamjs/streamjs-tests.ts +++ b/streamjs/streamjs-tests.ts @@ -1,6 +1,7 @@ // -var numStream = Stream.make(10, 20); +var numStream: Stream; +// numStream = Stream.make(10, 20); numStream = Stream.make([10, 20]); numStream = Stream.range(1, 5); numStream = Stream.rangeClosed(1, 5); @@ -9,3 +10,36 @@ Stream.generate(function() { return 1; }); Stream.generate(() => 1); + +var comparator = (s1, s2) => 0; + +numStream = numStream.filter(n => n % 2 == 0); +var strStream = numStream + .dropWhile((n) => n % 2 == 0) + .map(n => "number " + n) + .dropWhile(/^$/) + .limit(100) + .sorted() + .sort() + .sorted(comparator) + .sort(comparator) + .shuffle() + .reverse() + .distinct() + .skip(5) + .peek(s => console.log(s)) + .takeWhile(s => s.length < 5) + .takeWhile(/^aa.*$/) + .slice(5, 2) + ; + +var strArray = strStream.toArray(); + +class MyList { + elems: any[]; +} + +var elems: any[]; +elems = Stream.make([new MyList, new MyList]) + .flatMap(list => list.elems) + .toArray(); diff --git a/streamjs/streamjs.d.ts b/streamjs/streamjs.d.ts index e1fe42536..1ac6c534c 100644 --- a/streamjs/streamjs.d.ts +++ b/streamjs/streamjs.d.ts @@ -4,9 +4,29 @@ // Definitions: https://github.com/borisyankov/DefinitelyTyped declare class Stream { - static make (...elems: T[]): Stream; - static make(elems: T[]): Stream; - static range(startInclusive: number, endExclusive: number): Stream; - static rangeClosed(startInclusive: number, endInclusive: number): Stream; - static generate(supplier: () => T): Stream; + // static make (...elems: T[]): Stream; + static make (elems: T[]): Stream; + static range (startInclusive: number, endExclusive: number): Stream; + static rangeClosed (startInclusive: number, endInclusive: number): Stream; + static generate (supplier: () => T): Stream; + + distinct(): Stream; + dropWhile(predicate: (elem: T) => boolean): Stream; + dropWhile(regexp: RegExp): Stream; + filter(predicate: (T) => boolean): Stream; + map (mapper: (T) => U): Stream; + flatMap (mapper: (T) => U[]): Stream; + limit(limit: number): Stream; + peek(consumer: (elem: T) => void ): Stream; + reverse(): Stream; + sorted(): Stream; + sorted(comparator: (e1: T, e2: T) => number): Stream; + sort(): Stream; + sort(comparator: (e1: T, e2: T) => number): Stream; + shuffle(): Stream; + skip(n: number): Stream; + slice(begin, end): Stream; + takeWhile(predicate: (elem: T) => boolean): Stream; + takeWhile(regexp: RegExp): Stream; + toArray(): T[]; }