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

difftreelog

Merge pull request #100 from CertainLach/xor-builtin

Yaroslav Bolyukin2023-04-09parents: #ff6854d #cbbe450.patch.diff
in: master

3 files changed

modifiedcrates/jrsonnet-stdlib/src/lib.rsdiffbeforeafterboth
--- 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),
modifiedcrates/jrsonnet-stdlib/src/math.rsdiffbeforeafterboth
before · crates/jrsonnet-stdlib/src/math.rs
1use jrsonnet_evaluator::{function::builtin, typed::PositiveF64};23#[builtin]4pub fn builtin_abs(n: f64) -> f64 {5	n.abs()6}78#[builtin]9pub fn builtin_sign(n: f64) -> f64 {10	if n == 0. {11		0.12	} else {13		n.signum()14	}15}1617#[builtin]18pub fn builtin_max(a: f64, b: f64) -> f64 {19	a.max(b)20}2122#[builtin]23pub fn builtin_min(a: f64, b: f64) -> f64 {24	a.min(b)25}2627#[builtin]28pub fn builtin_modulo(x: f64, y: f64) -> f64 {29	x % y30}3132#[builtin]33pub fn builtin_floor(x: f64) -> f64 {34	x.floor()35}3637#[builtin]38pub fn builtin_ceil(x: f64) -> f64 {39	x.ceil()40}4142#[builtin]43pub fn builtin_log(x: f64) -> f64 {44	x.ln()45}4647#[builtin]48pub fn builtin_pow(x: f64, n: f64) -> f64 {49	x.powf(n)50}5152#[builtin]53pub fn builtin_sqrt(x: PositiveF64) -> f64 {54	x.0.sqrt()55}5657#[builtin]58pub fn builtin_sin(x: f64) -> f64 {59	x.sin()60}6162#[builtin]63pub fn builtin_cos(x: f64) -> f64 {64	x.cos()65}6667#[builtin]68pub fn builtin_tan(x: f64) -> f64 {69	x.tan()70}7172#[builtin]73pub fn builtin_asin(x: f64) -> f64 {74	x.asin()75}7677#[builtin]78pub fn builtin_acos(x: f64) -> f64 {79	x.acos()80}8182#[builtin]83pub fn builtin_atan(x: f64) -> f64 {84	x.atan()85}8687#[builtin]88pub fn builtin_exp(x: f64) -> f64 {89	x.exp()90}9192fn frexp(s: f64) -> (f64, i16) {93	if s == 0.0 {94		(s, 0)95	} else {96		let lg = s.abs().log2();97		let x = (lg - lg.floor() - 1.0).exp2();98		let exp = lg.floor() + 1.0;99		(s.signum() * x, exp as i16)100	}101}102103#[builtin]104pub fn builtin_mantissa(x: f64) -> f64 {105	frexp(x).0106}107108#[builtin]109pub fn builtin_exponent(x: f64) -> i16 {110	frexp(x).1111}
modifiedcrates/jrsonnet-stdlib/src/operator.rsdiffbeforeafterboth
--- 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<String> {
 	std_format(&str, vals)
 }