...
1 package funk
2
3 import "reflect"
4
5 type lazyBuilder struct {
6 exec func() interface{}
7 }
8
9 func (b *lazyBuilder) Chunk(size int) Builder {
10 return &lazyBuilder{func() interface{} { return Chunk(b.exec(), size) }}
11 }
12 func (b *lazyBuilder) Compact() Builder {
13 return &lazyBuilder{func() interface{} { return Compact(b.exec()) }}
14 }
15 func (b *lazyBuilder) Drop(n int) Builder {
16 return &lazyBuilder{func() interface{} { return Drop(b.exec(), n) }}
17 }
18 func (b *lazyBuilder) Filter(predicate interface{}) Builder {
19 return &lazyBuilder{func() interface{} { return Filter(b.exec(), predicate) }}
20 }
21 func (b *lazyBuilder) Flatten() Builder {
22 return &lazyBuilder{func() interface{} { return Flatten(b.exec()) }}
23 }
24 func (b *lazyBuilder) FlattenDeep() Builder {
25 return &lazyBuilder{func() interface{} { return FlattenDeep(b.exec()) }}
26 }
27 func (b *lazyBuilder) Initial() Builder {
28 return &lazyBuilder{func() interface{} { return Initial(b.exec()) }}
29 }
30 func (b *lazyBuilder) Intersect(y interface{}) Builder {
31 return &lazyBuilder{func() interface{} { return Intersect(b.exec(), y) }}
32 }
33 func (b *lazyBuilder) Join(rarr interface{}, fnc JoinFnc) Builder {
34 return &lazyBuilder{func() interface{} { return Join(b.exec(), rarr, fnc) }}
35 }
36 func (b *lazyBuilder) Map(mapFunc interface{}) Builder {
37 return &lazyBuilder{func() interface{} { return Map(b.exec(), mapFunc) }}
38 }
39 func (b *lazyBuilder) FlatMap(mapFunc interface{}) Builder {
40 return &lazyBuilder{func() interface{} { return FlatMap(b.exec(), mapFunc) }}
41 }
42 func (b *lazyBuilder) Reverse() Builder {
43 return &lazyBuilder{func() interface{} { return Reverse(b.exec()) }}
44 }
45 func (b *lazyBuilder) Shuffle() Builder {
46 return &lazyBuilder{func() interface{} { return Shuffle(b.exec()) }}
47 }
48 func (b *lazyBuilder) Tail() Builder {
49 return &lazyBuilder{func() interface{} { return Tail(b.exec()) }}
50 }
51 func (b *lazyBuilder) Uniq() Builder {
52 return &lazyBuilder{func() interface{} { return Uniq(b.exec()) }}
53 }
54 func (b *lazyBuilder) Without(values ...interface{}) Builder {
55 return &lazyBuilder{func() interface{} { return Without(b.exec(), values...) }}
56 }
57
58 func (b *lazyBuilder) All() bool {
59 return (&chainBuilder{b.exec()}).All()
60 }
61 func (b *lazyBuilder) Any() bool {
62 return (&chainBuilder{b.exec()}).Any()
63 }
64 func (b *lazyBuilder) Contains(elem interface{}) bool {
65 return Contains(b.exec(), elem)
66 }
67 func (b *lazyBuilder) Every(elements ...interface{}) bool {
68 return Every(b.exec(), elements...)
69 }
70 func (b *lazyBuilder) Find(predicate interface{}) interface{} {
71 return Find(b.exec(), predicate)
72 }
73 func (b *lazyBuilder) ForEach(predicate interface{}) {
74 ForEach(b.exec(), predicate)
75 }
76 func (b *lazyBuilder) ForEachRight(predicate interface{}) {
77 ForEachRight(b.exec(), predicate)
78 }
79 func (b *lazyBuilder) Head() interface{} {
80 return Head(b.exec())
81 }
82 func (b *lazyBuilder) Keys() interface{} {
83 return Keys(b.exec())
84 }
85 func (b *lazyBuilder) IndexOf(elem interface{}) int {
86 return IndexOf(b.exec(), elem)
87 }
88 func (b *lazyBuilder) IsEmpty() bool {
89 return IsEmpty(b.exec())
90 }
91 func (b *lazyBuilder) Last() interface{} {
92 return Last(b.exec())
93 }
94 func (b *lazyBuilder) LastIndexOf(elem interface{}) int {
95 return LastIndexOf(b.exec(), elem)
96 }
97 func (b *lazyBuilder) NotEmpty() bool {
98 return NotEmpty(b.exec())
99 }
100 func (b *lazyBuilder) Product() float64 {
101 return Product(b.exec())
102 }
103 func (b *lazyBuilder) Reduce(reduceFunc, acc interface{}) interface{} {
104 return Reduce(b.exec(), reduceFunc, acc)
105 }
106 func (b *lazyBuilder) Sum() float64 {
107 return Sum(b.exec())
108 }
109 func (b *lazyBuilder) Type() reflect.Type {
110 return reflect.TypeOf(b.exec())
111 }
112 func (b *lazyBuilder) Value() interface{} {
113 return b.exec()
114 }
115 func (b *lazyBuilder) Values() interface{} {
116 return Values(b.exec())
117 }
118
View as plain text