Skip to content

Commit 6cd7078

Browse files
committed
[Refactor] Added modularity in adding pattern
1 parent 5a71fd9 commit 6cd7078

File tree

2 files changed

+17
-18
lines changed

2 files changed

+17
-18
lines changed

include/Syntax.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ class Syntax : public QSyntaxHighlighter
3030
QTextCharFormat functionFormat;
3131
QTextCharFormat parenthesisFormat;
3232
QTextCharFormat charFormat;
33+
34+
void addPattern(const QString &pattern, const QTextCharFormat &format);
3335
};
3436

3537
#endif // SYNTAX_H

src/Syntax.cpp

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,42 +19,39 @@ Syntax::Syntax(QTextDocument *parent) : QSyntaxHighlighter(parent)
1919
<< "\\bvoid\\b" << "\\bvolatile\\b" << "\\bforeach\\b";
2020
foreach (const QString &pattern, keywordPatterns)
2121
{
22-
rule.pattern = QRegularExpression(pattern);
23-
rule.format = keywordFormat;
24-
syntaxRules.append(rule);
22+
addPattern(pattern, keywordFormat);
2523
}
2624

2725
// Single line comment format expression
2826
singleLineCommentFormat.setForeground(Qt::darkGray);
29-
rule.pattern = QRegularExpression(QStringLiteral("//[^\n]*"));
30-
rule.format = singleLineCommentFormat;
31-
syntaxRules.append(rule);
27+
addPattern("//[^\n]*", singleLineCommentFormat);
3228

3329
// Double quotation mark for string
3430
quotationMark.setForeground(Qt::darkGreen);
35-
rule.pattern = QRegularExpression(QStringLiteral("\".*\""));
36-
rule.format = quotationMark;
37-
syntaxRules.append(rule);
31+
addPattern("\".*\"", quotationMark);
3832

3933
// Function format expression
4034
functionFormat.setFontItalic(true);
4135
functionFormat.setForeground(Qt::darkYellow);
42-
rule.pattern = QRegularExpression(QStringLiteral("\\b[a-zA-Z_][a-zA-Z0-9_]*(?=\\s*\\()"));
43-
rule.format = functionFormat;
44-
syntaxRules.append(rule);
36+
addPattern("\\b[a-zA-Z_][a-zA-Z0-9_]*(?=\\s*\\()", functionFormat);
4537

4638
// Color pattern for parenthesis
4739
QColor parenthesisColor("#6495ED");
4840
parenthesisFormat.setForeground(parenthesisColor);
49-
rule.pattern = QRegularExpression(QStringLiteral("[()]"));
50-
rule.format = parenthesisFormat;
51-
syntaxRules.append(rule);
41+
addPattern("[()]", parenthesisFormat);
5242

5343
// Regex for single character format 'a', '\n', etc
5444
charFormat.setForeground(Qt::darkCyan);
55-
rule.pattern = QRegularExpression(QStringLiteral("'(\\\\.|[^'])'"));
56-
rule.format = charFormat;
57-
syntaxRules.append(rule);
45+
addPattern("'(\\\\.|[^'])'", charFormat);
46+
}
47+
48+
// Add syntax highlighting patterns
49+
void Syntax::addPattern(const QString &pattern, const QTextCharFormat &format)
50+
{
51+
SyntaxRule rule;
52+
rule.pattern = QRegularExpression(pattern);
53+
rule.format = format;
54+
syntaxRules.append(rule);
5855
}
5956

6057
void Syntax::highlightBlock(const QString &text)

0 commit comments

Comments
 (0)