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

difftreelog

source

crates/jrsonnet-stdlib/src/objects.rs955 Bsourcehistory
1use jrsonnet_evaluator::{2	function::builtin,3	val::{StrValue, Val},4	IStr, ObjValue, ObjValueBuilder,5};678#[builtin]9pub fn builtin_object_fields_ex(10	obj: ObjValue,11	hidden: bool,12	#[cfg(feature = "exp-preserve-order")] preserve_order: Option<bool>,13) -> Vec<Val> {14	#[cfg(feature = "exp-preserve-order")]15	let preserve_order = preserve_order.unwrap_or(false);16	let out = obj.fields_ex(17		hidden,18		#[cfg(feature = "exp-preserve-order")]19		preserve_order,20	);21	out.into_iter()22		.map(StrValue::Flat)23		.map(Val::Str)24		.collect::<Vec<_>>()25}2627#[builtin]28pub fn builtin_object_has_ex(obj: ObjValue, fname: IStr, hidden: bool) -> bool {29	obj.has_field_ex(fname, hidden)30}3132#[builtin]33pub fn builtin_object_remove_key(obj: ObjValue, key: IStr) -> ObjValue {34	let mut new_obj = ObjValueBuilder::with_capacity(obj.len() - 1);35	for (k, v) in obj.iter() {36		if k == key {37			continue38		}39		new_obj.member(k).value_unchecked(v.unwrap())40	}4142	new_obj.build()43}