Commit 1da813f5 by IMaloney Committed by Jesse Beder

ensuring local tags are retained after loading a node + test

parent f878043f
......@@ -116,8 +116,13 @@ void EmitFromEvents::BeginNode() {
}
void EmitFromEvents::EmitProps(const std::string& tag, anchor_t anchor) {
if (!tag.empty() && tag != "?" && tag != "!")
m_emitter << VerbatimTag(tag);
if (!tag.empty() && tag != "?" && tag != "!"){
if (tag[0] == '!') {
m_emitter << LocalTag(std::string(tag.begin()+1, tag.end()));
} else {
m_emitter << VerbatimTag(tag);
}
}
if (anchor)
m_emitter << Anchor(ToString(anchor));
}
......
......@@ -629,6 +629,17 @@ TEST_F(EmitterTest, LocalTagWithScalar) {
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) {
out << BeginMap;
out << Key << "receipt";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment