update the solution and testcase for issue740/899

This commit is contained in:
dota17 2020-07-02 11:45:55 +08:00
parent a62add807c
commit 8a63256267
3 changed files with 23 additions and 20 deletions

View File

@ -110,7 +110,7 @@ inline const RegEx& Value() {
return e; return e;
} }
inline const RegEx& ValueInFlow() { inline const RegEx& ValueInFlow() {
static const RegEx e = RegEx(':') + (BlankOrBreak() | RegEx(",}", REGEX_OR)); static const RegEx e = RegEx(':') + (BlankOrBreak() | RegEx(",]}", REGEX_OR));
return e; return e;
} }
inline const RegEx& ValueInJSONFlow() { inline const RegEx& ValueInJSONFlow() {
@ -164,7 +164,8 @@ inline const RegEx& EndScalar() {
} }
inline const RegEx& EndScalarInFlow() { inline const RegEx& EndScalarInFlow() {
static const RegEx e = static const RegEx e =
(RegEx(':') + (BlankOrBreak() | RegEx())) | RegEx(",?[]{}", REGEX_OR); (RegEx(':') + (BlankOrBreak() | RegEx() | RegEx(",]}", REGEX_OR))) |
RegEx(",?[]{}", REGEX_OR);
return e; return e;
} }

View File

@ -274,14 +274,16 @@ struct SingleNodeTestCase {
TEST(NodeTest, SpecialFlow) { TEST(NodeTest, SpecialFlow) {
std::vector<SingleNodeTestCase> tests = { std::vector<SingleNodeTestCase> tests = {
{"[,]", NodeType::Sequence, 1, "[~]"}, {"[:]", NodeType::Sequence, 1, "[{~: ~}]"},
{"[a:]", NodeType::Sequence, 1, "[\"a:\"]"}, {"[a:]", NodeType::Sequence, 1, "[{a: ~}]"},
{"[:a]", NodeType::Sequence, 1, "[:a]"}, {"[:a]", NodeType::Sequence, 1, "[:a]"},
{"[:]", NodeType::Sequence, 1, "[\":\"]"}, {"[,]", NodeType::Sequence, 1, "[~]"},
{"[a:,]", NodeType::Sequence, 1, "[{a: ~}]"},
{"{:}", NodeType::Map, 1, "{~: ~}"}, {"{:}", NodeType::Map, 1, "{~: ~}"},
{"{,}", NodeType::Map, 1, "{~: ~}"}, {"{a:}", NodeType::Map, 1, "{a: ~}"},
{"{a:}", NodeType::Map, 1, "{\"a:\": ~}"},
{"{:a}", NodeType::Map, 1, "{:a: ~}"}, {"{:a}", NodeType::Map, 1, "{:a: ~}"},
{"{,}", NodeType::Map, 1, "{~: ~}"},
{"{a:,}", NodeType::Map, 1, "{a: ~}"},
}; };
for (const SingleNodeTestCase& test : tests) { for (const SingleNodeTestCase& test : tests) {
Node node = Load(test.input); Node node = Load(test.input);