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.rsdiffbeforeafterboth781 ], {781 ], {782 Ok(Val::Str(manifest_yaml_ex(&value, &ManifestYamlOptions {782 Ok(Val::Str(manifest_yaml_ex(&value, &ManifestYamlOptions {783 padding: " ",783 padding: " ",784 pad_arrays: indent_array_in_object,784 arr_element_padding: if indent_array_in_object { " " } else { "" },785 })?.into()))785 })?.into()))786 })786 })787}787}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())