git.delta.rocks / jrsonnet / refs/commits / 00b3f93343a7

difftreelog

feat std.any, std.all

Yaroslav Bolyukin2022-04-20parent: #7123b5d.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
@@ -135,6 +135,8 @@
 			("asciiLower".into(), builtin_ascii_lower::INST),
 			("member".into(), builtin_member::INST),
 			("count".into(), builtin_count::INST),
+			("any".into(), builtin_any::INST),
+			("all".into(), builtin_all::INST),
 		].iter().cloned().collect()
 	};
 }
@@ -668,3 +670,25 @@
 	}
 	Ok(count)
 }
+
+#[jrsonnet_macros::builtin]
+fn builtin_any(arr: ArrValue) -> Result<bool> {
+	for v in arr.iter() {
+		let v: bool = v?.try_into()?;
+		if v {
+			return Ok(true);
+		}
+	}
+	Ok(false)
+}
+
+#[jrsonnet_macros::builtin]
+fn builtin_all(arr: ArrValue) -> Result<bool> {
+	for v in arr.iter() {
+		let v: bool = v?.try_into()?;
+		if !v {
+			return Ok(false);
+		}
+	}
+	Ok(true)
+}
modifiedcrates/jrsonnet-stdlib/src/std.jsonnetdiffbeforeafterboth
40 mantissa:: $intrinsic(mantissa),40 mantissa:: $intrinsic(mantissa),
41 exponent:: $intrinsic(exponent),41 exponent:: $intrinsic(exponent),
4242
43 any:: $intrinsic(any),
44 all:: $intrinsic(all),
45
43 isString(v):: std.type(v) == 'string',46 isString(v):: std.type(v) == 'string',
44 isNumber(v):: std.type(v) == 'number',47 isNumber(v):: std.type(v) == 'number',
45 isBoolean(v):: std.type(v) == 'boolean',48 isBoolean(v):: std.type(v) == 'boolean',