Allow serializing keys with \n in them
Use special quoted form Closes https://github.com/alexcrichton/toml-rs/issues/185
This commit is contained in:
parent
4e246b2142
commit
bad367cab0
|
@ -107,9 +107,6 @@ pub enum Error {
|
|||
/// attempted where the key of a map was not a string.
|
||||
KeyNotString,
|
||||
|
||||
/// Keys in maps are not allowed to have newlines.
|
||||
KeyNewline,
|
||||
|
||||
/// Arrays in TOML must have a homogenous type, but a heterogeneous array
|
||||
/// was emitted.
|
||||
ArrayMixedType,
|
||||
|
@ -624,9 +621,6 @@ impl<'a, 'b> ser::SerializeMap for SerializeTable<'a, 'b> {
|
|||
SerializeTable::Table { ref mut key, .. } => {
|
||||
key.truncate(0);
|
||||
*key = input.serialize(StringExtractor)?;
|
||||
if key.contains('\n') {
|
||||
return Err(Error::KeyNewline)
|
||||
}
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
|
@ -1047,7 +1041,6 @@ impl fmt::Display for Error {
|
|||
match *self {
|
||||
Error::UnsupportedType => "unsupported Rust type".fmt(f),
|
||||
Error::KeyNotString => "map key was not a string".fmt(f),
|
||||
Error::KeyNewline => "map keys cannot contain newlines".fmt(f),
|
||||
Error::ArrayMixedType => "arrays cannot have mixed types".fmt(f),
|
||||
Error::ValueAfterTable => "values must be emitted before tables".fmt(f),
|
||||
Error::DateInvalid => "a serialized date was invalid".fmt(f),
|
||||
|
@ -1064,7 +1057,6 @@ impl error::Error for Error {
|
|||
match *self {
|
||||
Error::UnsupportedType => "unsupported Rust type",
|
||||
Error::KeyNotString => "map key was not a string",
|
||||
Error::KeyNewline => "map keys cannot contain newlines",
|
||||
Error::ArrayMixedType => "arrays cannot have mixed types",
|
||||
Error::ValueAfterTable => "values must be emitted before tables",
|
||||
Error::DateInvalid => "a serialized date was invalid",
|
||||
|
|
|
@ -193,6 +193,9 @@ test!(example_bom,
|
|||
test!(datetime_truncate,
|
||||
include_str!("valid/datetime-truncate.toml"),
|
||||
include_str!("valid/datetime-truncate.json"));
|
||||
test!(key_quote_newline,
|
||||
include_str!("valid/key-quote-newline.toml"),
|
||||
include_str!("valid/key-quote-newline.json"));
|
||||
test!(table_array_nest_no_keys,
|
||||
include_str!("valid/table-array-nest-no-keys.toml"),
|
||||
include_str!("valid/table-array-nest-no-keys.json"));
|
||||
|
|
3
tests/valid/key-quote-newline.json
Normal file
3
tests/valid/key-quote-newline.json
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"\n": {"type": "integer", "value": "1"}
|
||||
}
|
1
tests/valid/key-quote-newline.toml
Normal file
1
tests/valid/key-quote-newline.toml
Normal file
|
@ -0,0 +1 @@
|
|||
"\n" = 1
|
Loading…
Reference in a new issue