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 << u
"\\bELSE\\b"_s << u
"\\bEND\\b"_s;
34 const auto constKeywordPatterns = keywordPatterns;
35 for (
const QString &pattern : constKeywordPatterns )
37 rule.pattern = QRegularExpression( pattern, QRegularExpression::CaseInsensitiveOption );
38 rule.format = keywordFormat;
39 highlightingRules.append( rule );
42 quotationFormat.setForeground( Qt::darkGreen );
43 rule.pattern = QRegularExpression(
"\'[^\'\r\n]*\'" );
44 rule.format = quotationFormat;
45 highlightingRules.append( rule );
47 columnNameFormat.setForeground( Qt::darkRed );
48 rule.pattern = QRegularExpression(
"\"[^\"\r\n]*\"" );
49 rule.format = columnNameFormat;
50 highlightingRules.append( rule );
55 columnNameFormat.setForeground( Qt::darkRed );
56 HighlightingRule rule;
57 const auto constFieldList = fieldList;
58 for (
const QString &field : constFieldList )
60 if ( field.isEmpty() )
62 rule.pattern = QRegularExpression(
"\\b" + field +
"\\b" );
63 rule.format = columnNameFormat;
64 highlightingRules.append( rule );
70 const auto constHighlightingRules = highlightingRules;
71 for (
const HighlightingRule &rule : constHighlightingRules )
73 const QRegularExpression expression( rule.pattern );
74 QRegularExpressionMatch match = expression.match( text );
75 while ( match.hasMatch() )
77 const int index = match.capturedStart();
78 const int length = match.capturedLength();
81 setFormat( index, length, rule.format );
82 match = expression.match( text, index + length );