office-gobmx/include/svtools/HtmlWriter.hxx
Tomaž Vajngerl 685c8db519 HtmlWriter: add end tag checking and helper for attribute writing
Added an input variable to end to enter the name of which variable
is ending. This is to check that the expected end tag is actually
written.

Added writeAttribute, which is independent from HtmlWriter and just
writes the HTML attribute format to the stream.

Change-Id: Ib00a4a37354cd1cb1781ba729ed4046a966e1eb1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116629
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2021-06-03 23:05:05 +02:00

64 lines
1.8 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
*/
#pragma once
#include <rtl/string.hxx>
#include <string_view>
#include <vector>
#include <svtools/svtdllapi.h>
class SvStream;
class SVT_DLLPUBLIC HtmlWriter final
{
private:
std::vector<OString> maElementStack;
SvStream& mrStream;
bool mbElementOpen;
bool mbCharactersWritten;
bool mbPrettyPrint;
/// XML namespace, in case of XHTML.
OString maNamespace;
public:
HtmlWriter(SvStream& rStream, std::string_view rNamespace = std::string_view());
~HtmlWriter();
void prettyPrint(bool b);
void start(const OString& aElement);
bool end(const OString& aElement);
void end();
void flushStack();
static void writeAttribute(SvStream& rStream, std::string_view aAttribute, sal_Int32 aValue);
static void writeAttribute(SvStream& rStream, std::string_view aAttribute,
std::string_view aValue);
void attribute(std::string_view aAttribute, const char* aValue);
void attribute(std::string_view aAttribute, sal_Int32 aValue);
void attribute(std::string_view aAttribute, std::string_view aValue);
void attribute(std::string_view aAttribute, std::u16string_view aValue);
// boolean attribute e.g. <img ismap>
void attribute(std::string_view aAttribute);
void single(const OString& aContent);
void endAttribute();
/// Writes character data.
void characters(std::string_view rChars);
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */