diff --git a/src/emitter.cpp b/src/emitter.cpp index 985f337..52b5462 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -313,12 +313,14 @@ namespace YAML void Emitter::BlockSeqPrepareNode() { const unsigned curIndent = m_pState->CurIndent(); - if(m_stream.col() > curIndent) { - m_stream << "\n"; + if(!m_pState->HasTag() && !m_pState->HasAnchor()) { + if(m_pState->CurGroupChildCount() > 0) { + m_stream << "\n"; + } + m_stream << IndentTo(curIndent); + m_stream << "-"; + m_stream << IndentTo(curIndent + m_pState->CurGroupIndent()); } - m_stream << IndentTo(curIndent); - m_stream << "-"; - m_stream << IndentTo(curIndent + m_pState->CurGroupIndent()); } void Emitter::FlowMapPrepareNode() diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index 60cb5f1..e7e5a87 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -119,6 +119,11 @@ namespace YAML return m_groups.empty() ? 0 : m_groups.top().indent; } + std::size_t EmitterState::CurGroupChildCount() const + { + return m_groups.empty() ? 0 : m_groups.top().childCount; + } + void EmitterState::ClearModifiedSettings() { m_modifiedSettings.clear(); diff --git a/src/emitterstate.h b/src/emitterstate.h index cd0a5e5..c53a4e1 100644 --- a/src/emitterstate.h +++ b/src/emitterstate.h @@ -40,6 +40,7 @@ namespace YAML GroupType::value CurGroupType() const; FlowType::value CurGroupFlowType() const; int CurGroupIndent() const; + std::size_t CurGroupChildCount() const; int CurIndent() const { return m_curIndent; } bool HasAnchor() const { return m_hasAnchor; } bool HasTag() const { return m_hasTag; }