git.delta.rocks / jrsonnet / refs/commits / 59f19ba582ad

difftreelog

source

crates/jrsonnet-stdlib/src/objects.rs3.1 KiBsourcehistory
1use jrsonnet_evaluator::{2	IStr, ObjValue, ObjValueBuilder,3	function::builtin,4	gc::WithCapacityExt,5	rustc_hash::FxHashSet,6	val::{ArrValue, Val},7};89#[builtin]10pub fn builtin_object_fields_ex(11	obj: ObjValue,12	hidden: bool,1314	#[default(false)]15	#[cfg(feature = "exp-preserve-order")]16	preserve_order: bool,17) -> Vec<Val> {18	let out = obj.fields_ex(19		hidden,20		#[cfg(feature = "exp-preserve-order")]21		preserve_order,22	);23	out.into_iter().map(Val::string).collect::<Vec<_>>()24}2526#[builtin]27pub fn builtin_object_fields(28	o: ObjValue,2930	#[default(false)]31	#[cfg(feature = "exp-preserve-order")]32	preserve_order: bool,33) -> Vec<Val> {34	builtin_object_fields_ex(35		o,36		false,37		#[cfg(feature = "exp-preserve-order")]38		preserve_order,39	)40}4142#[builtin]43pub fn builtin_object_fields_all(44	o: ObjValue,4546	#[default(false)]47	#[cfg(feature = "exp-preserve-order")]48	preserve_order: bool,49) -> Vec<Val> {50	builtin_object_fields_ex(51		o,52		true,53		#[cfg(feature = "exp-preserve-order")]54		preserve_order,55	)56}5758pub fn builtin_object_values_ex(59	o: ObjValue,60	include_hidden: bool,6162	#[cfg(feature = "exp-preserve-order")] 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	#[cfg(feature = "exp-preserve-order")] preserve_order: bool,106) -> ArrValue {107	o.key_values_ex(108		include_hidden,109		#[cfg(feature = "exp-preserve-order")]110		preserve_order,111	)112}113#[builtin]114pub fn builtin_object_keys_values(115	o: ObjValue,116117	#[default(false)]118	#[cfg(feature = "exp-preserve-order")]119	preserve_order: bool,120) -> ArrValue {121	builtin_object_keys_values_ex(122		o,123		false,124		#[cfg(feature = "exp-preserve-order")]125		preserve_order,126	)127}128#[builtin]129pub fn builtin_object_keys_values_all(130	o: ObjValue,131132	#[default(false)]133	#[cfg(feature = "exp-preserve-order")]134	preserve_order: bool,135) -> ArrValue {136	builtin_object_keys_values_ex(137		o,138		true,139		#[cfg(feature = "exp-preserve-order")]140		preserve_order,141	)142}143144#[builtin]145pub fn builtin_object_has_ex(obj: ObjValue, fname: IStr, hidden: bool) -> bool {146	obj.has_field_ex(fname, hidden)147}148149#[builtin]150pub fn builtin_object_has(o: ObjValue, f: IStr) -> bool {151	o.has_field(f)152}153154#[builtin]155pub fn builtin_object_has_all(o: ObjValue, f: IStr) -> bool {156	o.has_field_include_hidden(f)157}158159#[builtin]160pub fn builtin_object_remove_key(obj: ObjValue, key: IStr) -> ObjValue {161	let mut omit = FxHashSet::with_capacity(1);162	omit.insert(key);163164	let mut out = ObjValueBuilder::new();165	out.with_super(obj).with_fields_omitted(omit);166	out.build()167}