add spaces between array items and test for them
This commit is contained in:
parent
ea0c2296e6
commit
76f11f2033
21
src/ser.rs
21
src/ser.rs
|
@ -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("[");
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue