Fixed bug with omitted keys/values in a flow map

This commit is contained in:
Jesse Beder
2009-09-02 21:39:57 +00:00
parent 0d41a7de7c
commit 873ad336f8
6 changed files with 49 additions and 3 deletions

View File

@@ -37,7 +37,7 @@ namespace YAML
const RegEx Key = RegEx('?'),
KeyInFlow = RegEx('?') + BlankOrBreak;
const RegEx Value = RegEx(':') + (BlankOrBreak || RegEx()),
ValueInFlow = RegEx(':') + BlankOrBreak;
ValueInFlow = RegEx(':') + (BlankOrBreak || RegEx(",}", REGEX_OR));
const RegEx Comment = RegEx('#');
const RegEx AnchorEnd = RegEx("?:,]}%@`", REGEX_OR) || BlankOrBreak;
@@ -49,7 +49,7 @@ namespace YAML
const RegEx PlainScalar = !(BlankOrBreak || RegEx(",[]{}#&*!|>\'\"%@`", REGEX_OR) || (RegEx("-?:", REGEX_OR) + Blank)),
PlainScalarInFlow = !(BlankOrBreak || RegEx("?,[]{}#&*!|>\'\"%@`", REGEX_OR) || (RegEx("-:", REGEX_OR) + Blank));
const RegEx EndScalar = RegEx(':') + (BlankOrBreak || RegEx()),
EndScalarInFlow = (RegEx(':') + BlankOrBreak) || RegEx(",?[]{}", REGEX_OR);
EndScalarInFlow = (RegEx(':') + (BlankOrBreak || RegEx(",]}", REGEX_OR))) || RegEx(",?[]{}", REGEX_OR);
const RegEx EscSingleQuote = RegEx("\'\'");
const RegEx EscBreak = RegEx('\\') + Break;

View File

@@ -104,7 +104,7 @@ namespace YAML
// *****
// And now branch based on the next few characters!
// *****
// end of stream
if(!INPUT)
return EndStream();

View File

@@ -181,6 +181,12 @@ namespace YAML
throw ParserException(INPUT.mark(), ErrorMsg::MAP_VALUE);
PushIndentTo(INPUT.column(), IndentMarker::MAP);
} else {
// we might have an empty key, so we should add it (as a simple key)
if(m_simpleKeyAllowed) {
InsertSimpleKey();
VerifySimpleKey();
}
}
// can only put a simple key here if we're in block context