diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2023-11-24 19:50:23 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2023-11-25 13:32:28 +0100 |
commit | 5446000df8fa88e137c2189616962f72dfded29f (patch) | |
tree | c4711c88068331a394a3d9169e9df17068271dfd /svtools | |
parent | c34e5b5b4fee431ba2fa950b9bbf72d3008bb332 (diff) |
Simplify HtmlWriter
And add some asserts, to make sure we don't add attributes outside of
opening tags. Make sure that HtmlWriter closes its opened elements.
Replace one occurrence where this was deliberately not done, with a
use of HTMLOutFuncs::Out_AsciiTag.
Change-Id: I3a3f4b963432bf95b36afa62cac2144503837378
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159935
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'svtools')
-rw-r--r-- | svtools/qa/unit/testHtmlWriter.cxx | 2 | ||||
-rw-r--r-- | svtools/source/svhtml/HtmlWriter.cxx | 53 |
2 files changed, 16 insertions, 39 deletions
diff --git a/svtools/qa/unit/testHtmlWriter.cxx b/svtools/qa/unit/testHtmlWriter.cxx index 3e7e10d34c12..513978b1f525 100644 --- a/svtools/qa/unit/testHtmlWriter.cxx +++ b/svtools/qa/unit/testHtmlWriter.cxx @@ -157,7 +157,7 @@ CPPUNIT_TEST_FIXTURE(Test, testAttributeValues) aHtml.prettyPrint(false); aHtml.start("abc"_ostr); aHtml.attribute("one", "one"); - aHtml.attribute("two", u"two"); + aHtml.attribute("two", u"two"_ustr); aHtml.attribute("three", sal_Int32(12)); aHtml.end(); diff --git a/svtools/source/svhtml/HtmlWriter.cxx b/svtools/source/svhtml/HtmlWriter.cxx index 28a86bbce12a..cd73bad074da 100644 --- a/svtools/source/svhtml/HtmlWriter.cxx +++ b/svtools/source/svhtml/HtmlWriter.cxx @@ -25,7 +25,9 @@ HtmlWriter::HtmlWriter(SvStream& rStream, std::string_view rNamespace) : } HtmlWriter::~HtmlWriter() -{} +{ + assert(maElementStack.empty()); +} void HtmlWriter::prettyPrint(bool b) { @@ -61,17 +63,6 @@ void HtmlWriter::single(const OString &aContent) end(); } -void HtmlWriter::endAttribute() -{ - if (mbOpeningTagOpen) - { - mrStream.WriteOString("/>"); - if (mbPrettyPrint) - mrStream.WriteOString("\n"); - mbOpeningTagOpen = false; - } -} - void HtmlWriter::flushStack() { while (!maElementStack.empty()) @@ -115,27 +106,9 @@ void HtmlWriter::end() maElementStack.pop_back(); } -void HtmlWriter::writeAttribute(SvStream& rStream, std::string_view aAttribute, sal_Int32 aValue) -{ - writeAttribute(rStream, aAttribute, OString::number(aValue)); -} - -void HtmlWriter::writeAttribute(SvStream& rStream, std::string_view aAttribute, std::string_view aValue) -{ - rStream.WriteOString(aAttribute); - rStream.WriteChar('='); - rStream.WriteChar('"'); - HTMLOutFuncs::Out_String(rStream, OStringToOUString(aValue, RTL_TEXTENCODING_UTF8)); - rStream.WriteChar('"'); -} - void HtmlWriter::attribute(std::string_view aAttribute, std::string_view aValue) { - if (mbOpeningTagOpen && !aAttribute.empty() && !aValue.empty()) - { - mrStream.WriteChar(' '); - writeAttribute(mrStream, aAttribute, aValue); - } + attribute(aAttribute, OStringToOUString(aValue, RTL_TEXTENCODING_UTF8)); } void HtmlWriter::attribute(std::string_view aAttribute, const sal_Int32 aValue) @@ -143,18 +116,22 @@ void HtmlWriter::attribute(std::string_view aAttribute, const sal_Int32 aValue) attribute(aAttribute, OString::number(aValue)); } -void HtmlWriter::attribute(std::string_view aAttribute, const char* pValue) +void HtmlWriter::attribute(std::string_view aAttribute, const OUString& aValue) { - attribute(aAttribute, std::string_view(pValue)); -} - -void HtmlWriter::attribute(std::string_view aAttribute, std::u16string_view aValue) -{ - attribute(aAttribute, OUStringToOString(aValue, RTL_TEXTENCODING_UTF8)); + assert(mbOpeningTagOpen); + if (mbOpeningTagOpen && !aAttribute.empty() && !aValue.isEmpty()) + { + mrStream.WriteChar(' '); + mrStream.WriteOString(aAttribute); + mrStream.WriteOString("=\""); + HTMLOutFuncs::Out_String(mrStream, aValue); + mrStream.WriteChar('"'); + } } void HtmlWriter::attribute(std::string_view aAttribute) { + assert(mbOpeningTagOpen); if (mbOpeningTagOpen && !aAttribute.empty()) { mrStream.WriteChar(' '); |