difftreelog
feat configurable array element padding
in: master
3 files changed
crates/jrsonnet-evaluator/src/builtin/manifest.rsdiffbeforeafterboth--- a/crates/jrsonnet-evaluator/src/builtin/manifest.rs
+++ b/crates/jrsonnet-evaluator/src/builtin/manifest.rs
@@ -158,8 +158,16 @@
}
pub struct ManifestYamlOptions<'s> {
+ /// Padding before fields, i.e
+ /// a:
+ /// b:
+ /// ^^ this
pub padding: &'s str,
- pub pad_arrays: bool,
+ /// Padding before array elements in objects
+ /// a:
+ /// - 1
+ /// ^^ this
+ pub arr_element_padding: &'s str,
}
pub fn manifest_yaml_ex(val: &Val, options: &ManifestYamlOptions<'_>) -> Result<String> {
@@ -252,9 +260,7 @@
if !a.is_empty() {
buf.push('\n');
buf.push_str(cur_padding);
- if options.pad_arrays {
- buf.push_str(options.padding);
- }
+ buf.push_str(options.arr_element_padding);
} else {
buf.push(' ');
}
@@ -271,8 +277,8 @@
}
let prev_len = cur_padding.len();
if let Val::Arr(a) = &item {
- if !a.is_empty() && options.pad_arrays {
- cur_padding.push_str(options.padding);
+ if !a.is_empty() {
+ cur_padding.push_str(options.arr_element_padding);
}
} else if let Val::Obj(a) = &item {
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.rsdiffbeforeafterboth553 }553 }554554555 pub fn to_yaml(&self, padding: usize) -> Result<IStr> {555 pub fn to_yaml(&self, padding: usize) -> Result<IStr> {556 let padding = &" ".repeat(padding);556 manifest_yaml_ex(557 manifest_yaml_ex(557 self,558 self,558 &ManifestYamlOptions {559 &ManifestYamlOptions {559 padding: &" ".repeat(padding),560 padding,560 pad_arrays: true,561 arr_element_padding: padding,561 },562 },562 )563 )563 .map(|s| s.into())564 .map(|s| s.into())