Allow delimiter quotes at the end of multiline strings (#393)
TOML allows (unlike many other formats) up to 2 additonal quotes that are part of the string: basic = """2 extra quotes -->""""" literal = '''here too '''' Changed in TOML v1.0.0-rc.1 See also #392
This commit is contained in:
parent
b84615a24c
commit
af05f537d8
|
@ -334,7 +334,7 @@ impl<'a> Tokenizer<'a> {
|
||||||
return Err(Error::NewlineInString(i));
|
return Err(Error::NewlineInString(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Some((i, ch)) if ch == delim => {
|
Some((mut i, ch)) if ch == delim => {
|
||||||
if multiline {
|
if multiline {
|
||||||
if !self.eatc(delim) {
|
if !self.eatc(delim) {
|
||||||
val.push(delim);
|
val.push(delim);
|
||||||
|
@ -345,6 +345,14 @@ impl<'a> Tokenizer<'a> {
|
||||||
val.push(delim);
|
val.push(delim);
|
||||||
continue 'outer;
|
continue 'outer;
|
||||||
}
|
}
|
||||||
|
if self.eatc(delim) {
|
||||||
|
val.push(delim);
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
if self.eatc(delim) {
|
||||||
|
val.push(delim);
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return Ok(String {
|
return Ok(String {
|
||||||
src: &self.input[start..self.current()],
|
src: &self.input[start..self.current()],
|
||||||
|
|
|
@ -389,3 +389,9 @@ test!(
|
||||||
include_str!("valid/float-exponent.toml"),
|
include_str!("valid/float-exponent.toml"),
|
||||||
include_str!("valid/float-exponent.json")
|
include_str!("valid/float-exponent.json")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
test!(
|
||||||
|
string_delim_end,
|
||||||
|
include_str!("valid/string-delim-end.toml"),
|
||||||
|
include_str!("valid/string-delim-end.json")
|
||||||
|
);
|
||||||
|
|
14
test-suite/tests/valid/string-delim-end.json
Normal file
14
test-suite/tests/valid/string-delim-end.json
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"str1": {
|
||||||
|
"type": "string",
|
||||||
|
"value": "\"This,\" she said, \"is just a pointless statement.\""
|
||||||
|
},
|
||||||
|
"str2": {
|
||||||
|
"type": "string",
|
||||||
|
"value": "foo''bar''"
|
||||||
|
},
|
||||||
|
"str3": {
|
||||||
|
"type": "string",
|
||||||
|
"value": "\"\""
|
||||||
|
}
|
||||||
|
}
|
3
test-suite/tests/valid/string-delim-end.toml
Normal file
3
test-suite/tests/valid/string-delim-end.toml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
str1 = """"This," she said, "is just a pointless statement.""""
|
||||||
|
str2 = '''foo''bar'''''
|
||||||
|
str3 = """"""""
|
Loading…
Reference in a new issue