parent
1c9abc8fa4
commit
98acc5a887
@ -504,6 +504,9 @@ void Emitter::FlowMapPrepareSimpleKeyValue(EmitterNodeType::value child) {
|
|||||||
if (m_stream.comment())
|
if (m_stream.comment())
|
||||||
m_stream << "\n";
|
m_stream << "\n";
|
||||||
m_stream << IndentTo(lastIndent);
|
m_stream << IndentTo(lastIndent);
|
||||||
|
if (m_pState->HasAlias()) {
|
||||||
|
m_stream << " ";
|
||||||
|
}
|
||||||
m_stream << ":";
|
m_stream << ":";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -643,6 +646,9 @@ void Emitter::BlockMapPrepareSimpleKeyValue(EmitterNodeType::value child) {
|
|||||||
const std::size_t nextIndent = curIndent + m_pState->CurGroupIndent();
|
const std::size_t nextIndent = curIndent + m_pState->CurGroupIndent();
|
||||||
|
|
||||||
if (!m_pState->HasBegunNode()) {
|
if (!m_pState->HasBegunNode()) {
|
||||||
|
if (m_pState->HasAlias()) {
|
||||||
|
m_stream << " ";
|
||||||
|
}
|
||||||
m_stream << ":";
|
m_stream << ":";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -864,6 +870,8 @@ Emitter& Emitter::Write(const _Alias& alias) {
|
|||||||
|
|
||||||
StartedScalar();
|
StartedScalar();
|
||||||
|
|
||||||
|
m_pState->SetAlias();
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ EmitterState::EmitterState()
|
|||||||
m_groups{},
|
m_groups{},
|
||||||
m_curIndent(0),
|
m_curIndent(0),
|
||||||
m_hasAnchor(false),
|
m_hasAnchor(false),
|
||||||
|
m_hasAlias(false),
|
||||||
m_hasTag(false),
|
m_hasTag(false),
|
||||||
m_hasNonContent(false),
|
m_hasNonContent(false),
|
||||||
m_docCount(0) {}
|
m_docCount(0) {}
|
||||||
@ -53,6 +54,8 @@ void EmitterState::SetLocalValue(EMITTER_MANIP value) {
|
|||||||
|
|
||||||
void EmitterState::SetAnchor() { m_hasAnchor = true; }
|
void EmitterState::SetAnchor() { m_hasAnchor = true; }
|
||||||
|
|
||||||
|
void EmitterState::SetAlias() { m_hasAlias = true; }
|
||||||
|
|
||||||
void EmitterState::SetTag() { m_hasTag = true; }
|
void EmitterState::SetTag() { m_hasTag = true; }
|
||||||
|
|
||||||
void EmitterState::SetNonContent() { m_hasNonContent = true; }
|
void EmitterState::SetNonContent() { m_hasNonContent = true; }
|
||||||
@ -87,6 +90,7 @@ void EmitterState::StartedNode() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_hasAnchor = false;
|
m_hasAnchor = false;
|
||||||
|
m_hasAlias = false;
|
||||||
m_hasTag = false;
|
m_hasTag = false;
|
||||||
m_hasNonContent = false;
|
m_hasNonContent = false;
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,7 @@ class EmitterState {
|
|||||||
|
|
||||||
// node handling
|
// node handling
|
||||||
void SetAnchor();
|
void SetAnchor();
|
||||||
|
void SetAlias();
|
||||||
void SetTag();
|
void SetTag();
|
||||||
void SetNonContent();
|
void SetNonContent();
|
||||||
void SetLongKey();
|
void SetLongKey();
|
||||||
@ -65,6 +66,7 @@ class EmitterState {
|
|||||||
std::size_t LastIndent() const;
|
std::size_t LastIndent() const;
|
||||||
std::size_t CurIndent() const { return m_curIndent; }
|
std::size_t CurIndent() const { return m_curIndent; }
|
||||||
bool HasAnchor() const { return m_hasAnchor; }
|
bool HasAnchor() const { return m_hasAnchor; }
|
||||||
|
bool HasAlias() const { return m_hasAlias; }
|
||||||
bool HasTag() const { return m_hasTag; }
|
bool HasTag() const { return m_hasTag; }
|
||||||
bool HasBegunNode() const {
|
bool HasBegunNode() const {
|
||||||
return m_hasAnchor || m_hasTag || m_hasNonContent;
|
return m_hasAnchor || m_hasTag || m_hasNonContent;
|
||||||
@ -187,6 +189,7 @@ class EmitterState {
|
|||||||
std::vector<std::unique_ptr<Group>> m_groups;
|
std::vector<std::unique_ptr<Group>> m_groups;
|
||||||
std::size_t m_curIndent;
|
std::size_t m_curIndent;
|
||||||
bool m_hasAnchor;
|
bool m_hasAnchor;
|
||||||
|
bool m_hasAlias;
|
||||||
bool m_hasTag;
|
bool m_hasTag;
|
||||||
bool m_hasNonContent;
|
bool m_hasNonContent;
|
||||||
std::size_t m_docCount;
|
std::size_t m_docCount;
|
||||||
|
@ -430,6 +430,21 @@ TEST_F(EmitterTest, AliasAndAnchor) {
|
|||||||
ExpectEmit("- &fred\n name: Fred\n age: 42\n- *fred");
|
ExpectEmit("- &fred\n name: Fred\n age: 42\n- *fred");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(EmitterTest, AliasOnKey) {
|
||||||
|
out << BeginSeq;
|
||||||
|
out << Anchor("name") << "Name";
|
||||||
|
out << BeginMap;
|
||||||
|
out << Key << Alias("name") << Value << "Fred";
|
||||||
|
out << EndMap;
|
||||||
|
out << Flow << BeginMap;
|
||||||
|
out << Key << Alias("name") << Value << "Mike";
|
||||||
|
out << EndMap;
|
||||||
|
out << EndSeq;
|
||||||
|
ExpectEmit(R"(- &name Name
|
||||||
|
- *name : Fred
|
||||||
|
- {*name : Mike})");
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(EmitterTest, AliasAndAnchorWithNull) {
|
TEST_F(EmitterTest, AliasAndAnchorWithNull) {
|
||||||
out << BeginSeq;
|
out << BeginSeq;
|
||||||
out << Anchor("fred") << Null;
|
out << Anchor("fred") << Null;
|
||||||
|
Loading…
Reference in New Issue
Block a user