git.delta.rocks / jrsonnet / refs/commits / 702547533591

difftreelog

feat std.{sin,cos,tan,asin,acos,atan}

Yaroslav Bolyukin2021-07-12parent: #64b86a5.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
@@ -90,6 +90,12 @@
 			("log".into(), builtin_log),
 			("pow".into(), builtin_pow),
 			("sqrt".into(), builtin_sqrt),
+			("sin".into(), builtin_sin),
+			("cos".into(), builtin_cos),
+			("tan".into(), builtin_tan),
+			("asin".into(), builtin_asin),
+			("acos".into(), builtin_acos),
+			("atan".into(), builtin_atan),
 			("extVar".into(), builtin_ext_var),
 			("native".into(), builtin_native),
 			("filter".into(), builtin_filter),
@@ -313,6 +319,54 @@
 	})
 }
 
+fn builtin_sin(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {
+	parse_args!(context, "sin", args, 1, [
+		0, x: ty!(number) => Val::Num;
+	], {
+		Ok(Val::Num(x.sin()))
+	})
+}
+
+fn builtin_cos(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {
+	parse_args!(context, "cos", args, 1, [
+		0, x: ty!(number) => Val::Num;
+	], {
+		Ok(Val::Num(x.cos()))
+	})
+}
+
+fn builtin_tan(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {
+	parse_args!(context, "tan", args, 1, [
+		0, x: ty!(number) => Val::Num;
+	], {
+		Ok(Val::Num(x.tan()))
+	})
+}
+
+fn builtin_asin(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {
+	parse_args!(context, "asin", args, 1, [
+		0, x: ty!(number) => Val::Num;
+	], {
+		Ok(Val::Num(x.asin()))
+	})
+}
+
+fn builtin_acos(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {
+	parse_args!(context, "acos", args, 1, [
+		0, x: ty!(number) => Val::Num;
+	], {
+		Ok(Val::Num(x.acos()))
+	})
+}
+
+fn builtin_atan(context: Context, _loc: Option<&ExprLocation>, args: &ArgsDesc) -> Result<Val> {
+	parse_args!(context, "atan", args, 1, [
+		0, x: ty!(number) => Val::Num;
+	], {
+		Ok(Val::Num(x.atan()))
+	})
+}
+
 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
27 pow:: $intrinsic(pow),27 pow:: $intrinsic(pow),
28 sqrt:: $intrinsic(sqrt),28 sqrt:: $intrinsic(sqrt),
2929
30 sin:: $intrinsic(sin),
31 cos:: $intrinsic(cos),
32 tan:: $intrinsic(tan),
33 asin:: $intrinsic(asin),
34 acos:: $intrinsic(acos),
35 atan:: $intrinsic(atan),
36
30 isString(v):: std.type(v) == 'string',37 isString(v):: std.type(v) == 'string',
31 isNumber(v):: std.type(v) == 'number',38 isNumber(v):: std.type(v) == 'number',
32 isBoolean(v):: std.type(v) == 'boolean',39 isBoolean(v):: std.type(v) == 'boolean',