github.com/joomcode/cue@v0.4.4-0.20221111115225-539fe3512047/pkg/list/pkg.go (about)

     1  // Code generated by go generate. DO NOT EDIT.
     2  
     3  //go:generate rm pkg.go
     4  //go:generate go run ../gen/gen.go
     5  
     6  package list
     7  
     8  import (
     9  	"github.com/joomcode/cue/internal/core/adt"
    10  	"github.com/joomcode/cue/pkg/internal"
    11  )
    12  
    13  func init() {
    14  	internal.Register("list", pkg)
    15  }
    16  
    17  var _ = adt.TopKind // in case the adt package isn't used
    18  
    19  var pkg = &internal.Package{
    20  	Native: []*internal.Builtin{{
    21  		Name: "Drop",
    22  		Params: []internal.Param{
    23  			{Kind: adt.ListKind},
    24  			{Kind: adt.IntKind},
    25  		},
    26  		Result: adt.ListKind,
    27  		Func: func(c *internal.CallCtxt) {
    28  			x, n := c.List(0), c.Int(1)
    29  			if c.Do() {
    30  				c.Ret, c.Err = Drop(x, n)
    31  			}
    32  		},
    33  	}, {
    34  		Name: "FlattenN",
    35  		Params: []internal.Param{
    36  			{Kind: adt.TopKind},
    37  			{Kind: adt.IntKind},
    38  		},
    39  		Result: adt.ListKind,
    40  		Func: func(c *internal.CallCtxt) {
    41  			xs, depth := c.Value(0), c.Int(1)
    42  			if c.Do() {
    43  				c.Ret, c.Err = FlattenN(xs, depth)
    44  			}
    45  		},
    46  	}, {
    47  		Name: "Repeat",
    48  		Params: []internal.Param{
    49  			{Kind: adt.ListKind},
    50  			{Kind: adt.IntKind},
    51  		},
    52  		Result: adt.ListKind,
    53  		Func: func(c *internal.CallCtxt) {
    54  			x, count := c.List(0), c.Int(1)
    55  			if c.Do() {
    56  				c.Ret, c.Err = Repeat(x, count)
    57  			}
    58  		},
    59  	}, {
    60  		Name: "Concat",
    61  		Params: []internal.Param{
    62  			{Kind: adt.ListKind},
    63  		},
    64  		Result: adt.ListKind,
    65  		Func: func(c *internal.CallCtxt) {
    66  			a := c.List(0)
    67  			if c.Do() {
    68  				c.Ret, c.Err = Concat(a)
    69  			}
    70  		},
    71  	}, {
    72  		Name: "Take",
    73  		Params: []internal.Param{
    74  			{Kind: adt.ListKind},
    75  			{Kind: adt.IntKind},
    76  		},
    77  		Result: adt.ListKind,
    78  		Func: func(c *internal.CallCtxt) {
    79  			x, n := c.List(0), c.Int(1)
    80  			if c.Do() {
    81  				c.Ret, c.Err = Take(x, n)
    82  			}
    83  		},
    84  	}, {
    85  		Name: "Slice",
    86  		Params: []internal.Param{
    87  			{Kind: adt.ListKind},
    88  			{Kind: adt.IntKind},
    89  			{Kind: adt.IntKind},
    90  		},
    91  		Result: adt.ListKind,
    92  		Func: func(c *internal.CallCtxt) {
    93  			x, i, j := c.List(0), c.Int(1), c.Int(2)
    94  			if c.Do() {
    95  				c.Ret, c.Err = Slice(x, i, j)
    96  			}
    97  		},
    98  	}, {
    99  		Name: "MinItems",
   100  		Params: []internal.Param{
   101  			{Kind: adt.ListKind},
   102  			{Kind: adt.IntKind},
   103  		},
   104  		Result: adt.BoolKind,
   105  		Func: func(c *internal.CallCtxt) {
   106  			a, n := c.List(0), c.Int(1)
   107  			if c.Do() {
   108  				c.Ret = MinItems(a, n)
   109  			}
   110  		},
   111  	}, {
   112  		Name: "MaxItems",
   113  		Params: []internal.Param{
   114  			{Kind: adt.ListKind},
   115  			{Kind: adt.IntKind},
   116  		},
   117  		Result: adt.BoolKind,
   118  		Func: func(c *internal.CallCtxt) {
   119  			a, n := c.List(0), c.Int(1)
   120  			if c.Do() {
   121  				c.Ret = MaxItems(a, n)
   122  			}
   123  		},
   124  	}, {
   125  		Name: "UniqueItems",
   126  		Params: []internal.Param{
   127  			{Kind: adt.ListKind},
   128  		},
   129  		Result: adt.BoolKind,
   130  		Func: func(c *internal.CallCtxt) {
   131  			a := c.List(0)
   132  			if c.Do() {
   133  				c.Ret = UniqueItems(a)
   134  			}
   135  		},
   136  	}, {
   137  		Name: "Contains",
   138  		Params: []internal.Param{
   139  			{Kind: adt.ListKind},
   140  			{Kind: adt.TopKind},
   141  		},
   142  		Result: adt.BoolKind,
   143  		Func: func(c *internal.CallCtxt) {
   144  			a, v := c.List(0), c.Value(1)
   145  			if c.Do() {
   146  				c.Ret = Contains(a, v)
   147  			}
   148  		},
   149  	}, {
   150  		Name: "Avg",
   151  		Params: []internal.Param{
   152  			{Kind: adt.ListKind},
   153  		},
   154  		Result: adt.NumKind,
   155  		Func: func(c *internal.CallCtxt) {
   156  			xs := c.DecimalList(0)
   157  			if c.Do() {
   158  				c.Ret, c.Err = Avg(xs)
   159  			}
   160  		},
   161  	}, {
   162  		Name: "Max",
   163  		Params: []internal.Param{
   164  			{Kind: adt.ListKind},
   165  		},
   166  		Result: adt.NumKind,
   167  		Func: func(c *internal.CallCtxt) {
   168  			xs := c.DecimalList(0)
   169  			if c.Do() {
   170  				c.Ret, c.Err = Max(xs)
   171  			}
   172  		},
   173  	}, {
   174  		Name: "Min",
   175  		Params: []internal.Param{
   176  			{Kind: adt.ListKind},
   177  		},
   178  		Result: adt.NumKind,
   179  		Func: func(c *internal.CallCtxt) {
   180  			xs := c.DecimalList(0)
   181  			if c.Do() {
   182  				c.Ret, c.Err = Min(xs)
   183  			}
   184  		},
   185  	}, {
   186  		Name: "Product",
   187  		Params: []internal.Param{
   188  			{Kind: adt.ListKind},
   189  		},
   190  		Result: adt.NumKind,
   191  		Func: func(c *internal.CallCtxt) {
   192  			xs := c.DecimalList(0)
   193  			if c.Do() {
   194  				c.Ret, c.Err = Product(xs)
   195  			}
   196  		},
   197  	}, {
   198  		Name: "Range",
   199  		Params: []internal.Param{
   200  			{Kind: adt.NumKind},
   201  			{Kind: adt.NumKind},
   202  			{Kind: adt.NumKind},
   203  		},
   204  		Result: adt.ListKind,
   205  		Func: func(c *internal.CallCtxt) {
   206  			start, limit, step := c.Decimal(0), c.Decimal(1), c.Decimal(2)
   207  			if c.Do() {
   208  				c.Ret, c.Err = Range(start, limit, step)
   209  			}
   210  		},
   211  	}, {
   212  		Name: "Sum",
   213  		Params: []internal.Param{
   214  			{Kind: adt.ListKind},
   215  		},
   216  		Result: adt.NumKind,
   217  		Func: func(c *internal.CallCtxt) {
   218  			xs := c.DecimalList(0)
   219  			if c.Do() {
   220  				c.Ret, c.Err = Sum(xs)
   221  			}
   222  		},
   223  	}, {
   224  		Name: "Sort",
   225  		Params: []internal.Param{
   226  			{Kind: adt.ListKind},
   227  			{Kind: adt.TopKind},
   228  		},
   229  		Result: adt.ListKind,
   230  		Func: func(c *internal.CallCtxt) {
   231  			list, cmp := c.List(0), c.Value(1)
   232  			if c.Do() {
   233  				c.Ret, c.Err = Sort(list, cmp)
   234  			}
   235  		},
   236  	}, {
   237  		Name: "SortStable",
   238  		Params: []internal.Param{
   239  			{Kind: adt.ListKind},
   240  			{Kind: adt.TopKind},
   241  		},
   242  		Result: adt.ListKind,
   243  		Func: func(c *internal.CallCtxt) {
   244  			list, cmp := c.List(0), c.Value(1)
   245  			if c.Do() {
   246  				c.Ret, c.Err = SortStable(list, cmp)
   247  			}
   248  		},
   249  	}, {
   250  		Name: "SortStrings",
   251  		Params: []internal.Param{
   252  			{Kind: adt.ListKind},
   253  		},
   254  		Result: adt.ListKind,
   255  		Func: func(c *internal.CallCtxt) {
   256  			a := c.StringList(0)
   257  			if c.Do() {
   258  				c.Ret = SortStrings(a)
   259  			}
   260  		},
   261  	}, {
   262  		Name: "IsSorted",
   263  		Params: []internal.Param{
   264  			{Kind: adt.ListKind},
   265  			{Kind: adt.TopKind},
   266  		},
   267  		Result: adt.BoolKind,
   268  		Func: func(c *internal.CallCtxt) {
   269  			list, cmp := c.List(0), c.Value(1)
   270  			if c.Do() {
   271  				c.Ret = IsSorted(list, cmp)
   272  			}
   273  		},
   274  	}, {
   275  		Name: "IsSortedStrings",
   276  		Params: []internal.Param{
   277  			{Kind: adt.ListKind},
   278  		},
   279  		Result: adt.BoolKind,
   280  		Func: func(c *internal.CallCtxt) {
   281  			a := c.StringList(0)
   282  			if c.Do() {
   283  				c.Ret = IsSortedStrings(a)
   284  			}
   285  		},
   286  	}},
   287  	CUE: `{
   288  	Comparer: {
   289  		T:    _
   290  		x:    T
   291  		y:    T
   292  		less: bool
   293  	}
   294  	Ascending: {
   295  		Comparer
   296  		T:    number | string
   297  		x:    T
   298  		y:    T
   299  		less: true && x < y
   300  	}
   301  	Descending: {
   302  		Comparer
   303  		T:    number | string
   304  		x:    T
   305  		y:    T
   306  		less: x > y
   307  	}
   308  }`,
   309  }