25 : QSyntaxHighlighter( parent )
27 HighlightingRule rule;
29 keywordFormat.setForeground( Qt::darkBlue );
30 keywordFormat.setFontWeight( QFont::Bold );
31 QStringList keywordPatterns;
32 keywordPatterns << u
"\\bCASE\\b"_s << u
"\\bWHEN\\b"_s << u
"\\bTHEN\\b"_s
33 << u
"\\bELSE\\b"_s << u
"\\bEND\\b"_s;
35 const auto constKeywordPatterns = keywordPatterns;
36 for (
const QString &pattern : constKeywordPatterns )
38 rule.pattern = QRegularExpression( pattern, QRegularExpression::CaseInsensitiveOption );
39 rule.format = keywordFormat;
40 highlightingRules.append( rule );
43 quotationFormat.setForeground( Qt::darkGreen );
44 rule.pattern = QRegularExpression(
"\'[^\'\r\n]*\'" );
45 rule.format = quotationFormat;
46 highlightingRules.append( rule );
48 columnNameFormat.setForeground( Qt::darkRed );
49 rule.pattern = QRegularExpression(
"\"[^\"\r\n]*\"" );
50 rule.format = columnNameFormat;
51 highlightingRules.append( rule );
56 columnNameFormat.setForeground( Qt::darkRed );
57 HighlightingRule rule;
58 const auto constFieldList = fieldList;
59 for (
const QString &field : constFieldList )
61 if ( field.isEmpty() )
63 rule.pattern = QRegularExpression(
"\\b" + field +
"\\b" );
64 rule.format = columnNameFormat;
65 highlightingRules.append( rule );
71 const auto constHighlightingRules = highlightingRules;
72 for (
const HighlightingRule &rule : constHighlightingRules )
74 const QRegularExpression expression( rule.pattern );
75 QRegularExpressionMatch match = expression.match( text );
76 while ( match.hasMatch() )
78 const int index = match.capturedStart();
79 const int length = match.capturedLength();
82 setFormat( index, length, rule.format );
83 match = expression.match( text, index + length );