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.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.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())