From 83b034d47728a7519128b2777ac95fa0b558f882 Mon Sep 17 00:00:00 2001 From: Benjamin Paassen Date: Tue, 13 Jan 2015 11:19:04 +0100 Subject: put entity escaping in XML serialization instead of DemoOutput. Also had to comment out graphviz visualization in DemoOutputTest because it did not work for me. --- src/core/XML.cpp | 31 ++++++++++++++++++++++++++++++- src/plugins/html/DemoOutput.cpp | 40 +++++----------------------------------- 2 files changed, 35 insertions(+), 36 deletions(-) (limited to 'src') diff --git a/src/core/XML.cpp b/src/core/XML.cpp index a610daa..9c23e3b 100644 --- a/src/core/XML.cpp +++ b/src/core/XML.cpp @@ -16,6 +16,8 @@ along with this program. If not, see . */ +#include + #include #include "XML.hpp" @@ -71,6 +73,33 @@ void Element::doSerialize(std::ostream &out, unsigned int tabdepth, bool pretty) } } +static std::string escapePredefinedEntities(const std::string &input) +{ + std::stringstream ss; + for (const char &c : input) { + switch (c) { + case '<': + ss << "<"; + break; + case '>': + ss << ">"; + break; + case '&': + ss << "&"; + break; + case '\'': + ss << "'"; + break; + case '\"': + ss << """; + break; + default: + ss << c; + } + } + return std::move(ss.str()); +} + void Text::doSerialize(std::ostream &out, unsigned int tabdepth, bool pretty) { if (pretty) { @@ -78,7 +107,7 @@ void Text::doSerialize(std::ostream &out, unsigned int tabdepth, bool pretty) out << '\t'; } } - out << text; + out << escapePredefinedEntities(text); if (pretty) { out << '\n'; } diff --git a/src/plugins/html/DemoOutput.cpp b/src/plugins/html/DemoOutput.cpp index 7dc1660..b94b397 100644 --- a/src/plugins/html/DemoOutput.cpp +++ b/src/plugins/html/DemoOutput.cpp @@ -16,7 +16,6 @@ along with this program. If not, see . */ -#include #include #include @@ -110,9 +109,9 @@ Rooted DemoHTMLTransformer::transformSection( // if the input node is no section, we ignore it. return {nullptr}; } - // create a div tag containing the sections content. + // create a section tag containing the sections content. Rooted sec{ - new xml::Element{mgr, parent, "div", {{"class", secclass}}}}; + new xml::Element{mgr, parent, "section", {{"class", secclass}}}}; // check if we have a heading. if (section->hasField("heading") && section->getField("heading").size() > 0) { @@ -226,33 +225,6 @@ static Rooted openAnnotation( return tmp; } -static std::string escapePredefinedEntities(const std::string &input) -{ - std::stringstream ss; - for (const char &c : input) { - switch (c) { - case '<': - ss << "<"; - break; - case '>': - ss << ">"; - break; - case '&': - ss << "&"; - break; - case '\'': - ss << "'"; - break; - case '\"': - ss << """; - break; - default: - ss << c; - } - } - return std::move(ss.str()); -} - Rooted DemoHTMLTransformer::transformParagraph( Handle parent, Handle par, AnnoMap &startMap, AnnoMap &endMap) @@ -339,7 +311,7 @@ Rooted DemoHTMLTransformer::transformParagraph( continue; } // if this is not an anchor, we can only handle text. - if(!n->isa(RttiTypes::StructuredEntity)){ + if (!n->isa(RttiTypes::StructuredEntity)) { continue; } Handle t = n.cast(); @@ -351,10 +323,8 @@ Rooted DemoHTMLTransformer::transformParagraph( if (primitive.isNull()) { throw OusiaException("Text field is not primitive!"); } - // here we need to do some escaping with the string content. - std::string escaped = - escapePredefinedEntities(primitive->getContent().asString()); - current->addChild(new xml::Text(mgr, current, escaped)); + current->addChild(new xml::Text( + mgr, current, primitive->getContent().asString())); } } return p; -- cgit v1.2.3