Commit bf07af52 authored by Jesse Beder's avatar Jesse Beder
Browse files

Added long key

parent 41e4cd33
...@@ -358,22 +358,22 @@ namespace YAML ...@@ -358,22 +358,22 @@ namespace YAML
void Emitter::BlockMapPrepareNode(EmitterNodeType::value child) void Emitter::BlockMapPrepareNode(EmitterNodeType::value child)
{ {
const std::size_t childCount = m_pState->CurGroupChildCount(); if(m_pState->CurGroupChildCount() % 2 == 0) {
if(m_pState->GetMapKeyFormat() == LongKey)
if(childCount % 2 == 0) { m_pState->SetLongKey();
if(m_pState->GetMapKeyFormat() == LongKey || child == EmitterNodeType::BlockSeq || child == EmitterNodeType::BlockMap) if(child == EmitterNodeType::BlockSeq || child == EmitterNodeType::BlockMap)
m_pState->SetLongKey(); m_pState->SetLongKey();
if(m_pState->CurGroupLongKey()) if(m_pState->CurGroupLongKey())
BlockMapPrepareLongKey(child); BlockMapPrepareLongKey(child);
else else
BlockMapPrepareSimpleKey(child); BlockMapPrepareSimpleKey(child);
} else { } else {
if(m_pState->CurGroupLongKey()) if(m_pState->CurGroupLongKey())
BlockMapPrepareLongKeyValue(child); BlockMapPrepareLongKeyValue(child);
else else
BlockMapPrepareSimpleKeyValue(child); BlockMapPrepareSimpleKeyValue(child);
} }
} }
void Emitter::BlockMapPrepareLongKey(EmitterNodeType::value child) void Emitter::BlockMapPrepareLongKey(EmitterNodeType::value child)
...@@ -410,18 +410,18 @@ namespace YAML ...@@ -410,18 +410,18 @@ namespace YAML
} }
} }
void Emitter::BlockMapPrepareSimpleKey(EmitterNodeType::value child) void Emitter::BlockMapPrepareLongKeyValue(EmitterNodeType::value child)
{ {
const unsigned curIndent = m_pState->CurIndent(); const unsigned curIndent = m_pState->CurIndent();
const std::size_t childCount = m_pState->CurGroupChildCount(); const unsigned nextIndent = curIndent + m_pState->CurGroupIndent();
if(child == EmitterNodeType::None) if(child == EmitterNodeType::None)
return; return;
if(!m_pState->HasBegunNode()) { if(!m_pState->HasBegunContent()) {
if(childCount > 0) { m_stream << "\n";
m_stream << "\n"; m_stream << IndentTo(curIndent);
} m_stream << ":";
} }
switch(child) { switch(child) {
...@@ -431,20 +431,25 @@ namespace YAML ...@@ -431,20 +431,25 @@ namespace YAML
case EmitterNodeType::Scalar: case EmitterNodeType::Scalar:
case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowSeq:
case EmitterNodeType::FlowMap: case EmitterNodeType::FlowMap:
SpaceOrIndentTo(m_pState->HasBegunContent(), curIndent);
break;
case EmitterNodeType::BlockSeq: case EmitterNodeType::BlockSeq:
case EmitterNodeType::BlockMap: case EmitterNodeType::BlockMap:
SpaceOrIndentTo(true, nextIndent);
break; break;
} }
} }
void Emitter::BlockMapPrepareLongKeyValue(EmitterNodeType::value child) void Emitter::BlockMapPrepareSimpleKey(EmitterNodeType::value child)
{ {
const unsigned curIndent = m_pState->CurIndent(); const unsigned curIndent = m_pState->CurIndent();
const unsigned nextIndent = curIndent + m_pState->CurGroupIndent(); const std::size_t childCount = m_pState->CurGroupChildCount();
if(child == EmitterNodeType::None)
return;
if(!m_pState->HasBegunNode()) { if(!m_pState->HasBegunNode()) {
if(childCount > 0) {
m_stream << "\n";
}
} }
switch(child) { switch(child) {
...@@ -454,15 +459,14 @@ namespace YAML ...@@ -454,15 +459,14 @@ namespace YAML
case EmitterNodeType::Scalar: case EmitterNodeType::Scalar:
case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowSeq:
case EmitterNodeType::FlowMap: case EmitterNodeType::FlowMap:
SpaceOrIndentTo(true, nextIndent); SpaceOrIndentTo(m_pState->HasBegunContent(), curIndent);
break; break;
case EmitterNodeType::BlockSeq: case EmitterNodeType::BlockSeq:
case EmitterNodeType::BlockMap: case EmitterNodeType::BlockMap:
m_stream << "\n";
break; break;
} }
} }
void Emitter::BlockMapPrepareSimpleKeyValue(EmitterNodeType::value child) void Emitter::BlockMapPrepareSimpleKeyValue(EmitterNodeType::value child)
{ {
const unsigned curIndent = m_pState->CurIndent(); const unsigned curIndent = m_pState->CurIndent();
......
...@@ -8,7 +8,9 @@ int main() ...@@ -8,7 +8,9 @@ int main()
out << YAML::BeginMap; out << YAML::BeginMap;
out << "a" << "b"; out << "a" << "b";
out << YAML::EndMap; out << YAML::EndMap;
out << "c"; out << YAML::BeginMap;
out << "a" << "b";
out << YAML::EndMap;
out << YAML::EndMap; out << YAML::EndMap;
std::cout << out.c_str() << "\n"; std::cout << out.c_str() << "\n";
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment