mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 12:41:17 +00:00
Disallowed a plain scalar with just a dash
This commit is contained in:
@@ -137,7 +137,7 @@ namespace YAML
|
|||||||
// . In the block context - ? : must be not be followed with a space.
|
// . In the block context - ? : must be not be followed with a space.
|
||||||
// . In the flow context ? is illegal and : and - must not be followed with a space.
|
// . In the flow context ? is illegal and : and - must not be followed with a space.
|
||||||
inline const RegEx& PlainScalar() {
|
inline const RegEx& PlainScalar() {
|
||||||
static const RegEx e = !(BlankOrBreak() || RegEx(",[]{}#&*!|>\'\"%@`", REGEX_OR) || (RegEx("-?:", REGEX_OR) + Blank()));
|
static const RegEx e = !(BlankOrBreak() || RegEx(",[]{}#&*!|>\'\"%@`", REGEX_OR) || (RegEx("-?:", REGEX_OR) + (BlankOrBreak() || RegEx())));
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
inline const RegEx& PlainScalarInFlow() {
|
inline const RegEx& PlainScalarInFlow() {
|
||||||
|
@@ -892,7 +892,16 @@ namespace Test
|
|||||||
out << YAML::EndSeq;
|
out << YAML::EndSeq;
|
||||||
desiredOutput = "- 1.23\n- 3.14159";
|
desiredOutput = "- 1.23\n- 3.14159";
|
||||||
}
|
}
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
void DashInBlockContext(YAML::Emitter& out, std::string& desiredOutput)
|
||||||
|
{
|
||||||
|
out << YAML::BeginMap;
|
||||||
|
out << YAML::Key << "key" << YAML::Value << "-";
|
||||||
|
out << YAML::EndMap;
|
||||||
|
desiredOutput = "key: \"-\"";
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// incorrect emitting
|
// incorrect emitting
|
||||||
|
|
||||||
void ExtraEndSeq(YAML::Emitter& out, std::string& desiredError)
|
void ExtraEndSeq(YAML::Emitter& out, std::string& desiredError)
|
||||||
@@ -995,7 +1004,7 @@ namespace Test
|
|||||||
YAML::Node node;
|
YAML::Node node;
|
||||||
parser.GetNextDocument(node);
|
parser.GetNextDocument(node);
|
||||||
#else
|
#else
|
||||||
// Parse with the new API
|
// YAML::Node node = YAML::Load(output);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
passed++;
|
passed++;
|
||||||
@@ -1113,6 +1122,7 @@ namespace Test
|
|||||||
RunEmitterTest(&Emitter::SingleChar, "single char", passed, total);
|
RunEmitterTest(&Emitter::SingleChar, "single char", passed, total);
|
||||||
RunEmitterTest(&Emitter::DefaultPrecision, "default precision", passed, total);
|
RunEmitterTest(&Emitter::DefaultPrecision, "default precision", passed, total);
|
||||||
RunEmitterTest(&Emitter::SetPrecision, "set precision", passed, total);
|
RunEmitterTest(&Emitter::SetPrecision, "set precision", passed, total);
|
||||||
|
RunEmitterTest(&Emitter::DashInBlockContext, "dash in block context", passed, total);
|
||||||
|
|
||||||
RunEmitterErrorTest(&Emitter::ExtraEndSeq, "extra EndSeq", passed, total);
|
RunEmitterErrorTest(&Emitter::ExtraEndSeq, "extra EndSeq", passed, total);
|
||||||
RunEmitterErrorTest(&Emitter::ExtraEndMap, "extra EndMap", passed, total);
|
RunEmitterErrorTest(&Emitter::ExtraEndMap, "extra EndMap", passed, total);
|
||||||
|
Reference in New Issue
Block a user