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';  }  }  | 
