git.delta.rocks / jrsonnet / refs/commits / 7b01ecbd8fbc

difftreelog

source

crates/jrsonnet-stdlib/src/manifest.rs1.4 KiBsourcehistory
1use jrsonnet_evaluator::{2	error::Result,3	function::builtin,4	stdlib::manifest::{5		escape_string_json, manifest_json_ex, manifest_yaml_ex, ManifestJsonOptions, ManifestType,6		ManifestYamlOptions,7	},8	typed::Any,9	IStr,10};1112#[builtin]13pub fn builtin_escape_string_json(str_: IStr) -> Result<String> {14	Ok(escape_string_json(&str_))15}1617#[builtin]18pub fn builtin_manifest_json_ex(19	value: Any,20	indent: IStr,21	newline: Option<IStr>,22	key_val_sep: Option<IStr>,23	#[cfg(feature = "exp-preserve-order")] preserve_order: Option<bool>,24) -> Result<String> {25	let newline = newline.as_deref().unwrap_or("\n");26	let key_val_sep = key_val_sep.as_deref().unwrap_or(": ");27	manifest_json_ex(28		&value.0,29		&ManifestJsonOptions {30			padding: &indent,31			mtype: ManifestType::Std,32			newline,33			key_val_sep,34			#[cfg(feature = "exp-preserve-order")]35			preserve_order: preserve_order.unwrap_or(false),36		},37	)38}3940#[builtin]41pub fn builtin_manifest_yaml_doc(42	value: Any,43	indent_array_in_object: Option<bool>,44	quote_keys: Option<bool>,45	#[cfg(feature = "exp-preserve-order")] preserve_order: Option<bool>,46) -> Result<String> {47	manifest_yaml_ex(48		&value.0,49		&ManifestYamlOptions {50			padding: "  ",51			arr_element_padding: if indent_array_in_object.unwrap_or(false) {52				"  "53			} else {54				""55			},56			quote_keys: quote_keys.unwrap_or(true),57			#[cfg(feature = "exp-preserve-order")]58			preserve_order: preserve_order.unwrap_or(false),59		},60	)61}