Fix escaping anchors in keys (#1101)
This commit is contained in:
parent
4c982d59dc
commit
13626af92a
@ -176,11 +176,11 @@ bool IsValidPlainScalar(const std::string& str, FlowType::value flowType,
|
|||||||
static const RegEx& disallowed_flow =
|
static const RegEx& disallowed_flow =
|
||||||
Exp::EndScalarInFlow() | (Exp::BlankOrBreak() + Exp::Comment()) |
|
Exp::EndScalarInFlow() | (Exp::BlankOrBreak() + Exp::Comment()) |
|
||||||
Exp::NotPrintable() | Exp::Utf8_ByteOrderMark() | Exp::Break() |
|
Exp::NotPrintable() | Exp::Utf8_ByteOrderMark() | Exp::Break() |
|
||||||
Exp::Tab();
|
Exp::Tab() | Exp::Ampersand();
|
||||||
static const RegEx& disallowed_block =
|
static const RegEx& disallowed_block =
|
||||||
Exp::EndScalar() | (Exp::BlankOrBreak() + Exp::Comment()) |
|
Exp::EndScalar() | (Exp::BlankOrBreak() + Exp::Comment()) |
|
||||||
Exp::NotPrintable() | Exp::Utf8_ByteOrderMark() | Exp::Break() |
|
Exp::NotPrintable() | Exp::Utf8_ByteOrderMark() | Exp::Break() |
|
||||||
Exp::Tab();
|
Exp::Tab() | Exp::Ampersand();
|
||||||
const RegEx& disallowed =
|
const RegEx& disallowed =
|
||||||
flowType == FlowType::Flow ? disallowed_flow : disallowed_block;
|
flowType == FlowType::Flow ? disallowed_flow : disallowed_block;
|
||||||
|
|
||||||
|
@ -117,6 +117,10 @@ inline const RegEx& ValueInJSONFlow() {
|
|||||||
static const RegEx e = RegEx(':');
|
static const RegEx e = RegEx(':');
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
inline const RegEx& Ampersand() {
|
||||||
|
static const RegEx e = RegEx('&');
|
||||||
|
return e;
|
||||||
|
}
|
||||||
inline const RegEx Comment() {
|
inline const RegEx Comment() {
|
||||||
static const RegEx e = RegEx('#');
|
static const RegEx e = RegEx('#');
|
||||||
return e;
|
return e;
|
||||||
|
@ -1624,6 +1624,15 @@ NodeB:
|
|||||||
k: [*k0, *k1])");
|
k: [*k0, *k1])");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(EmitterTest, AnchorEncoding) {
|
||||||
|
Node node;
|
||||||
|
node["--- &$ [*$]1"] = 1;
|
||||||
|
out << node;
|
||||||
|
ExpectEmit("\"--- &$ [*$]1\": 1");
|
||||||
|
Node reparsed = YAML::Load(out.c_str());
|
||||||
|
EXPECT_EQ(reparsed["--- &$ [*$]1"].as<int>(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
class EmitterErrorTest : public ::testing::Test {
|
class EmitterErrorTest : public ::testing::Test {
|
||||||
protected:
|
protected:
|
||||||
void ExpectEmitError(const std::string& expectedError) {
|
void ExpectEmitError(const std::string& expectedError) {
|
||||||
@ -1694,5 +1703,6 @@ TEST_F(EmitterErrorTest, InvalidAlias) {
|
|||||||
|
|
||||||
ExpectEmitError(ErrorMsg::INVALID_ALIAS);
|
ExpectEmitError(ErrorMsg::INVALID_ALIAS);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
} // namespace YAML
|
} // namespace YAML
|
||||||
|
Loading…
Reference in New Issue
Block a user