Fix tag parsing with () (#532)

This commit is contained in:
Denis Gladkikh
2018-01-28 08:18:55 -08:00
committed by Jesse Beder
parent 86ae3a5aa7
commit cfb7606a84
2 changed files with 10 additions and 4 deletions

View File

@@ -135,7 +135,7 @@ inline const RegEx& URI() {
return e; return e;
} }
inline const RegEx& Tag() { inline const RegEx& Tag() {
static const RegEx e = Word() || RegEx("#;/?:@&=+$_.~*'", REGEX_OR) || static const RegEx e = Word() || RegEx("#;/?:@&=+$_.~*'()", REGEX_OR) ||
(RegEx('%') + Hex() + Hex()); (RegEx('%') + Hex() + Hex());
return e; return e;
} }
@@ -200,7 +200,7 @@ inline const RegEx& Chomp() {
// and some functions // and some functions
std::string Escape(Stream& in); std::string Escape(Stream& in);
} } // namespace Exp
namespace Keys { namespace Keys {
const char Directive = '%'; const char Directive = '%';
@@ -216,7 +216,7 @@ const char LiteralScalar = '|';
const char FoldedScalar = '>'; const char FoldedScalar = '>';
const char VerbatimTagStart = '<'; const char VerbatimTagStart = '<';
const char VerbatimTagEnd = '>'; const char VerbatimTagEnd = '>';
} } // namespace Keys
} } // namespace YAML
#endif // EXP_H_62B23520_7C8E_11DE_8A39_0800200C9A66 #endif // EXP_H_62B23520_7C8E_11DE_8A39_0800200C9A66

View File

@@ -230,6 +230,12 @@ TEST(NodeTest, LoadTildeAsNull) {
Node node = Load("~"); Node node = Load("~");
ASSERT_TRUE(node.IsNull()); ASSERT_TRUE(node.IsNull());
} }
TEST(NodeTest, LoadTagWithParenthesis) {
Node node = Load("!Complex(Tag) foo");
EXPECT_EQ(node.Tag(), "!Complex(Tag)");
EXPECT_EQ(node.as<std::string>(), "foo");
}
} // namespace } // namespace
} // namespace YAML } // namespace YAML