git.delta.rocks / jrsonnet / refs/commits / 64b86a5a335e

difftreelog

feat std.sqrt builtin

Yaroslav Bolyukin2021-07-12parent: #b81ad33.patch.diff
in: master

2 files changed

modifiedcrates/jrsonnet-evaluator/src/builtin/mod.rsdiffbeforeafterboth
--- a/crates/jrsonnet-evaluator/src/builtin/mod.rs
+++ b/crates/jrsonnet-evaluator/src/builtin/mod.rs
@@ -89,6 +89,7 @@
 			("ceil".into(), builtin_ceil),
 			("log".into(), builtin_log),
 			("pow".into(), builtin_pow),
+			("sqrt".into(), builtin_sqrt),
 			("extVar".into(), builtin_ext_var),
 			("native".into(), builtin_native),
 			("filter".into(), builtin_filter),
@@ -304,6 +305,14 @@
 	})
 }
 
+fn builtin_sqrt(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {
+	parse_args!(context, "sqrt", args, 1, [
+		0, x: ty!(BoundedNumber<(Some(0.0)), (None)>) => Val::Num;
+	], {
+		Ok(Val::Num(x.sqrt()))
+	})
+}
+
 fn builtin_ext_var(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {
 	parse_args!(context, "extVar", args, 1, [
 		0, x: ty!(string) => Val::Str;
modifiedcrates/jrsonnet-stdlib/src/std.jsonnetdiffbeforeafterboth
13 modulo:: $intrinsic(modulo),13 modulo:: $intrinsic(modulo),
14 floor:: $intrinsic(floor),14 floor:: $intrinsic(floor),
15 ceil:: $intrinsic(ceil),15 ceil:: $intrinsic(ceil),
16 log:: $intrinsic(log),
17 pow:: $intrinsic(pow),
18 extVar:: $intrinsic(extVar),16 extVar:: $intrinsic(extVar),
19 native:: $intrinsic(native),17 native:: $intrinsic(native),
20 filter:: $intrinsic(filter),18 filter:: $intrinsic(filter),
24 trace:: $intrinsic(trace),22 trace:: $intrinsic(trace),
25 id:: $intrinsic(id),23 id:: $intrinsic(id),
26 parseJson:: $intrinsic(parseJson),24 parseJson:: $intrinsic(parseJson),
25
26 log:: $intrinsic(log),
27 pow:: $intrinsic(pow),
28 sqrt:: $intrinsic(sqrt),
2729
28 isString(v):: std.type(v) == 'string',30 isString(v):: std.type(v) == 'string',
29 isNumber(v):: std.type(v) == 'number',31 isNumber(v):: std.type(v) == 'number',