mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 04:41:16 +00:00
ensuring local tags are retained after loading a node + test
This commit is contained in:
@@ -116,8 +116,13 @@ void EmitFromEvents::BeginNode() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EmitFromEvents::EmitProps(const std::string& tag, anchor_t anchor) {
|
void EmitFromEvents::EmitProps(const std::string& tag, anchor_t anchor) {
|
||||||
if (!tag.empty() && tag != "?" && tag != "!")
|
if (!tag.empty() && tag != "?" && tag != "!"){
|
||||||
|
if (tag[0] == '!') {
|
||||||
|
m_emitter << LocalTag(std::string(tag.begin()+1, tag.end()));
|
||||||
|
} else {
|
||||||
m_emitter << VerbatimTag(tag);
|
m_emitter << VerbatimTag(tag);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (anchor)
|
if (anchor)
|
||||||
m_emitter << Anchor(ToString(anchor));
|
m_emitter << Anchor(ToString(anchor));
|
||||||
}
|
}
|
||||||
|
@@ -629,6 +629,17 @@ TEST_F(EmitterTest, LocalTagWithScalar) {
|
|||||||
ExpectEmit("!foo bar");
|
ExpectEmit("!foo bar");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(EmitterTest, LocalTagRetainedAfterLoadingNode) {
|
||||||
|
Node n = Node("hello");
|
||||||
|
out << LocalTag("foo") << n;
|
||||||
|
std::string expected = "!foo hello";
|
||||||
|
ExpectEmit(expected);
|
||||||
|
Node yamlNode = Load(out.c_str());
|
||||||
|
Emitter emitter;
|
||||||
|
emitter << yamlNode;
|
||||||
|
EXPECT_EQ(expected, emitter.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(EmitterTest, ComplexDoc) {
|
TEST_F(EmitterTest, ComplexDoc) {
|
||||||
out << BeginMap;
|
out << BeginMap;
|
||||||
out << Key << "receipt";
|
out << Key << "receipt";
|
||||||
|
Reference in New Issue
Block a user