difftreelog
feat configurable array element padding
in: master
3 files changed
crates/jrsonnet-evaluator/src/builtin/manifest.rsdiffbeforeafterboth158}158}159159160pub struct ManifestYamlOptions<'s> {160pub struct ManifestYamlOptions<'s> {161 /// Padding before fields, i.e162 /// a:163 /// b:164 /// ^^ this161 pub padding: &'s str,165 pub padding: &'s str,166 /// Padding before array elements in objects167 /// a:168 /// - 1169 /// ^^ this162 pub pad_arrays: bool,170 pub arr_element_padding: &'s str,163}171}164172165pub fn manifest_yaml_ex(val: &Val, options: &ManifestYamlOptions<'_>) -> Result<String> {173pub fn manifest_yaml_ex(val: &Val, options: &ManifestYamlOptions<'_>) -> Result<String> {252 if !a.is_empty() {260 if !a.is_empty() {253 buf.push('\n');261 buf.push('\n');254 buf.push_str(cur_padding);262 buf.push_str(cur_padding);255 if options.pad_arrays {256 buf.push_str(options.padding);263 buf.push_str(options.arr_element_padding);257 }258 } else {264 } else {259 buf.push(' ');265 buf.push(' ');260 }266 }271 }277 }272 let prev_len = cur_padding.len();278 let prev_len = cur_padding.len();273 if let Val::Arr(a) = &item {279 if let Val::Arr(a) = &item {274 if !a.is_empty() && options.pad_arrays {280 if !a.is_empty() {275 cur_padding.push_str(options.padding);281 cur_padding.push_str(options.arr_element_padding);276 }282 }277 } else if let Val::Obj(a) = &item {283 } else if let Val::Obj(a) = &item {278 if !a.is_empty() {284 if !a.is_empty() {crates/jrsonnet-evaluator/src/builtin/mod.rsdiffbeforeafterboth--- a/crates/jrsonnet-evaluator/src/builtin/mod.rs
+++ b/crates/jrsonnet-evaluator/src/builtin/mod.rs
@@ -781,7 +781,7 @@
], {
Ok(Val::Str(manifest_yaml_ex(&value, &ManifestYamlOptions {
padding: " ",
- pad_arrays: indent_array_in_object,
+ arr_element_padding: if indent_array_in_object { " " } else { "" },
})?.into()))
})
}
crates/jrsonnet-evaluator/src/val.rsdiffbeforeafterboth--- a/crates/jrsonnet-evaluator/src/val.rs
+++ b/crates/jrsonnet-evaluator/src/val.rs
@@ -553,11 +553,12 @@
}
pub fn to_yaml(&self, padding: usize) -> Result<IStr> {
+ let padding = &" ".repeat(padding);
manifest_yaml_ex(
self,
&ManifestYamlOptions {
- padding: &" ".repeat(padding),
- pad_arrays: true,
+ padding,
+ arr_element_padding: padding,
},
)
.map(|s| s.into())