7#include "xmlprintingscriptbuilder.h"
11#include <QXmlStreamWriter>
13using namespace KSieveCore;
14XMLPrintingScriptBuilder::XMLPrintingScriptBuilder(
int indent)
20XMLPrintingScriptBuilder::XMLPrintingScriptBuilder()
26void XMLPrintingScriptBuilder::initialize(
int indent)
28 mStream =
new QXmlStreamWriter(&mResult);
30 mStream->setAutoFormatting(
false);
32 mStream->setAutoFormatting(
true);
33 mStream->setAutoFormattingIndent(indent);
35 mStream->writeStartDocument();
36 mStream->writeStartElement(QStringLiteral(
"script"));
39XMLPrintingScriptBuilder::~XMLPrintingScriptBuilder()
44void XMLPrintingScriptBuilder::taggedArgument(
const QString &tag)
46 write(QStringLiteral(
"tag"), tag);
49void XMLPrintingScriptBuilder::stringArgument(
const QString &
string,
bool multiLine,
const QString & )
52 write(QStringLiteral(
"str"), QStringLiteral(
"type"), QStringLiteral(
"multiline"),
string);
54 write(QStringLiteral(
"str"), QStringLiteral(
"type"), QStringLiteral(
"quoted"),
string);
58void XMLPrintingScriptBuilder::numberArgument(
unsigned long number,
char quantifier)
61 write(QStringLiteral(
"num"), QStringLiteral(
"quantifier"), QStringLiteral(
"%1").arg(quantifier),
QString::number(number));
63 write(QStringLiteral(
"num"), QString(), QString(),
QString::number(number));
67void XMLPrintingScriptBuilder::commandStart(
const QString &identifier,
int lineNumber)
70 if (identifier == QLatin1StringView(
"else") || identifier == QLatin1StringView(
"break") || identifier == QLatin1StringView(
"require")
71 || identifier == QLatin1StringView(
"foreverypart") || identifier == QLatin1StringView(
"if") || identifier == QLatin1StringView(
"elsif")) {
72 mStream->writeStartElement(QStringLiteral(
"control"));
73 mStream->writeAttribute(QStringLiteral(
"name"), identifier);
75 mStream->writeStartElement(QStringLiteral(
"action"));
76 mStream->writeAttribute(QStringLiteral(
"name"), identifier);
80void XMLPrintingScriptBuilder::commandEnd(
int lineNumber)
83 mStream->writeEndElement();
86void XMLPrintingScriptBuilder::testStart(
const QString &identifier)
88 mStream->writeStartElement(QStringLiteral(
"test"));
89 mStream->writeAttribute(QStringLiteral(
"name"), identifier);
92void XMLPrintingScriptBuilder::testEnd()
94 mStream->writeEndElement();
97void XMLPrintingScriptBuilder::testListStart()
99 mStream->writeStartElement(QStringLiteral(
"testlist"));
102void XMLPrintingScriptBuilder::testListEnd()
104 mStream->writeEndElement();
107void XMLPrintingScriptBuilder::blockStart(
int lineNumber)
110 mStream->writeStartElement(QStringLiteral(
"block"));
113void XMLPrintingScriptBuilder::blockEnd(
int lineNumber)
116 mStream->writeEndElement();
119void XMLPrintingScriptBuilder::stringListArgumentStart()
121 mStream->writeStartElement(QStringLiteral(
"list"));
124void XMLPrintingScriptBuilder::stringListArgumentEnd()
126 mStream->writeEndElement();
129void XMLPrintingScriptBuilder::stringListEntry(
const QString &
string,
bool multiline,
const QString &hashComment)
131 stringArgument(
string, multiline, hashComment);
134void XMLPrintingScriptBuilder::hashComment(
const QString &comment)
136 write(QStringLiteral(
"comment"), QStringLiteral(
"type"), QStringLiteral(
"hash"), comment);
139void XMLPrintingScriptBuilder::bracketComment(
const QString &comment)
141 write(QStringLiteral(
"comment"), QStringLiteral(
"type"), QStringLiteral(
"bracket"), comment);
144void XMLPrintingScriptBuilder::lineFeed()
146 mStream->writeEmptyElement(QStringLiteral(
"crlf"));
149void XMLPrintingScriptBuilder::error(
const KSieve::Error &error)
151 mError = QLatin1StringView(
"Error: ") + error.asString();
155void XMLPrintingScriptBuilder::finished()
157 mStream->writeEndElement();
160void XMLPrintingScriptBuilder::write(
const QString &key,
const QString &value)
163 mStream->writeEmptyElement(key);
166 mStream->writeStartElement(key);
167 mStream->writeCharacters(value);
168 mStream->writeEndElement();
171void XMLPrintingScriptBuilder::write(
const QString &key,
const QString &qualifiedName,
const QString &attribute,
const QString &value)
174 mStream->writeEmptyElement(key);
178 mStream->writeStartElement(key);
180 mStream->writeStartElement(key);
181 mStream->writeAttribute(qualifiedName, attribute);
183 mStream->writeCharacters(value);
184 mStream->writeEndElement();
187QString XMLPrintingScriptBuilder::result()
const
192QString XMLPrintingScriptBuilder::error()
const
197bool XMLPrintingScriptBuilder::hasError()
const
199 return !mError.isEmpty();
202void XMLPrintingScriptBuilder::clear()
void initialize(StandardShortcut id)
bool isEmpty() const const
QString number(double n, char format, int precision)