Fix test_spec_ex7_3
This commit is contained in:
parent
ce6b057bfe
commit
b4f94fdca7
5 changed files with 51 additions and 12 deletions
|
@ -156,7 +156,7 @@ impl<T: Iterator<Item=char>> Parser<T> {
|
|||
-> Result<(), ScanError> {
|
||||
match *first_ev {
|
||||
Event::Alias => { unimplemented!() },
|
||||
Event::Scalar(ref v, style) => {
|
||||
Event::Scalar(_, _) => {
|
||||
Ok(())
|
||||
},
|
||||
Event::SequenceStart => {
|
||||
|
@ -170,7 +170,7 @@ impl<T: Iterator<Item=char>> Parser<T> {
|
|||
}
|
||||
}
|
||||
|
||||
fn load_mapping<R: EventReceiver>(&mut self, first_ev: &Event, recv: &mut R)
|
||||
fn load_mapping<R: EventReceiver>(&mut self, _first_ev: &Event, recv: &mut R)
|
||||
-> Result<(), ScanError> {
|
||||
let mut ev = try!(self.parse(recv));
|
||||
while ev != Event::MappingEnd {
|
||||
|
@ -187,11 +187,11 @@ impl<T: Iterator<Item=char>> Parser<T> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn load_sequence<R: EventReceiver>(&mut self, first_ev: &Event, recv: &mut R)
|
||||
fn load_sequence<R: EventReceiver>(&mut self, _first_ev: &Event, recv: &mut R)
|
||||
-> Result<(), ScanError> {
|
||||
let mut ev = try!(self.parse(recv));
|
||||
while ev != Event::SequenceEnd {
|
||||
let entry = try!(self.load_node(&ev, recv));
|
||||
try!(self.load_node(&ev, recv));
|
||||
|
||||
// next event
|
||||
ev = try!(self.parse(recv));
|
||||
|
@ -367,7 +367,7 @@ impl<T: Iterator<Item=char>> Parser<T> {
|
|||
self.state = State::BlockMappingFirstKey;
|
||||
Ok(Event::MappingStart)
|
||||
},
|
||||
_ => { unimplemented!(); }
|
||||
_ => { Err(ScanError::new(tok.0, "while parsing a node, did not find expected node content")) }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -474,7 +474,11 @@ impl<T: Iterator<Item=char>> Parser<T> {
|
|||
return self.parse_node(false, false);
|
||||
}
|
||||
}
|
||||
} else if (tok.1 != TokenType::FlowMappingEndToken) {
|
||||
// XXX libyaml fail ex 7.3, empty key
|
||||
} else if tok.1 == TokenType::ValueToken {
|
||||
self.state = State::FlowMappingValue;
|
||||
return Ok(Event::empty_scalar());
|
||||
} else if tok.1 != TokenType::FlowMappingEndToken {
|
||||
self.push_state(State::FlowMappingEmptyValue);
|
||||
return self.parse_node(false, false);
|
||||
}
|
||||
|
@ -494,7 +498,7 @@ impl<T: Iterator<Item=char>> Parser<T> {
|
|||
|
||||
if tok.1 == TokenType::ValueToken {
|
||||
self.skip();
|
||||
let mut tok = try!(self.peek());
|
||||
let tok = try!(self.peek());
|
||||
match tok.1 {
|
||||
TokenType::FlowEntryToken
|
||||
| TokenType::FlowMappingEndToken => { },
|
||||
|
|
|
@ -553,7 +553,7 @@ impl<T: Iterator<Item=char>> Scanner<T> {
|
|||
let mut chomping: i32 = 0;
|
||||
let mut increment: usize = 0;
|
||||
let mut indent: usize = 0;
|
||||
let mut trailing_blank: bool = false;
|
||||
let mut trailing_blank: bool;
|
||||
let mut leading_blank: bool = false;
|
||||
|
||||
let mut string = String::new();
|
||||
|
@ -742,7 +742,7 @@ impl<T: Iterator<Item=char>> Scanner<T> {
|
|||
let mut leading_break = String::new();
|
||||
let mut trailing_breaks = String::new();
|
||||
let mut whitespaces = String::new();
|
||||
let mut leading_blanks = false;
|
||||
let mut leading_blanks;
|
||||
|
||||
/* Eat the left quote. */
|
||||
self.skip();
|
||||
|
@ -820,7 +820,6 @@ impl<T: Iterator<Item=char>> Scanner<T> {
|
|||
self.skip();
|
||||
// Consume an arbitrary escape code.
|
||||
if code_length > 0 {
|
||||
let val = 0usize;
|
||||
self.lookahead(code_length);
|
||||
let mut value = 0u32;
|
||||
for i in 0..code_length {
|
||||
|
@ -840,7 +839,7 @@ impl<T: Iterator<Item=char>> Scanner<T> {
|
|||
};
|
||||
string.push(ch);
|
||||
|
||||
for i in 0..code_length {
|
||||
for _ in 0..code_length {
|
||||
self.skip();
|
||||
}
|
||||
}
|
||||
|
@ -1491,5 +1490,29 @@ key:
|
|||
next!(p, StreamEndToken);
|
||||
end!(p);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_spec_ex7_3() {
|
||||
let s =
|
||||
"
|
||||
{
|
||||
? foo :,
|
||||
: bar,
|
||||
}
|
||||
";
|
||||
let mut p = Scanner::new(s.chars());
|
||||
next!(p, StreamStartToken(..));
|
||||
next!(p, FlowMappingStartToken);
|
||||
next!(p, KeyToken);
|
||||
next_scalar!(p, TScalarStyle::Plain, "foo");
|
||||
next!(p, ValueToken);
|
||||
next!(p, FlowEntryToken);
|
||||
next!(p, ValueToken);
|
||||
next_scalar!(p, TScalarStyle::Plain, "bar");
|
||||
next!(p, FlowEntryToken);
|
||||
next!(p, FlowMappingEndToken);
|
||||
next!(p, StreamEndToken);
|
||||
end!(p);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -205,7 +205,6 @@ impl Index<usize> for Yaml {
|
|||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use parser::Parser;
|
||||
use yaml::*;
|
||||
#[test]
|
||||
fn test_coerce() {
|
||||
|
|
6
saphyr/tests/specs/libyaml_fail-01.yaml
Normal file
6
saphyr/tests/specs/libyaml_fail-01.yaml
Normal file
|
@ -0,0 +1,6 @@
|
|||
# Ex 8.18
|
||||
plain key: in-line value
|
||||
: # Both empty
|
||||
"quoted key":
|
||||
- entry
|
||||
|
7
saphyr/tests/specs/libyaml_fail-02.yaml
Normal file
7
saphyr/tests/specs/libyaml_fail-02.yaml
Normal file
|
@ -0,0 +1,7 @@
|
|||
# Ex 7.17
|
||||
{
|
||||
unqoted : "separate",
|
||||
http://foo.com,
|
||||
omitted value:,
|
||||
: omitted key,
|
||||
}
|
Loading…
Reference in a new issue