diff --git a/sjsonnet/src/sjsonnet/Std.scala b/sjsonnet/src/sjsonnet/Std.scala index a635733f..175d3f08 100644 --- a/sjsonnet/src/sjsonnet/Std.scala +++ b/sjsonnet/src/sjsonnet/Std.scala @@ -234,6 +234,15 @@ object Std { builtin("sqrt", "x"){ (wd, extVars, x: Double) => math.sqrt(x) }, + builtin("max", "a", "b"){ (wd, extVars, a: Double, b: Double) => + math.max(a, b) + }, + builtin("min", "a", "b"){ (wd, extVars, a: Double, b: Double) => + math.min(a, b) + }, + builtin("mod", "a", "b"){ (wd, extVars, a: Int, b: Int) => + a % b + }, builtin("makeArray", "sz", "func"){ (wd, extVars, sz: Int, func: Applyer) => Val.Arr( diff --git a/sjsonnet/test/resources/test_suite/stdlib.jsonnet b/sjsonnet/test/resources/test_suite/stdlib.jsonnet index acfa9dd2..1c6aad31 100644 --- a/sjsonnet/test/resources/test_suite/stdlib.jsonnet +++ b/sjsonnet/test/resources/test_suite/stdlib.jsonnet @@ -55,6 +55,9 @@ std.assertEqual(std.sqrt(16), 4) && std.assertEqual(std.abs(33), 33) && std.assertEqual(std.abs(-33), 33) && std.assertEqual(std.abs(0), 0) && +std.assertEqual(std.mod(20, 10), 0) && +std.assertEqual(std.max(0, 1), 1) && +std.assertEqual(std.min(0, 1), 0) && // Ordinary (non-test) code can define pi as 2*std.acos(0) local pi = 3.14159265359;