From 4e8985601f2f8e410a11f3eb9e2a67cd29572343 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 5 Feb 2024 16:10:25 -0600 Subject: [PATCH] fix(edit): Don't include decor in Key's Display --- crates/toml_edit/src/encode.rs | 61 +++++++++++++++------------------- crates/toml_edit/src/key.rs | 2 +- 2 files changed, 28 insertions(+), 35 deletions(-) diff --git a/crates/toml_edit/src/encode.rs b/crates/toml_edit/src/encode.rs index 1339d1c4..8cc8e78b 100644 --- a/crates/toml_edit/src/encode.rs +++ b/crates/toml_edit/src/encode.rs @@ -13,15 +13,7 @@ use crate::value::{ }; use crate::{Array, InlineTable, Item, Table, Value}; -pub(crate) fn encode_key( - this: &Key, - buf: &mut dyn Write, - input: Option<&str>, - default_decor: (&str, &str), -) -> Result { - let decor = this.decor(); - decor.prefix_encode(buf, input, default_decor.0)?; - +pub(crate) fn encode_key(this: &Key, buf: &mut dyn Write, input: Option<&str>) -> Result { if let Some(input) = input { let repr = this .as_repr() @@ -33,7 +25,6 @@ pub(crate) fn encode_key( write!(buf, "{}", repr)?; }; - decor.suffix_encode(buf, input, default_decor.1)?; Ok(()) } @@ -44,24 +35,25 @@ fn encode_key_path( default_decor: (&str, &str), ) -> Result { for (i, key) in this.iter().enumerate() { + let decor = key.decor(); + let first = i == 0; let last = i + 1 == this.len(); - let prefix = if first { - default_decor.0 - } else { - DEFAULT_KEY_PATH_DECOR.0 - }; - let suffix = if last { - default_decor.1 + if first { + decor.prefix_encode(buf, input, default_decor.0)?; } else { - DEFAULT_KEY_PATH_DECOR.1 - }; - - if !first { write!(buf, ".")?; + decor.prefix_encode(buf, input, DEFAULT_KEY_PATH_DECOR.0)?; + } + + encode_key(key, buf, input)?; + + if last { + decor.suffix_encode(buf, input, default_decor.1)?; + } else { + decor.suffix_encode(buf, input, DEFAULT_KEY_PATH_DECOR.1)?; } - encode_key(key, buf, input, (prefix, suffix))?; } Ok(()) } @@ -73,24 +65,25 @@ pub(crate) fn encode_key_path_ref( default_decor: (&str, &str), ) -> Result { for (i, key) in this.iter().enumerate() { + let decor = key.decor(); + let first = i == 0; let last = i + 1 == this.len(); - let prefix = if first { - default_decor.0 - } else { - DEFAULT_KEY_PATH_DECOR.0 - }; - let suffix = if last { - default_decor.1 + if first { + decor.prefix_encode(buf, input, default_decor.0)?; } else { - DEFAULT_KEY_PATH_DECOR.1 - }; - - if !first { write!(buf, ".")?; + decor.prefix_encode(buf, input, DEFAULT_KEY_PATH_DECOR.0)?; + } + + encode_key(key, buf, input)?; + + if last { + decor.suffix_encode(buf, input, default_decor.1)?; + } else { + decor.suffix_encode(buf, input, DEFAULT_KEY_PATH_DECOR.1)?; } - encode_key(key, buf, input, (prefix, suffix))?; } Ok(()) } diff --git a/crates/toml_edit/src/key.rs b/crates/toml_edit/src/key.rs index 27132edc..14e1cd1e 100644 --- a/crates/toml_edit/src/key.rs +++ b/crates/toml_edit/src/key.rs @@ -214,7 +214,7 @@ impl PartialEq for Key { #[cfg(feature = "display")] impl std::fmt::Display for Key { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - crate::encode::encode_key(self, f, None, ("", "")) + crate::encode::encode_key(self, f, None) } }