difftreelog
fix preserve_order arg defaults
in: master
2 files changed
crates/jrsonnet-stdlib/src/arrays.rsdiffbeforeafterboth--- a/crates/jrsonnet-stdlib/src/arrays.rs
+++ b/crates/jrsonnet-stdlib/src/arrays.rs
@@ -322,6 +322,7 @@
#[builtin]
pub fn builtin_prune(
a: Val,
+
#[default(false)]
#[cfg(feature = "exp-preserve-order")]
preserve_order: bool,
crates/jrsonnet-stdlib/src/objects.rsdiffbeforeafterboth1use jrsonnet_evaluator::{2 function::builtin,3 val::{ArrValue, Val},4 IStr, ObjValue, ObjValueBuilder,5};67#[builtin]8pub fn builtin_object_fields_ex(9 obj: ObjValue,10 hidden: bool,1112 #[default(false)]13 #[cfg(feature = "exp-preserve-order")]14 preserve_order: bool,15) -> Vec<Val> {16 let out = obj.fields_ex(17 hidden,18 #[cfg(feature = "exp-preserve-order")]19 preserve_order,20 );21 out.into_iter().map(Val::string).collect::<Vec<_>>()22}2324#[builtin]25pub fn builtin_object_fields(26 o: ObjValue,2728 #[default(false)]29 #[cfg(feature = "exp-preserve-order")]30 preserve_order: bool,31) -> Vec<Val> {32 builtin_object_fields_ex(33 o,34 false,35 #[cfg(feature = "exp-preserve-order")]36 preserve_order,37 )38}3940#[builtin]41pub fn builtin_object_fields_all(42 o: ObjValue,4344 #[default(false)]45 #[cfg(feature = "exp-preserve-order")]46 preserve_order: bool,47) -> Vec<Val> {48 builtin_object_fields_ex(49 o,50 true,51 #[cfg(feature = "exp-preserve-order")]52 preserve_order,53 )54}5556pub fn builtin_object_values_ex(57 o: ObjValue,58 include_hidden: bool,5960 #[cfg(feature = "exp-preserve-order")] preserve_order: bool,61) -> ArrValue {62 o.values_ex(63 include_hidden,64 #[cfg(feature = "exp-preserve-order")]65 preserve_order,66 )67}68#[builtin]69pub fn builtin_object_values(70 o: ObjValue,7172 #[default(false)]73 #[cfg(feature = "exp-preserve-order")]74 preserve_order: bool,75) -> ArrValue {76 builtin_object_values_ex(77 o,78 false,79 #[cfg(feature = "exp-preserve-order")]80 preserve_order,81 )82}83#[builtin]84pub fn builtin_object_values_all(85 o: ObjValue,8687 #[default(false)]88 #[cfg(feature = "exp-preserve-order")]89 preserve_order: bool,90) -> ArrValue {91 builtin_object_values_ex(92 o,93 true,94 #[cfg(feature = "exp-preserve-order")]95 preserve_order,96 )97}9899pub fn builtin_object_keys_values_ex(100 o: ObjValue,101 include_hidden: bool,102 #[cfg(feature = "exp-preserve-order")] preserve_order: bool,103) -> ArrValue {104 o.key_values_ex(105 include_hidden,106 #[cfg(feature = "exp-preserve-order")]107 preserve_order,108 )109}110#[builtin]111pub fn builtin_object_keys_values(112 o: ObjValue,113114 #[default(false)]115 #[cfg(feature = "exp-preserve-order")]116 preserve_order: bool,117) -> ArrValue {118 builtin_object_keys_values_ex(119 o,120 false,121 #[cfg(feature = "exp-preserve-order")]122 preserve_order,123 )124}125#[builtin]126pub fn builtin_object_keys_values_all(127 o: ObjValue,128129 #[default(false)]130 #[cfg(feature = "exp-preserve-order")]131 preserve_order: bool,132) -> ArrValue {133 builtin_object_keys_values_ex(134 o,135 true,136 #[cfg(feature = "exp-preserve-order")]137 preserve_order,138 )139}140141#[builtin]142pub fn builtin_object_has_ex(obj: ObjValue, fname: IStr, hidden: bool) -> bool {143 obj.has_field_ex(fname, hidden)144}145146#[builtin]147pub fn builtin_object_has(o: ObjValue, f: IStr) -> bool {148 o.has_field(f)149}150151#[builtin]152pub fn builtin_object_has_all(o: ObjValue, f: IStr) -> bool {153 o.has_field_include_hidden(f)154}155156#[builtin]157pub fn builtin_object_remove_key(158 obj: ObjValue,159 key: IStr,160161 // Standard implementation uses std.objectFields without such argument, we can't162 // assume order preservation should always be enabled/disabled163 #[default(false)]164 #[cfg(feature = "exp-preserve-order")]165 preserve_order: bool,166) -> ObjValue {167 let mut new_obj = ObjValueBuilder::with_capacity(obj.len() - 1);168 for (k, v) in obj.iter(169 #[cfg(feature = "exp-preserve-order")]170 preserve_order,171 ) {172 if k == key {173 continue;174 }175 new_obj.field(k).value(v.unwrap());176 }177178 new_obj.build()179}1use jrsonnet_evaluator::{2 function::builtin,3 val::{ArrValue, Val},4 IStr, ObjValue, ObjValueBuilder,5};67#[builtin]8pub fn builtin_object_fields_ex(9 obj: ObjValue,10 hidden: bool,1112 #[default(false)]13 #[cfg(feature = "exp-preserve-order")]14 preserve_order: bool,15) -> Vec<Val> {16 let out = obj.fields_ex(17 hidden,18 #[cfg(feature = "exp-preserve-order")]19 preserve_order,20 );21 out.into_iter().map(Val::string).collect::<Vec<_>>()22}2324#[builtin]25pub fn builtin_object_fields(26 o: ObjValue,2728 #[default(false)]29 #[cfg(feature = "exp-preserve-order")]30 preserve_order: bool,31) -> Vec<Val> {32 builtin_object_fields_ex(33 o,34 false,35 #[cfg(feature = "exp-preserve-order")]36 preserve_order,37 )38}3940#[builtin]41pub fn builtin_object_fields_all(42 o: ObjValue,4344 #[default(false)]45 #[cfg(feature = "exp-preserve-order")]46 preserve_order: bool,47) -> Vec<Val> {48 builtin_object_fields_ex(49 o,50 true,51 #[cfg(feature = "exp-preserve-order")]52 preserve_order,53 )54}5556pub fn builtin_object_values_ex(57 o: ObjValue,58 include_hidden: bool,5960 #[default(false)]61 #[cfg(feature = "exp-preserve-order")]62 preserve_order: bool,63) -> ArrValue {64 o.values_ex(65 include_hidden,66 #[cfg(feature = "exp-preserve-order")]67 preserve_order,68 )69}70#[builtin]71pub fn builtin_object_values(72 o: ObjValue,7374 #[default(false)]75 #[cfg(feature = "exp-preserve-order")]76 preserve_order: bool,77) -> ArrValue {78 builtin_object_values_ex(79 o,80 false,81 #[cfg(feature = "exp-preserve-order")]82 preserve_order,83 )84}85#[builtin]86pub fn builtin_object_values_all(87 o: ObjValue,8889 #[default(false)]90 #[cfg(feature = "exp-preserve-order")]91 preserve_order: bool,92) -> ArrValue {93 builtin_object_values_ex(94 o,95 true,96 #[cfg(feature = "exp-preserve-order")]97 preserve_order,98 )99}100101pub fn builtin_object_keys_values_ex(102 o: ObjValue,103 include_hidden: bool,104105 #[default(false)]106 #[cfg(feature = "exp-preserve-order")]107 preserve_order: bool,108) -> ArrValue {109 o.key_values_ex(110 include_hidden,111 #[cfg(feature = "exp-preserve-order")]112 preserve_order,113 )114}115#[builtin]116pub fn builtin_object_keys_values(117 o: ObjValue,118119 #[default(false)]120 #[cfg(feature = "exp-preserve-order")]121 preserve_order: bool,122) -> ArrValue {123 builtin_object_keys_values_ex(124 o,125 false,126 #[cfg(feature = "exp-preserve-order")]127 preserve_order,128 )129}130#[builtin]131pub fn builtin_object_keys_values_all(132 o: ObjValue,133134 #[default(false)]135 #[cfg(feature = "exp-preserve-order")]136 preserve_order: bool,137) -> ArrValue {138 builtin_object_keys_values_ex(139 o,140 true,141 #[cfg(feature = "exp-preserve-order")]142 preserve_order,143 )144}145146#[builtin]147pub fn builtin_object_has_ex(obj: ObjValue, fname: IStr, hidden: bool) -> bool {148 obj.has_field_ex(fname, hidden)149}150151#[builtin]152pub fn builtin_object_has(o: ObjValue, f: IStr) -> bool {153 o.has_field(f)154}155156#[builtin]157pub fn builtin_object_has_all(o: ObjValue, f: IStr) -> bool {158 o.has_field_include_hidden(f)159}160161#[builtin]162pub fn builtin_object_remove_key(163 obj: ObjValue,164 key: IStr,165166 // Standard implementation uses std.objectFields without such argument, we can't167 // assume order preservation should always be enabled/disabled168 #[default(false)]169 #[cfg(feature = "exp-preserve-order")]170 preserve_order: bool,171) -> ObjValue {172 let mut new_obj = ObjValueBuilder::with_capacity(obj.len() - 1);173 for (k, v) in obj.iter(174 #[cfg(feature = "exp-preserve-order")]175 preserve_order,176 ) {177 if k == key {178 continue;179 }180 new_obj.field(k).value(v.unwrap());181 }182183 new_obj.build()184}