Fixed map/value

This commit is contained in:
Jesse Beder
2012-05-21 23:47:57 -05:00
parent f72e325c40
commit 0f3f1e26a7
3 changed files with 16 additions and 24 deletions

View File

@@ -299,7 +299,7 @@ namespace YAML
case EmitterNodeType::FlowMap: case EmitterNodeType::FlowMap:
// TODO: if we were writing null, and // TODO: if we were writing null, and
// we wanted it blank, we wouldn't want a space // we wanted it blank, we wouldn't want a space
if(m_pState->HasBegunNode()) if(m_pState->HasBegunContent())
m_stream << " "; m_stream << " ";
break; break;
case EmitterNodeType::BlockSeq: case EmitterNodeType::BlockSeq:
@@ -332,16 +332,16 @@ namespace YAML
case EmitterNodeType::Scalar: case EmitterNodeType::Scalar:
case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowSeq:
case EmitterNodeType::FlowMap: case EmitterNodeType::FlowMap:
if(m_stream.col() < nextIndent) if(m_pState->HasBegunContent())
m_stream << IndentTo(nextIndent);
else
m_stream << " "; m_stream << " ";
else
m_stream << IndentTo(nextIndent);
break; break;
case EmitterNodeType::BlockSeq: case EmitterNodeType::BlockSeq:
m_stream << "\n"; m_stream << "\n";
break; break;
case EmitterNodeType::BlockMap: case EmitterNodeType::BlockMap:
if(m_pState->HasBegunNode()) if(m_pState->HasBegunContent())
m_stream << "\n"; m_stream << "\n";
break; break;
} }
@@ -381,10 +381,10 @@ namespace YAML
case EmitterNodeType::Scalar: case EmitterNodeType::Scalar:
case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowSeq:
case EmitterNodeType::FlowMap: case EmitterNodeType::FlowMap:
if(m_stream.col() < curIndent) if(m_pState->HasBegunContent())
m_stream << IndentTo(curIndent);
else
m_stream << " "; m_stream << " ";
else
m_stream << IndentTo(curIndent);
break; break;
case EmitterNodeType::BlockSeq: case EmitterNodeType::BlockSeq:
case EmitterNodeType::BlockMap: case EmitterNodeType::BlockMap:
@@ -397,10 +397,7 @@ namespace YAML
case EmitterNodeType::Scalar: case EmitterNodeType::Scalar:
case EmitterNodeType::FlowSeq: case EmitterNodeType::FlowSeq:
case EmitterNodeType::FlowMap: case EmitterNodeType::FlowMap:
if(m_stream.col() < nextIndent) m_stream << " ";
m_stream << IndentTo(nextIndent);
else
m_stream << " ";
break; break;
case EmitterNodeType::BlockSeq: case EmitterNodeType::BlockSeq:
case EmitterNodeType::BlockMap: case EmitterNodeType::BlockMap:

View File

@@ -31,7 +31,7 @@ namespace YAML
// basic state checking // basic state checking
bool good() const { return m_isGood; } bool good() const { return m_isGood; }
const std::string GetLastError() const { return m_lastError; } const std::string GetLastError() const { return m_lastError; }
void SetError(const std::string& error) { throw std::runtime_error(error); m_isGood = false; m_lastError = error; } void SetError(const std::string& error) { m_isGood = false; m_lastError = error; }
// node handling // node handling
void SetAnchor(); void SetAnchor();
@@ -53,6 +53,7 @@ namespace YAML
bool HasAnchor() const { return m_hasAnchor; } bool HasAnchor() const { return m_hasAnchor; }
bool HasTag() const { return m_hasTag; } bool HasTag() const { return m_hasTag; }
bool HasBegunNode() const { return m_hasAnchor || m_hasTag || m_hasNonContent; } bool HasBegunNode() const { return m_hasAnchor || m_hasTag || m_hasNonContent; }
bool HasBegunContent() const { return m_hasAnchor || m_hasTag; }
void ClearModifiedSettings(); void ClearModifiedSettings();

View File

@@ -4,19 +4,13 @@
int main() int main()
{ {
YAML::Emitter out; YAML::Emitter out;
out << YAML::Anchor("monkey") << YAML::LocalTag("a");
out << YAML::BeginSeq; out << YAML::BeginSeq;
out << "foo"; out << "item 1";
out << YAML::LocalTag("hi") << "bar"; out << YAML::BeginMap;
out << YAML::Anchor("asdf") << YAML::BeginMap; out << "pens" << "a";
out << "a" << "b" << "c"; out << "pencils" << "b";
out << YAML::Anchor("a") << YAML::BeginMap;
out << YAML::Anchor("d") << "a" << "b";
out << YAML::EndMap; out << YAML::EndMap;
out << YAML::EndMap; out << "item 2";
out << YAML::LocalTag("hi") << YAML::BeginSeq;
out << "a" << "b" << YAML::Alias("monkey");
out << YAML::EndSeq;
out << YAML::EndSeq; out << YAML::EndSeq;
std::cout << out.c_str() << "\n"; std::cout << out.c_str() << "\n";