From 0fe3d05344c3680c090c6a57a776ef7a49d4ab2b Mon Sep 17 00:00:00 2001 From: Thibaut Cuvelier Date: Wed, 18 Nov 2020 05:29:26 +0100 Subject: [PATCH] XML: add tag-type information in XML tags. It is not yet used. --- src/mathed/InsetMathHull.cpp | 6 ++--- src/xml.h | 48 +++++++++++++++++++++--------------- 2 files changed, 31 insertions(+), 23 deletions(-) diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp index 6c0d2cffb6..91b3c6d6a3 100644 --- a/src/mathed/InsetMathHull.cpp +++ b/src/mathed/InsetMathHull.cpp @@ -2663,9 +2663,9 @@ docstring InsetMathHull::xhtml(XMLStream & xs, OutputParams const & op) const string const tag = (getType() == hullSimple) ? "span" : "div"; xs << xml::CR() << xml::StartTag(tag, "style = \"text-align: center;\"") - << xml::CompTag("img", "src=\"" + filename + "\" alt=\"Mathematical Equation\"") - << xml::EndTag(tag) - << xml::CR(); + << xml::CompTag("img", "src=\"" + filename + "\" alt=\"Mathematical Equation\"") + << xml::EndTag(tag) + << xml::CR(); success = true; } } diff --git a/src/xml.h b/src/xml.h index 4fa19aa024..6da53ada99 100644 --- a/src/xml.h +++ b/src/xml.h @@ -174,23 +174,23 @@ struct EndFontTag; struct StartTag { /// - explicit StartTag(std::string const & tag) : tag_(from_ascii(tag)), keepempty_(false) {} + explicit StartTag(std::string const & tag) : tag_(from_ascii(tag)), keepempty_(false), tagtype_("none") {} /// - explicit StartTag(docstring const & tag) : tag_(tag), keepempty_(false) {} + explicit StartTag(docstring const & tag) : tag_(tag), keepempty_(false), tagtype_("none") {} /// explicit StartTag(docstring const & tag, docstring const & attr, - bool keepempty = false) - : tag_(tag), attr_(attr), keepempty_(keepempty) {} + bool keepempty = false, std::string const & tagtype = "none") + : tag_(tag), attr_(attr), keepempty_(keepempty), tagtype_(tagtype) {} /// explicit StartTag(std::string const & tag, std::string const & attr, - bool keepempty = false) - : tag_(from_ascii(tag)), attr_(from_utf8(attr)), keepempty_(keepempty) {} + bool keepempty = false, std::string const & tagtype = "none") + : tag_(from_ascii(tag)), attr_(from_utf8(attr)), keepempty_(keepempty), tagtype_(tagtype) {} /// explicit StartTag(std::string const & tag, docstring const & attr, - bool keepempty = false) - : tag_(from_ascii(tag)), attr_(attr), keepempty_(keepempty) {} + bool keepempty = false, std::string const & tagtype = "none") + : tag_(from_ascii(tag)), attr_(attr), keepempty_(keepempty), tagtype_(tagtype) {} /// - virtual ~StartTag() {} + virtual ~StartTag() = default; /// virtual docstring writeTag() const; /// @@ -212,6 +212,8 @@ struct StartTag /// whether to keep things like "" or discard them /// you would want this for td, e.g, but maybe not for a div bool keepempty_; + /// Type of tag for new-line behaviour. Either "paragraph", "inline", "block", or "none" (default). + std::string tagtype_; }; @@ -219,11 +221,13 @@ struct StartTag struct EndTag { /// - explicit EndTag(std::string const & tag) : tag_(from_ascii(tag)) {} + explicit EndTag(std::string const & tag, std::string const & tagtype = "none") + : tag_(from_ascii(tag)), tagtype_(tagtype) {} /// - explicit EndTag(docstring const & tag) : tag_(tag) {} + explicit EndTag(docstring const & tag, std::string const & tagtype = "none") + : tag_(tag), tagtype_(tagtype) {} /// - virtual ~EndTag() {} + virtual ~EndTag() = default; /// virtual docstring writeEndTag() const; /// @@ -233,9 +237,12 @@ struct EndTag bool operator!=(StartTag const & rhs) const { return !(*this == rhs); } /// - virtual EndFontTag const * asFontTag() const { return 0; } + virtual EndFontTag const * asFontTag() const { return nullptr; } /// docstring tag_; + /// Type of tag for new-line behaviour. Either "paragraph", "inline", "block", or "none" (default). + /// The value should match that of the corresponding xml::StartTag. + std::string tagtype_; }; @@ -246,30 +253,31 @@ struct CompTag { /// explicit CompTag(std::string const & tag) - : tag_(from_utf8(tag)) {} + : tag_(from_utf8(tag)), tagtype_("none") {} /// - explicit CompTag(std::string const & tag, std::string const & attr) - : tag_(from_utf8(tag)), attr_(from_utf8(attr)) {} + explicit CompTag(std::string const & tag, std::string const & attr, std::string const & tagtype = "none") + : tag_(from_utf8(tag)), attr_(from_utf8(attr)), tagtype_(tagtype) {} /// - explicit CompTag(std::string const & tag, docstring const & attr) - : tag_(from_utf8(tag)), attr_(attr) {} + explicit CompTag(std::string const & tag, docstring const & attr, std::string const & tagtype = "none") + : tag_(from_utf8(tag)), attr_(attr), tagtype_(tagtype) {} /// docstring writeTag() const; /// docstring tag_; /// docstring attr_; + /// Type of tag for new-line behaviour. Either "paragraph", "inline", "block", or "none" (default). + std::string tagtype_; }; /// A special case of StartTag, used exclusively for tags that wrap paragraphs. -/// parid is only used for HTML output; XML is supposed to use attr for this. struct ParTag : public StartTag { /// explicit ParTag(std::string const & tag, const std::string & attr): StartTag(tag, from_utf8(attr)) {} /// - ~ParTag() {} + ~ParTag() override = default; }; -- 2.39.5