File indexing completed on 2025-02-23 04:58:15
0001 /* 0002 SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 #include "ksievecore_export.h" 0009 #include "scriptbuilder.h" 0010 #include <QString> 0011 class QXmlStreamWriter; 0012 namespace KSieveCore 0013 { 0014 class KSIEVECORE_EXPORT XMLPrintingScriptBuilder : public KSieve::ScriptBuilder 0015 { 0016 public: 0017 XMLPrintingScriptBuilder(); 0018 XMLPrintingScriptBuilder(int indent); 0019 ~XMLPrintingScriptBuilder() override; 0020 0021 void taggedArgument(const QString &tag) override; 0022 void stringArgument(const QString &string, bool multiLine, const QString & /*fixme*/) override; 0023 void numberArgument(unsigned long number, char quantifier) override; 0024 void commandStart(const QString &identifier, int lineNumber) override; 0025 void commandEnd(int lineNumber) override; 0026 void testStart(const QString &identifier) override; 0027 void testEnd() override; 0028 void testListStart() override; 0029 void testListEnd() override; 0030 void blockStart(int lineNumber) override; 0031 void blockEnd(int lineNumber) override; 0032 void stringListArgumentStart() override; 0033 void stringListArgumentEnd() override; 0034 void stringListEntry(const QString &string, bool multiline, const QString &hashComment) override; 0035 void hashComment(const QString &comment) override; 0036 void bracketComment(const QString &comment) override; 0037 0038 void lineFeed() override; 0039 void error(const KSieve::Error &error) override; 0040 void finished() override; 0041 0042 [[nodiscard]] QString result() const; 0043 [[nodiscard]] QString error() const; 0044 [[nodiscard]] bool hasError() const; 0045 0046 void clear(); 0047 0048 private: 0049 void initialize(int indent = 0); 0050 void write(const QString &key, const QString &value); 0051 void write(const QString &key, const QString &qualifiedName, const QString &attribute, const QString &value); 0052 0053 QXmlStreamWriter *mStream = nullptr; 0054 QString mResult; 0055 QString mError; 0056 }; 0057 }