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 /src | |
| parent | 96c6cd94ec32fb58603764ba33e19319a3165d75 (diff) | |
| download | milf-rs-dea8646b8b98583d15528031138682d1ac9ada85.tar.gz milf-rs-dea8646b8b98583d15528031138682d1ac9ada85.zip | |
Allow BOM (Byte order mark) in toml
Diffstat (limited to 'src')
| -rw-r--r-- | src/parser.rs | 9 | 
1 files changed, 9 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 } |