@@ -11,108 +11,107 @@ import selectMany from './transforms/selectMany';
11
11
import skip from './filters/skip' ;
12
12
import take from './filters/take' ;
13
13
14
- export default abstract class LinqBase < T , TLinq extends LinqBase < T , TLinq > >
15
- implements Iterable < T > {
14
+ export default abstract class LinqBase < T , TLinq extends LinqBase < T , TLinq > > implements Iterable < T > {
16
15
17
- constructor (
18
- protected readonly source : Iterable < T > ,
19
- protected readonly create : ( source : Iterable < T > ) => TLinq
20
- ) { }
16
+ constructor (
17
+ protected readonly source : Iterable < T > ,
18
+ protected readonly create : ( source : Iterable < T > ) => TLinq
19
+ ) { }
21
20
22
- [ Symbol . iterator ] ( ) : Iterator < T > {
23
- return this . source [ Symbol . iterator ] ( ) ;
24
- }
21
+ [ Symbol . iterator ] ( ) : Iterator < T > {
22
+ return this . source [ Symbol . iterator ] ( ) ;
23
+ }
25
24
26
- /**
27
- * Returns a filtered sequence.
28
- * @param {IterableFilter<T> } filters The filters to use.
29
- * @return {TLinq<T> }
30
- */
31
- filter ( filter : IterableFilter < T > ) : TLinq {
32
- return this . create ( filter ( this . source ) ) ;
33
- }
25
+ /**
26
+ * Returns a filtered sequence.
27
+ * @param {IterableFilter<T> } filters The filters to use.
28
+ * @return {TLinq<T> }
29
+ */
30
+ filter ( filter : IterableFilter < T > ) : TLinq {
31
+ return this . create ( filter ( this . source ) ) ;
32
+ }
34
33
35
- /**
36
- * Returns a filtered sequence.
37
- * @param {IterableFilter<T> } filters The filters to use.
38
- * @return {TLinq<T> }
39
- */
40
- filterWith ( ...filters : IterableFilter < T > [ ] ) : TLinq {
41
- return filters . length === 0 ? < TLinq > < unknown > this : this . applyFilters ( filters ) ;
42
- }
34
+ /**
35
+ * Returns a filtered sequence.
36
+ * @param {IterableFilter<T> } filters The filters to use.
37
+ * @return {TLinq<T> }
38
+ */
39
+ filterWith ( ...filters : IterableFilter < T > [ ] ) : TLinq {
40
+ return filters . length === 0 ? < TLinq > < unknown > this : this . applyFilters ( filters ) ;
41
+ }
43
42
44
- /**
45
- * Returns a filtered sequence.
46
- * @param {IterableFilter<T> } filters The filters to use.
47
- * @return {TLinq<T> }
48
- */
49
- applyFilters ( filters : Iterable < IterableFilter < T > > ) : TLinq {
50
- const source = this . source ;
51
- const s = applyFilters ( source , filters ) ;
52
- return s == source ? < TLinq > < unknown > this : this . create ( s ) ;
53
- }
43
+ /**
44
+ * Returns a filtered sequence.
45
+ * @param {IterableFilter<T> } filters The filters to use.
46
+ * @return {TLinq<T> }
47
+ */
48
+ applyFilters ( filters : Iterable < IterableFilter < T > > ) : TLinq {
49
+ const source = this . source ;
50
+ const s = applyFilters ( source , filters ) ;
51
+ return s == source ? < TLinq > < unknown > this : this . create ( s ) ;
52
+ }
54
53
55
- /**
56
- * Filters a sequence of values based on a predicate.
57
- * @param {PredicateWithIndex<T> } predicate
58
- * @return {TLinq<T> }
59
- */
60
- where ( predicate : PredicateWithIndex < T > ) : TLinq {
61
- return this . filter ( where ( predicate ) ) ;
62
- }
54
+ /**
55
+ * Filters a sequence of values based on a predicate.
56
+ * @param {PredicateWithIndex<T> } predicate
57
+ * @return {TLinq<T> }
58
+ */
59
+ where ( predicate : PredicateWithIndex < T > ) : TLinq {
60
+ return this . filter ( where ( predicate ) ) ;
61
+ }
63
62
64
- /**
65
- * Applies a resolver to this sequence.
66
- * @param {IterableTransform<T, TResolution> } resolver
67
- * @return {TResolution }
68
- */
69
- resolve < TResolution > ( resolver : IterableTransform < T , TResolution > ) : TResolution {
70
- return resolver ( this . source ) ;
71
- }
63
+ /**
64
+ * Applies a resolver to this sequence.
65
+ * @param {IterableTransform<T, TResolution> } resolver
66
+ * @return {TResolution }
67
+ */
68
+ resolve < TResolution > ( resolver : IterableTransform < T , TResolution > ) : TResolution {
69
+ return resolver ( this . source ) ;
70
+ }
72
71
73
72
74
- /**
75
- * Returns a transformed sequence.
76
- * @param {IterableValueTransform<T, TResult> } transform The transform to use.
77
- * @return {Iterable<TResult> }
78
- */
79
- transform < TResult > ( transform : IterableValueTransform < T , TResult > ) : Iterable < TResult > {
80
- return transform ( this . source ) ;
81
- }
73
+ /**
74
+ * Returns a transformed sequence.
75
+ * @param {IterableValueTransform<T, TResult> } transform The transform to use.
76
+ * @return {Iterable<TResult> }
77
+ */
78
+ transform < TResult > ( transform : IterableValueTransform < T , TResult > ) : Iterable < TResult > {
79
+ return transform ( this . source ) ;
80
+ }
82
81
83
- /**
84
- * Projects each element of a sequence into a new form.
85
- * @param {SelectorWithIndex<T, TResult> } selector
86
- * @return {Iterable<TResult> }
87
- */
88
- select < TResult > ( selector : SelectorWithIndex < T , TResult > ) : Iterable < TResult > {
89
- return select ( selector ) ( this . source ) ;
90
- }
82
+ /**
83
+ * Projects each element of a sequence into a new form.
84
+ * @param {SelectorWithIndex<T, TResult> } selector
85
+ * @return {Iterable<TResult> }
86
+ */
87
+ select < TResult > ( selector : SelectorWithIndex < T , TResult > ) : Iterable < TResult > {
88
+ return select ( selector ) ( this . source ) ;
89
+ }
91
90
92
- /**
93
- * Projects each element of iterables as a flattened sequence of the selected.
94
- * @param {SelectorWithIndex<T, Iterable<TResult>> } selector
95
- * @return {Iterable<TResult> }
96
- */
97
- selectMany < TResult > ( selector : SelectorWithIndex < T , Iterable < TResult > > ) : Iterable < TResult > {
98
- return selectMany ( selector ) ( this . source ) ;
99
- }
91
+ /**
92
+ * Projects each element of iterables as a flattened sequence of the selected.
93
+ * @param {SelectorWithIndex<T, Iterable<TResult>> } selector
94
+ * @return {Iterable<TResult> }
95
+ */
96
+ selectMany < TResult > ( selector : SelectorWithIndex < T , Iterable < TResult > > ) : Iterable < TResult > {
97
+ return selectMany ( selector ) ( this . source ) ;
98
+ }
100
99
101
- /**
102
- * When resolving, skips the number of elements by the count.
103
- * @param {number } count The number elements to skip.
104
- * @return {LinqExtended<T> }
105
- */
106
- skip ( count : number ) : TLinq {
107
- return this . filter ( skip < T > ( count ) ) ;
108
- }
100
+ /**
101
+ * When resolving, skips the number of elements by the count.
102
+ * @param {number } count The number elements to skip.
103
+ * @return {LinqExtended<T> }
104
+ */
105
+ skip ( count : number ) : TLinq {
106
+ return this . filter ( skip < T > ( count ) ) ;
107
+ }
109
108
110
- /**
111
- * When resolving, takes no more than the number of elements by the provided count.
112
- * @param {number } count The number elements to skip.
113
- * @return {LinqExtended<T> }
114
- */
115
- take ( count : number ) : TLinq {
116
- return this . filter ( take ( count ) ) ;
117
- }
109
+ /**
110
+ * When resolving, takes no more than the number of elements by the provided count.
111
+ * @param {number } count The number elements to skip.
112
+ * @return {LinqExtended<T> }
113
+ */
114
+ take ( count : number ) : TLinq {
115
+ return this . filter ( take ( count ) ) ;
116
+ }
118
117
}
0 commit comments