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}