func()

in lib/collections.go [325:560]


func (collectionsLib) CompileOptions() []cel.EnvOption {
	return []cel.EnvOption{
		cel.Macros(parser.NewReceiverMacro("as", 2, makeAs)),

		cel.Function("collate",
			cel.MemberOverload(
				"list_collate_string",
				[]*cel.Type{listDyn, cel.StringType},
				listDyn,
				cel.BinaryBinding(catch(collateFields)),
			),
			cel.MemberOverload(
				"list_collate_list_string",
				[]*cel.Type{listDyn, listString},
				listDyn,
				cel.BinaryBinding(catch(collateFields)),
			),
			cel.MemberOverload(
				"map_collate_string",
				[]*cel.Type{mapStringDyn, cel.StringType},
				listDyn,
				cel.BinaryBinding(catch(collateFields)),
			),
			cel.MemberOverload(
				"map_collate_list_string",
				[]*cel.Type{mapStringDyn, listString},
				listDyn,
				cel.BinaryBinding(catch(collateFields)),
			),
		),

		cel.Function("drop",
			cel.MemberOverload(
				"list_drop_string",
				[]*cel.Type{listV, cel.StringType},
				listV,
				cel.BinaryBinding(catch(dropFields)),
			),
			cel.MemberOverload(
				"list_drop_list_string",
				[]*cel.Type{listV, listString},
				listV,
				cel.BinaryBinding(catch(dropFields)),
			),
			cel.MemberOverload(
				"map_drop_string",
				[]*cel.Type{mapKV, cel.StringType},
				mapKV,
				cel.BinaryBinding(catch(dropFields)),
			),
			cel.MemberOverload(
				"map_drop_list_string",
				[]*cel.Type{mapKV, listString},
				mapKV,
				cel.BinaryBinding(catch(dropFields)),
			),
		),

		cel.Function("drop_empty",
			cel.MemberOverload(
				"list_drop_empty",
				[]*cel.Type{listV},
				listV,
				cel.UnaryBinding(catch(dropEmpty)),
			),
			cel.MemberOverload(
				"map_drop_empty",
				[]*cel.Type{mapKV},
				mapKV,
				cel.UnaryBinding(catch(dropEmpty)),
			),
		),

		cel.Function("flatten",
			cel.MemberOverload(
				"list_flatten",
				[]*cel.Type{listDyn},
				listDyn,
				cel.UnaryBinding(catch(flatten)),
			),
		),

		cel.Function("front",
			cel.Overload(
				"front_list_int",
				[]*cel.Type{listV, cel.IntType},
				listV,
				cel.BinaryBinding(catch(frontN)),
			),
		),

		cel.Function("keys",
			cel.MemberOverload(
				"map_keys",
				[]*cel.Type{mapKV},
				listK,
				cel.UnaryBinding(catch(mapKeys)),
			),
			cel.Overload(
				"keys_map",
				[]*cel.Type{mapKV},
				listK,
				cel.UnaryBinding(catch(mapKeys)),
			),
		),

		cel.Function("max",
			cel.MemberOverload(
				"list_max",
				[]*cel.Type{listV},
				typeV,
				cel.UnaryBinding(catch(maxList)),
			),
			cel.Overload(
				"max_list",
				[]*cel.Type{listV},
				typeV,
				cel.UnaryBinding(catch(maxList)),
			),
			cel.Overload(
				"max_pair",
				[]*cel.Type{typeV, typeV},
				typeV,
				cel.BinaryBinding(maxDiadic),
			),
		),

		cel.Function("min",
			cel.MemberOverload(
				"list_min",
				[]*cel.Type{listV},
				typeV,
				cel.UnaryBinding(catch(minList)),
			),
			cel.Overload(
				"min_list",
				[]*cel.Type{listV},
				typeV,
				cel.UnaryBinding(catch(minList)),
			),
			cel.Overload(
				"min_pair",
				[]*cel.Type{typeV, typeV},
				typeV,
				cel.BinaryBinding(minDiadic),
			),
		),

		cel.Function("sum",
			cel.MemberOverload(
				"list_sum",
				[]*cel.Type{listV},
				typeV,
				cel.UnaryBinding(catch(sumList)),
			),
			cel.Overload(
				"sum_list",
				[]*cel.Type{listV},
				typeV,
				cel.UnaryBinding(catch(sumList)),
			),
		),

		cel.Function("tail",
			cel.Overload(
				"tail_list",
				[]*cel.Type{listV},
				listV,
				cel.UnaryBinding(catch(tail)),
			),
			cel.Overload(
				"tail_list_int",
				[]*cel.Type{listV, cel.IntType},
				listV,
				cel.BinaryBinding(catch(tailN)),
			),
		),

		cel.Function("values",
			cel.MemberOverload(
				"map_values",
				[]*cel.Type{mapKV},
				listK,
				cel.UnaryBinding(catch(mapValues)),
			),
			cel.Overload(
				"values_map",
				[]*cel.Type{mapKV},
				listK,
				cel.UnaryBinding(catch(mapValues)),
			),
		),

		cel.Function("with",
			cel.MemberOverload(
				"map_with_map",
				[]*cel.Type{mapKV, mapKV},
				mapKV,
				cel.BinaryBinding(catch(withAll)),
			),
		),

		cel.Function("with_update",
			cel.MemberOverload(
				"map_with_update_map",
				[]*cel.Type{mapKV, mapKV},
				mapKV,
				cel.BinaryBinding(catch(withUpdate)),
			),
		),

		cel.Function("with_replace",
			cel.MemberOverload(
				"map_with_replace_map",
				[]*cel.Type{mapKV, mapKV},
				mapKV,
				cel.BinaryBinding(catch(withReplace)),
			),
		),

		cel.Function("zip",
			cel.MemberOverload(
				"list_zip",
				[]*cel.Type{listK, listV},
				mapKV,
				cel.BinaryBinding(catch(zipLists)),
			),
			cel.Overload(
				"zip_list",
				[]*cel.Type{listK, listV},
				mapKV,
				cel.BinaryBinding(catch(zipLists)),
			),
		),
	}
}