--- a/crates/jrsonnet-stdlib/src/lib.rs +++ b/crates/jrsonnet-stdlib/src/lib.rs @@ -86,6 +86,7 @@ ("sign", builtin_sign::INST), ("max", builtin_max::INST), ("min", builtin_min::INST), + ("sum", builtin_sum::INST), ("modulo", builtin_modulo::INST), ("floor", builtin_floor::INST), ("ceil", builtin_ceil::INST), @@ -105,6 +106,7 @@ ("mod", builtin_mod::INST), ("primitiveEquals", builtin_primitive_equals::INST), ("equals", builtin_equals::INST), + ("xor", builtin_xor::INST), ("format", builtin_format::INST), // Sort ("sort", builtin_sort::INST), --- a/crates/jrsonnet-stdlib/src/math.rs +++ b/crates/jrsonnet-stdlib/src/math.rs @@ -25,6 +25,11 @@ } #[builtin] +pub fn builtin_sum(arr: Vec) -> f64 { + arr.iter().sum() +} + +#[builtin] pub fn builtin_modulo(x: f64, y: f64) -> f64 { x % y } --- a/crates/jrsonnet-stdlib/src/operator.rs +++ b/crates/jrsonnet-stdlib/src/operator.rs @@ -34,6 +34,11 @@ } #[builtin] +pub fn builtin_xor(x: bool, y: bool) -> bool { + x ^ y +} + +#[builtin] pub fn builtin_format(str: IStr, vals: Val) -> Result { std_format(&str, vals) }