Merge pull request #207 from vitiral/array-spaces

add spaces between array items and test for them
This commit is contained in:
Alex Crichton 2017-08-13 18:15:41 -05:00 committed by GitHub
commit 8554fda201
2 changed files with 65 additions and 4 deletions

View file

@ -628,12 +628,25 @@ impl<'a> Serializer<'a> {
} }
match *state { match *state {
State::Table { first, .. } | State::Table { first, .. } => {
State::Array { parent: &State::Table { first, .. }, .. } => {
if !first.get() { if !first.get() {
self.dst.push_str("\n"); // Newline if we are a table that is not the first
// table in the document.
self.dst.push('\n');
} }
} },
State::Array { parent, first, .. } => {
if !first.get() {
// Always newline if we are not the first item in the
// table-array
self.dst.push('\n');
} else if let State::Table { first, .. } = *parent {
if !first.get() {
// Newline if we are not the first item in the document
self.dst.push('\n');
}
}
},
_ => {} _ => {}
} }
self.dst.push_str("["); self.dst.push_str("[");

View file

@ -212,3 +212,51 @@ fn pretty_tricky() {
println!("\nRESULT:\n{}", result); println!("\nRESULT:\n{}", result);
assert_eq!(toml, &result); assert_eq!(toml, &result);
} }
const PRETTY_TABLE_ARRAY: &'static str = r##"[[array]]
key = 'foo'
[[array]]
key = 'bar'
[abc]
doc = 'this is a table'
[example]
single = 'this is a single line string'
"##;
#[test]
fn pretty_table_array() {
let toml = PRETTY_TABLE_ARRAY;
let value: toml::Value = toml::from_str(toml).unwrap();
let mut result = String::with_capacity(128);
value.serialize(&mut toml::Serializer::pretty(&mut result)).unwrap();
println!("EXPECTED:\n{}", toml);
println!("\nRESULT:\n{}", result);
assert_eq!(toml, &result);
}
const TABLE_ARRAY: &'static str = r##"[[array]]
key = "foo"
[[array]]
key = "bar"
[abc]
doc = "this is a table"
[example]
single = "this is a single line string"
"##;
#[test]
fn table_array() {
let toml = TABLE_ARRAY;
let value: toml::Value = toml::from_str(toml).unwrap();
let mut result = String::with_capacity(128);
value.serialize(&mut toml::Serializer::new(&mut result)).unwrap();
println!("EXPECTED:\n{}", toml);
println!("\nRESULT:\n{}", result);
assert_eq!(toml, &result);
}