1// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: GPL-3.0-or-later
4
5#include "stylescijs.h"
6#include "textedittabwidget/style/stylejsonfile.h"
7#include "textedittabwidget/style/stylecolor.h"
8#include "textedittabwidget/textedit.h"
9#include "SciLexer.h"
10
11StyleSciJS::StyleSciJS(TextEdit *parent)
12 : StyleSci(parent)
13{
14}
15
16QMap<int, QString> StyleSciJS::keyWords() const
17{
18 return StyleSci::keyWords();
19}
20
21void StyleSciJS::setStyle()
22{
23 StyleSci::setStyle();
24
25 auto jsonFile = edit()->getStyleFile();
26 if (jsonFile->setTheme(StyleJsonFile::Theme::get()->Dark)) {
27 auto highLightColor = [&](const QString &key) -> int {
28 QJsonObject tempObj = jsonFile->value(key).toObject();
29 return StyleColor::color(tempObj.value(StyleJsonFile::Key_2::get()->Foreground).toString().toUInt(nullptr, 16));
30 };
31 // comment.
32 int color = highLightColor(StyleJsonFile::Key_1::get()->Comment);
33 edit()->styleSetFore(SCE_HJ_COMMENTLINE, color);
34 edit()->styleSetFore(SCE_HJ_COMMENT, color);
35 edit()->styleSetFore(SCE_HJ_COMMENTDOC, color);
36
37 // number.
38 color = highLightColor(StyleJsonFile::Key_1::get()->Number);
39 edit()->styleSetFore(SCE_HJ_NUMBER, color);
40
41 // keyword.
42 color = highLightColor(StyleJsonFile::Key_1::get()->Keyword);
43 edit()->styleSetFore(SCE_HJ_KEYWORD, color);
44
45 // string.
46 color = highLightColor(StyleJsonFile::Key_1::get()->String);
47 edit()->styleSetFore(SCE_HJ_DOUBLESTRING, color);
48 edit()->styleSetFore(SCE_HJ_DOUBLESTRING, color);
49
50 // word.
51 color = highLightColor(StyleJsonFile::Key_1::get()->Text);
52 edit()->styleSetFore(SCE_HJ_WORD, color);
53 }
54}
55
56void StyleSciJS::setLexer()
57{
58 StyleSci::setLexer();
59}
60
61int StyleSciJS::sectionEnd() const
62{
63 return SCE_HJ_REGEX;
64}
65
66int StyleSciJS::sectionStart() const
67{
68 return SCE_HJ_START;
69}
70