diff options
author | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2015-01-09 17:00:53 +0100 |
---|---|---|
committer | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2015-01-09 17:00:53 +0100 |
commit | f37d3cd42eb18433445c2e259cd71a1b2bd67be0 (patch) | |
tree | c4371b1b4e3f578a6d20dc76dd74fb85d6fb901a /src/core/XML.cpp | |
parent | 58fed7b74357b82ba55558f91ae13123dc2380eb (diff) |
added non-pretty output of XML serialization, changed DemoOutput accordingly and changed DemoOutputTest to have some kind of automatic inspection instead of visual inspection.
Diffstat (limited to 'src/core/XML.cpp')
-rw-r--r-- | src/core/XML.cpp | 53 |
1 files changed, 37 insertions, 16 deletions
diff --git a/src/core/XML.cpp b/src/core/XML.cpp index 9cfb5dc..b7d1511 100644 --- a/src/core/XML.cpp +++ b/src/core/XML.cpp @@ -4,18 +4,23 @@ namespace ousia { namespace xml { -void Node::serialize(std::ostream &out, const std::string &doctype) +void Node::serialize(std::ostream &out, const std::string &doctype, bool pretty) { if (doctype != "") { - out << doctype << "\n"; + out << doctype; + if (pretty) { + out << '\n'; + } } - doSerialize(out, 0); + doSerialize(out, 0, pretty); } -void Element::doSerialize(std::ostream &out, unsigned int tabdepth) +void Element::doSerialize(std::ostream &out, unsigned int tabdepth, bool pretty) { - for (unsigned int t = 0; t < tabdepth; t++) { - out << '\t'; + if (pretty) { + for (unsigned int t = 0; t < tabdepth; t++) { + out << '\t'; + } } out << '<' << name; for (auto &a : attributes) { @@ -23,25 +28,41 @@ void Element::doSerialize(std::ostream &out, unsigned int tabdepth) } // if we have no children, we close the tag immediately. if (children.size() == 0) { - out << "/>\n"; + out << "/>"; + if (pretty) { + out << '\n'; + } } else { - out << ">\n"; + out << ">"; + if (pretty) { + out << '\n'; + } for (auto &n : children) { - n->doSerialize(out, tabdepth + 1); + n->doSerialize(out, tabdepth + 1, pretty); } - for (unsigned int t = 0; t < tabdepth; t++) { - out << '\t'; + if (pretty) { + for (unsigned int t = 0; t < tabdepth; t++) { + out << '\t'; + } + } + out << "</" << name << ">"; + if (pretty) { + out << '\n'; } - out << "</" << name << ">\n"; } } -void Text::doSerialize(std::ostream &out, unsigned int tabdepth) +void Text::doSerialize(std::ostream &out, unsigned int tabdepth, bool pretty) { - for (unsigned int t = 0; t < tabdepth; t++) { - out << '\t'; + if (pretty) { + for (unsigned int t = 0; t < tabdepth; t++) { + out << '\t'; + } + } + out << text; + if (pretty) { + out << '\n'; } - out << text << '\n'; } } |