File indexing completed on 2025-03-09 04:54:36

0001 /*
0002    SPDX-FileCopyrightText: 2017 Volker Krause <vkrause@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "ktexttemplateextension.h"
0008 
0009 #include <KTextTemplate/Exception>
0010 #include <KTextTemplate/Parser>
0011 
0012 using namespace MessageViewer;
0013 
0014 CallbackTag::CallbackTag(const QString &name, QObject *parent)
0015     : KTextTemplate::Node(parent)
0016     , m_name(name)
0017 {
0018 }
0019 
0020 void CallbackTag::render(KTextTemplate::OutputStream *stream, KTextTemplate::Context *context) const
0021 {
0022     auto cb = context->lookup(m_name).value<KTextTemplateCallback>();
0023     if (cb) {
0024         cb(stream);
0025     }
0026 }
0027 
0028 KTextTemplate::Node *CallbackTagFactory::getNode(const QString &tagContent, KTextTemplate::Parser *parser) const
0029 {
0030     auto expr = tagContent.split(QLatin1Char(' '), Qt::SkipEmptyParts);
0031     if (expr.size() != 2) {
0032         return nullptr;
0033     }
0034 
0035     return new CallbackTag(expr.at(1), parser);
0036 }
0037 
0038 KTextTemplateTagLibrary::KTextTemplateTagLibrary(QObject *parent)
0039     : QObject(parent)
0040 {
0041 }
0042 
0043 QHash<QString, KTextTemplate::AbstractNodeFactory *> KTextTemplateTagLibrary::nodeFactories(const QString &name)
0044 {
0045     Q_UNUSED(name)
0046     QHash<QString, KTextTemplate::AbstractNodeFactory *> nodeFactories;
0047     nodeFactories.insert(QStringLiteral("callback"), new CallbackTagFactory());
0048     return nodeFactories;
0049 }
0050 
0051 #include "moc_ktexttemplateextension.cpp"