git.delta.rocks / jrsonnet / refs/commits / 0831da3ed8d9

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, State,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	s: State,20	value: Any,21	indent: IStr,22	newline: Option<IStr>,23	key_val_sep: Option<IStr>,24	#[cfg(feature = "exp-preserve-order")] preserve_order: Option<bool>,25) -> Result<String> {26	let newline = newline.as_deref().unwrap_or("\n");27	let key_val_sep = key_val_sep.as_deref().unwrap_or(": ");28	manifest_json_ex(29		s,30		&value.0,31		&ManifestJsonOptions {32			padding: &indent,33			mtype: ManifestType::Std,34			newline,35			key_val_sep,36			#[cfg(feature = "exp-preserve-order")]37			preserve_order: preserve_order.unwrap_or(false),38		},39	)40}4142#[builtin]43pub fn builtin_manifest_yaml_doc(44	s: State,45	value: Any,46	indent_array_in_object: Option<bool>,47	quote_keys: Option<bool>,48	#[cfg(feature = "exp-preserve-order")] preserve_order: Option<bool>,49) -> Result<String> {50	manifest_yaml_ex(51		s,52		&value.0,53		&ManifestYamlOptions {54			padding: "  ",55			arr_element_padding: if indent_array_in_object.unwrap_or(false) {56				"  "57			} else {58				""59			},60			quote_keys: quote_keys.unwrap_or(true),61			#[cfg(feature = "exp-preserve-order")]62			preserve_order: preserve_order.unwrap_or(false),63		},64	)65}