File indexing completed on 2024-12-22 04:48:18

0001 /*
0002     SPDX-License-Identifier: GPL-2.0-or-later
0003     SPDX-FileCopyrightText: 2024 Louis Schul <schul9louis@gmail.com>
0004 */
0005 
0006 #include "pluginHelper.h"
0007 
0008 #include "kleverconfig.h"
0009 
0010 PluginHelper::PluginHelper(Parser *parser)
0011     : m_highlightParserUtils(new HighlightParserUtils)
0012     , m_pumlParserUtils(new PUMLParserUtils)
0013 {
0014     m_mapperParserUtils = new NoteMapperParserUtils(parser);
0015 }
0016 
0017 void PluginHelper::clearPluginsInfo()
0018 {
0019     if (KleverConfig::codeSynthaxHighlightEnabled()) {
0020         m_highlightParserUtils->clearInfo();
0021     }
0022     if (KleverConfig::noteMapEnabled()) {
0023         m_mapperParserUtils->clearInfo();
0024     }
0025     if (KleverConfig::pumlEnabled()) {
0026         m_pumlParserUtils->clearInfo();
0027     }
0028 }
0029 
0030 void PluginHelper::clearPluginsPreviousInfo()
0031 {
0032     if (KleverConfig::codeSynthaxHighlightEnabled()) {
0033         m_highlightParserUtils->clearPreviousInfo();
0034     }
0035     if (KleverConfig::noteMapEnabled()) {
0036         m_mapperParserUtils->clearPreviousInfo();
0037     }
0038     if (KleverConfig::pumlEnabled()) {
0039         m_pumlParserUtils->clearPreviousInfo();
0040     }
0041 }
0042 
0043 void PluginHelper::preTokChanges()
0044 {
0045     // Syntax highlight
0046     if (KleverConfig::codeSynthaxHighlightEnabled()) {
0047         m_highlightParserUtils->preTok();
0048     }
0049     if (KleverConfig::pumlEnabled()) {
0050         m_pumlParserUtils->preTok();
0051     }
0052 }
0053 
0054 void PluginHelper::postTokChanges()
0055 {
0056     if (KleverConfig::noteMapEnabled()) {
0057         m_mapperParserUtils->postTok();
0058     }
0059 }
0060 
0061 QString PluginHelper::blockCodePlugins(const QString &lang, const QString &_text)
0062 {
0063     static const QString pumlStr = QStringLiteral("puml");
0064     static const QString plantUMLStr = QStringLiteral("plantuml");
0065 
0066     QString returnValue;
0067     if (KleverConfig::pumlEnabled() && (lang.toLower() == pumlStr || lang.toLower() == plantUMLStr)) {
0068         returnValue = m_pumlParserUtils->renderCode(_text, KleverConfig::pumlDark());
0069     } else {
0070         const bool highlightEnabled = KleverConfig::codeSynthaxHighlightEnabled();
0071         const bool highlight = highlightEnabled && !lang.isEmpty();
0072 
0073         returnValue = m_highlightParserUtils->renderCode(highlight, _text, lang);
0074     }
0075 
0076     return returnValue;
0077 }
0078 
0079 // NoteMapper
0080 NoteMapperParserUtils *PluginHelper::getMapperParserUtils() const
0081 {
0082     return m_mapperParserUtils;
0083 }
0084 
0085 // Syntax highlight
0086 HighlightParserUtils *PluginHelper::getHighlightParserUtils() const
0087 {
0088     return m_highlightParserUtils;
0089 }
0090 
0091 // PUML
0092 PUMLParserUtils *PluginHelper::getPUMLParserUtils() const
0093 {
0094     return m_pumlParserUtils;
0095 }