...

Source file src/github.com/thoas/go-funk/chain_builder.go

Documentation: github.com/thoas/go-funk

     1  package funk
     2  
     3  import (
     4  	"fmt"
     5  	"reflect"
     6  )
     7  
     8  type chainBuilder struct {
     9  	collection interface{}
    10  }
    11  
    12  func (b *chainBuilder) Chunk(size int) Builder {
    13  	return &chainBuilder{Chunk(b.collection, size)}
    14  }
    15  func (b *chainBuilder) Compact() Builder {
    16  	return &chainBuilder{Compact(b.collection)}
    17  }
    18  func (b *chainBuilder) Drop(n int) Builder {
    19  	return &chainBuilder{Drop(b.collection, n)}
    20  }
    21  func (b *chainBuilder) Filter(predicate interface{}) Builder {
    22  	return &chainBuilder{Filter(b.collection, predicate)}
    23  }
    24  func (b *chainBuilder) Flatten() Builder {
    25  	return &chainBuilder{Flatten(b.collection)}
    26  }
    27  func (b *chainBuilder) FlattenDeep() Builder {
    28  	return &chainBuilder{FlattenDeep(b.collection)}
    29  }
    30  func (b *chainBuilder) Initial() Builder {
    31  	return &chainBuilder{Initial(b.collection)}
    32  }
    33  func (b *chainBuilder) Intersect(y interface{}) Builder {
    34  	return &chainBuilder{Intersect(b.collection, y)}
    35  }
    36  func (b *chainBuilder) Join(rarr interface{}, fnc JoinFnc) Builder {
    37  	return &chainBuilder{Join(b.collection, rarr, fnc)}
    38  }
    39  func (b *chainBuilder) Map(mapFunc interface{}) Builder {
    40  	return &chainBuilder{Map(b.collection, mapFunc)}
    41  }
    42  func (b *chainBuilder) FlatMap(mapFunc interface{}) Builder {
    43  	return &chainBuilder{FlatMap(b.collection, mapFunc)}
    44  }
    45  func (b *chainBuilder) Reverse() Builder {
    46  	return &chainBuilder{Reverse(b.collection)}
    47  }
    48  func (b *chainBuilder) Shuffle() Builder {
    49  	return &chainBuilder{Shuffle(b.collection)}
    50  }
    51  func (b *chainBuilder) Tail() Builder {
    52  	return &chainBuilder{Tail(b.collection)}
    53  }
    54  func (b *chainBuilder) Uniq() Builder {
    55  	return &chainBuilder{Uniq(b.collection)}
    56  }
    57  func (b *chainBuilder) Without(values ...interface{}) Builder {
    58  	return &chainBuilder{Without(b.collection, values...)}
    59  }
    60  
    61  func (b *chainBuilder) All() bool {
    62  	v := reflect.ValueOf(b.collection)
    63  	t := v.Type()
    64  
    65  	if t.Kind() != reflect.Array && t.Kind() != reflect.Slice {
    66  		panic(fmt.Sprintf("Type %s is not supported by Chain.All", t.String()))
    67  	}
    68  
    69  	c := make([]interface{}, v.Len())
    70  	for i := 0; i < v.Len(); i++ {
    71  		c[i] = v.Index(i).Interface()
    72  	}
    73  	return All(c...)
    74  }
    75  func (b *chainBuilder) Any() bool {
    76  	v := reflect.ValueOf(b.collection)
    77  	t := v.Type()
    78  
    79  	if t.Kind() != reflect.Array && t.Kind() != reflect.Slice {
    80  		panic(fmt.Sprintf("Type %s is not supported by Chain.Any", t.String()))
    81  	}
    82  
    83  	c := make([]interface{}, v.Len())
    84  	for i := 0; i < v.Len(); i++ {
    85  		c[i] = v.Index(i).Interface()
    86  	}
    87  	return Any(c...)
    88  }
    89  func (b *chainBuilder) Contains(elem interface{}) bool {
    90  	return Contains(b.collection, elem)
    91  }
    92  func (b *chainBuilder) Every(elements ...interface{}) bool {
    93  	return Every(b.collection, elements...)
    94  }
    95  func (b *chainBuilder) Find(predicate interface{}) interface{} {
    96  	return Find(b.collection, predicate)
    97  }
    98  func (b *chainBuilder) ForEach(predicate interface{}) {
    99  	ForEach(b.collection, predicate)
   100  }
   101  func (b *chainBuilder) ForEachRight(predicate interface{}) {
   102  	ForEachRight(b.collection, predicate)
   103  }
   104  func (b *chainBuilder) Head() interface{} {
   105  	return Head(b.collection)
   106  }
   107  func (b *chainBuilder) Keys() interface{} {
   108  	return Keys(b.collection)
   109  }
   110  func (b *chainBuilder) IndexOf(elem interface{}) int {
   111  	return IndexOf(b.collection, elem)
   112  }
   113  func (b *chainBuilder) IsEmpty() bool {
   114  	return IsEmpty(b.collection)
   115  }
   116  func (b *chainBuilder) Last() interface{} {
   117  	return Last(b.collection)
   118  }
   119  func (b *chainBuilder) LastIndexOf(elem interface{}) int {
   120  	return LastIndexOf(b.collection, elem)
   121  }
   122  func (b *chainBuilder) NotEmpty() bool {
   123  	return NotEmpty(b.collection)
   124  }
   125  func (b *chainBuilder) Product() float64 {
   126  	return Product(b.collection)
   127  }
   128  func (b *chainBuilder) Reduce(reduceFunc, acc interface{}) interface{} {
   129  	return Reduce(b.collection, reduceFunc, acc)
   130  }
   131  func (b *chainBuilder) Sum() float64 {
   132  	return Sum(b.collection)
   133  }
   134  func (b *chainBuilder) Type() reflect.Type {
   135  	return reflect.TypeOf(b.collection)
   136  }
   137  func (b *chainBuilder) Value() interface{} {
   138  	return b.collection
   139  }
   140  func (b *chainBuilder) Values() interface{} {
   141  	return Values(b.collection)
   142  }
   143  

View as plain text