From bf07af52ff3208207e747bfeec92af22a45503d2 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Tue, 22 May 2012 14:26:34 -0500 Subject: [PATCH] Added long key --- src/emitter.cpp | 86 +++++++++++++++++++++++++----------------------- util/sandbox.cpp | 4 ++- 2 files changed, 48 insertions(+), 42 deletions(-) diff --git a/src/emitter.cpp b/src/emitter.cpp index 841ba83..59eaa56 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -358,22 +358,22 @@ namespace YAML void Emitter::BlockMapPrepareNode(EmitterNodeType::value child) { - const std::size_t childCount = m_pState->CurGroupChildCount(); - - if(childCount % 2 == 0) { - if(m_pState->GetMapKeyFormat() == LongKey || child == EmitterNodeType::BlockSeq || child == EmitterNodeType::BlockMap) - m_pState->SetLongKey(); - - if(m_pState->CurGroupLongKey()) - BlockMapPrepareLongKey(child); - else - BlockMapPrepareSimpleKey(child); - } else { - if(m_pState->CurGroupLongKey()) - BlockMapPrepareLongKeyValue(child); - else - BlockMapPrepareSimpleKeyValue(child); - } + if(m_pState->CurGroupChildCount() % 2 == 0) { + if(m_pState->GetMapKeyFormat() == LongKey) + m_pState->SetLongKey(); + if(child == EmitterNodeType::BlockSeq || child == EmitterNodeType::BlockMap) + m_pState->SetLongKey(); + + if(m_pState->CurGroupLongKey()) + BlockMapPrepareLongKey(child); + else + BlockMapPrepareSimpleKey(child); + } else { + if(m_pState->CurGroupLongKey()) + BlockMapPrepareLongKeyValue(child); + else + BlockMapPrepareSimpleKeyValue(child); + } } void Emitter::BlockMapPrepareLongKey(EmitterNodeType::value child) @@ -410,6 +410,34 @@ namespace YAML } } + void Emitter::BlockMapPrepareLongKeyValue(EmitterNodeType::value child) + { + const unsigned curIndent = m_pState->CurIndent(); + const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); + + if(child == EmitterNodeType::None) + return; + + if(!m_pState->HasBegunContent()) { + m_stream << "\n"; + m_stream << IndentTo(curIndent); + m_stream << ":"; + } + + switch(child) { + case EmitterNodeType::None: + break; + case EmitterNodeType::Property: + case EmitterNodeType::Scalar: + case EmitterNodeType::FlowSeq: + case EmitterNodeType::FlowMap: + case EmitterNodeType::BlockSeq: + case EmitterNodeType::BlockMap: + SpaceOrIndentTo(true, nextIndent); + break; + } + } + void Emitter::BlockMapPrepareSimpleKey(EmitterNodeType::value child) { const unsigned curIndent = m_pState->CurIndent(); @@ -438,31 +466,7 @@ namespace YAML break; } } - - void Emitter::BlockMapPrepareLongKeyValue(EmitterNodeType::value child) - { - const unsigned curIndent = m_pState->CurIndent(); - const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); - - if(!m_pState->HasBegunNode()) { - } - - switch(child) { - case EmitterNodeType::None: - break; - case EmitterNodeType::Property: - case EmitterNodeType::Scalar: - case EmitterNodeType::FlowSeq: - case EmitterNodeType::FlowMap: - SpaceOrIndentTo(true, nextIndent); - break; - case EmitterNodeType::BlockSeq: - case EmitterNodeType::BlockMap: - m_stream << "\n"; - break; - } - } - + void Emitter::BlockMapPrepareSimpleKeyValue(EmitterNodeType::value child) { const unsigned curIndent = m_pState->CurIndent(); diff --git a/util/sandbox.cpp b/util/sandbox.cpp index 2b617eb..6f449a2 100644 --- a/util/sandbox.cpp +++ b/util/sandbox.cpp @@ -8,7 +8,9 @@ int main() out << YAML::BeginMap; out << "a" << "b"; out << YAML::EndMap; - out << "c"; + out << YAML::BeginMap; + out << "a" << "b"; + out << YAML::EndMap; out << YAML::EndMap; std::cout << out.c_str() << "\n";