mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-08 04:11:17 +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) {
|
||||
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";
|
||||
|
Reference in New Issue
Block a user