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"