diff options
author | osboxes.org <anders.forsgren@gmail.com> | 2015-10-07 11:35:49 +0200 |
---|---|---|
committer | osboxes.org <anders.forsgren@gmail.com> | 2015-10-07 11:35:49 +0200 |
commit | dea8646b8b98583d15528031138682d1ac9ada85 (patch) | |
tree | 0649ef3ba81f8db77c18139e6c6100bb6fc50745 | |
parent | 96c6cd94ec32fb58603764ba33e19319a3165d75 (diff) | |
download | milf-rs-dea8646b8b98583d15528031138682d1ac9ada85.tar.gz milf-rs-dea8646b8b98583d15528031138682d1ac9ada85.zip |
Allow BOM (Byte order mark) in toml
-rw-r--r-- | src/parser.rs | 9 | ||||
-rw-r--r-- | tests/valid.rs | 3 | ||||
-rw-r--r-- | tests/valid/example-bom.toml | 5 |
3 files changed, 17 insertions, 0 deletions
diff --git a/src/parser.rs b/src/parser.rs index 394465f..190454c 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -190,6 +190,14 @@ impl<'a> Parser<'a> { false } + // Consumes a BOM (Byte Order Mark) if one is next + fn bom(&mut self) -> bool { + match self.peek(0) { + Some((_, '\u{feff}')) => { self.cur.next(); true } + _ => false + } + } + // Consumes whitespace ('\t' and ' ') until another character (or EOF) is // reached. Returns if any whitespace was consumed fn ws(&mut self) -> bool { @@ -234,6 +242,7 @@ impl<'a> Parser<'a> { /// to determine the cause of the parse failure. pub fn parse(&mut self) -> Option<super::Table> { let mut ret = TomlTable { values: BTreeMap::new(), defined: false }; + self.bom(); while self.peek(0).is_some() { self.ws(); if self.newline() { continue } diff --git a/tests/valid.rs b/tests/valid.rs index 568518b..f346781 100644 --- a/tests/valid.rs +++ b/tests/valid.rs @@ -178,3 +178,6 @@ test!(example3, test!(example4, include_str!("valid/example-v0.4.0.toml"), include_str!("valid/example-v0.4.0.json")); +test!(example_bom, + include_str!("valid/example-bom.toml"), + include_str!("valid/example.json")); diff --git a/tests/valid/example-bom.toml b/tests/valid/example-bom.toml new file mode 100644 index 0000000..fb5ac81 --- /dev/null +++ b/tests/valid/example-bom.toml @@ -0,0 +1,5 @@ +best-day-ever = 1987-07-05T17:45:00Z + +[numtheory] +boring = false +perfection = [6, 28, 496] |