difftreelog
feat std.any, std.all
in: master
2 files changed
crates/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)
+}
crates/jrsonnet-stdlib/src/std.jsonnetdiffbeforeafterboth40 mantissa:: $intrinsic(mantissa),40 mantissa:: $intrinsic(mantissa),41 exponent:: $intrinsic(exponent),41 exponent:: $intrinsic(exponent),424243 any:: $intrinsic(any),44 all:: $intrinsic(all),4543 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',