diff --git a/src/emitter.cpp b/src/emitter.cpp index ff97616..c89ed65 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -181,6 +181,8 @@ namespace YAML if(m_stream.col() > 0) m_stream << "\n"; m_stream << "---\n"; + + m_pState->StartedDoc(); } // EmitEndDoc @@ -313,7 +315,7 @@ namespace YAML void Emitter::PrepareTopNode(EmitterNodeType::value child) { - if(m_pState->CurGroupChildCount() > 0 && m_stream.pos() > 0) { + if(m_pState->CurGroupChildCount() > 0 && m_stream.col() > 0) { if(child != EmitterNodeType::None) EmitBeginDoc(); } diff --git a/src/emitterstate.cpp b/src/emitterstate.cpp index 11c33c7..9642179 100644 --- a/src/emitterstate.cpp +++ b/src/emitterstate.cpp @@ -111,6 +111,20 @@ namespace YAML return EmitterNodeType::None; } + void EmitterState::StartedDoc() + { + m_hasAnchor = false; + m_hasTag = false; + m_hasNonContent = false; + } + + void EmitterState::EndedDoc() + { + m_hasAnchor = false; + m_hasTag = false; + m_hasNonContent = false; + } + void EmitterState::StartedScalar() { StartedNode(); diff --git a/src/emitterstate.h b/src/emitterstate.h index cf48ce0..f43f471 100644 --- a/src/emitterstate.h +++ b/src/emitterstate.h @@ -39,6 +39,8 @@ namespace YAML void SetNonContent(); void SetLongKey(); void ForceFlow(); + void StartedDoc(); + void EndedDoc(); void StartedScalar(); void StartedGroup(GroupType::value type); void EndedGroup(GroupType::value type);