summaryrefslogtreecommitdiff
path: root/svtools
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2023-11-24 19:50:23 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2023-11-25 13:32:28 +0100
commit5446000df8fa88e137c2189616962f72dfded29f (patch)
treec4711c88068331a394a3d9169e9df17068271dfd /svtools
parentc34e5b5b4fee431ba2fa950b9bbf72d3008bb332 (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.cxx2
-rw-r--r--svtools/source/svhtml/HtmlWriter.cxx53
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(' ');