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

difftreelog

feat add std.is_even, std.is_odd, std.is_integer and std.is_decimal

Paweł Bęza2023-07-11parent: #0d33992.patch.diff
in: master
Upstream issue: https://github.com/google/go-jsonnet/pull/702

2 files changed

modifiedcrates/jrsonnet-stdlib/src/lib.rsdiffbeforeafterboth
105 ("mantissa", builtin_mantissa::INST),105 ("mantissa", builtin_mantissa::INST),
106 ("exponent", builtin_exponent::INST),106 ("exponent", builtin_exponent::INST),
107 ("round", builtin_round::INST),107 ("round", builtin_round::INST),
108 ("isEven", builtin_is_even::INST),
109 ("isOdd", builtin_is_odd::INST),
110 ("isInteger", builtin_is_integer::INST),
111 ("isDecimal", builtin_is_decimal::INST),
108 // Operator112 // Operator
109 ("mod", builtin_mod::INST),113 ("mod", builtin_mod::INST),
110 ("primitiveEquals", builtin_primitive_equals::INST),114 ("primitiveEquals", builtin_primitive_equals::INST),
modifiedcrates/jrsonnet-stdlib/src/math.rsdiffbeforeafterboth
--- a/crates/jrsonnet-stdlib/src/math.rs
+++ b/crates/jrsonnet-stdlib/src/math.rs
@@ -119,3 +119,23 @@
 pub fn builtin_round(x: f64) -> f64 {
 	x.round()
 }
+
+#[builtin]
+pub fn builtin_is_even(x: f64) -> bool {
+	builtin_round(x) % 2.0 == 0.0
+}
+
+#[builtin]
+pub fn builtin_is_odd(x: f64) -> bool {
+	builtin_round(x) % 2.0 == 1.0
+}
+
+#[builtin]
+pub fn builtin_is_integer(x: f64) -> bool {
+	builtin_round(x) == x
+}
+
+#[builtin]
+pub fn builtin_is_decimal(x: f64) -> bool {
+	builtin_round(x) != x
+}