mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 20:51:16 +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 flow context ? is illegal and : and - must not be followed with a space.
|
||||
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;
|
||||
}
|
||||
inline const RegEx& PlainScalarInFlow() {
|
||||
|
@@ -892,7 +892,16 @@ namespace Test
|
||||
out << YAML::EndSeq;
|
||||
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
|
||||
|
||||
void ExtraEndSeq(YAML::Emitter& out, std::string& desiredError)
|
||||
@@ -995,7 +1004,7 @@ namespace Test
|
||||
YAML::Node node;
|
||||
parser.GetNextDocument(node);
|
||||
#else
|
||||
// Parse with the new API
|
||||
// YAML::Node node = YAML::Load(output);
|
||||
#endif
|
||||
|
||||
passed++;
|
||||
@@ -1113,6 +1122,7 @@ namespace Test
|
||||
RunEmitterTest(&Emitter::SingleChar, "single char", passed, total);
|
||||
RunEmitterTest(&Emitter::DefaultPrecision, "default 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::ExtraEndMap, "extra EndMap", passed, total);
|
||||
|
Reference in New Issue
Block a user