--- a/crates/jrsonnet-evaluator/src/builtin/mod.rs +++ b/crates/jrsonnet-evaluator/src/builtin/mod.rs @@ -86,6 +86,7 @@ ("modulo".into(), builtin_modulo), ("mod".into(), builtin_mod), ("floor".into(), builtin_floor), + ("ceil".into(), builtin_ceil), ("log".into(), builtin_log), ("pow".into(), builtin_pow), ("extVar".into(), builtin_ext_var), @@ -278,6 +279,14 @@ }) } +fn builtin_ceil(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result { + parse_args!(context, "ceil", args, 1, [ + 0, x: ty!(number) => Val::Num; + ], { + Ok(Val::Num(x.ceil())) + }) +} + fn builtin_log(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result { parse_args!(context, "log", args, 1, [ 0, n: ty!(number) => Val::Num; --- a/crates/jrsonnet-stdlib/src/std.jsonnet +++ b/crates/jrsonnet-stdlib/src/std.jsonnet @@ -12,6 +12,7 @@ primitiveEquals:: $intrinsic(primitiveEquals), modulo:: $intrinsic(modulo), floor:: $intrinsic(floor), + ceil:: $intrinsic(ceil), log:: $intrinsic(log), pow:: $intrinsic(pow), extVar:: $intrinsic(extVar),