Dateien, die als Parameter übergeben werden, werden nach dem Start direkt geladen
This commit is contained in:
45
barecode/src/highlighter/HighlighterFactory.cpp
Normal file
45
barecode/src/highlighter/HighlighterFactory.cpp
Normal file
@@ -0,0 +1,45 @@
|
||||
#include "HighlighterFactory.h"
|
||||
|
||||
#include <QFileInfo>
|
||||
#include <QHash>
|
||||
#include <functional>
|
||||
|
||||
SyntaxHighlighter *HighlighterFactory::createForFile(const QString &filePath,
|
||||
QTextDocument *document)
|
||||
{
|
||||
// Erweiterung → Highlighter-Fabrik
|
||||
// Neue Sprache hinzufügen: einfach einen Eintrag ergänzen.
|
||||
static const QHash<QString, std::function<SyntaxHighlighter *(QTextDocument *)>> registry =
|
||||
{
|
||||
// C / C++
|
||||
{ "c", [](QTextDocument *d) { return new CppHighlighter(d); } },
|
||||
{ "cc", [](QTextDocument *d) { return new CppHighlighter(d); } },
|
||||
{ "cpp", [](QTextDocument *d) { return new CppHighlighter(d); } },
|
||||
{ "cxx", [](QTextDocument *d) { return new CppHighlighter(d); } },
|
||||
{ "h", [](QTextDocument *d) { return new CppHighlighter(d); } },
|
||||
{ "hpp", [](QTextDocument *d) { return new CppHighlighter(d); } },
|
||||
{ "hxx", [](QTextDocument *d) { return new CppHighlighter(d); } },
|
||||
|
||||
// CSS
|
||||
{ "css", [](QTextDocument *d) { return new CssHighlighter(d); } },
|
||||
|
||||
// HTML / Templates
|
||||
{ "html", [](QTextDocument *d) { return new HtmlHighlighter(d); } },
|
||||
{ "htm", [](QTextDocument *d) { return new HtmlHighlighter(d); } },
|
||||
{ "xhtml",[](QTextDocument *d) { return new HtmlHighlighter(d); } },
|
||||
|
||||
// PHP (HTML + eingebettetes PHP)
|
||||
{ "php", [](QTextDocument *d) { return new PhpHighlighter(d); } },
|
||||
{ "phtml",[](QTextDocument *d) { return new PhpHighlighter(d); } },
|
||||
{ "php3", [](QTextDocument *d) { return new PhpHighlighter(d); } },
|
||||
{ "php4", [](QTextDocument *d) { return new PhpHighlighter(d); } },
|
||||
{ "php5", [](QTextDocument *d) { return new PhpHighlighter(d); } },
|
||||
{ "php7", [](QTextDocument *d) { return new PhpHighlighter(d); } },
|
||||
{ "php8", [](QTextDocument *d) { return new PhpHighlighter(d); } },
|
||||
};
|
||||
|
||||
const QString ext = QFileInfo(filePath).suffix().toLower();
|
||||
const auto it = registry.find(ext);
|
||||
|
||||
return (it != registry.end()) ? it.value()(document) : nullptr;
|
||||
}
|
||||
Reference in New Issue
Block a user