21 : QSyntaxHighlighter( parent )
23 HighlightingRule rule;
25 keywordFormat.setForeground( Qt::darkBlue );
26 keywordFormat.setFontWeight( QFont::Bold );
27 QStringList keywordPatterns;
28 keywordPatterns << QStringLiteral(
"\\bCASE\\b" ) << QStringLiteral(
"\\bWHEN\\b" ) << QStringLiteral(
"\\bTHEN\\b" )
29 << QStringLiteral(
"\\bELSE\\b" ) << QStringLiteral(
"\\bEND\\b" );
31 const auto constKeywordPatterns = keywordPatterns;
32 for (
const QString &pattern : constKeywordPatterns )
34 rule.pattern = QRegularExpression( pattern, QRegularExpression::CaseInsensitiveOption );
35 rule.format = keywordFormat;
36 highlightingRules.append( rule );
39 quotationFormat.setForeground( Qt::darkGreen );
40 rule.pattern = QRegularExpression(
"\'[^\'\r\n]*\'" );
41 rule.format = quotationFormat;
42 highlightingRules.append( rule );
44 columnNameFormat.setForeground( Qt::darkRed );
45 rule.pattern = QRegularExpression(
"\"[^\"\r\n]*\"" );
46 rule.format = columnNameFormat;
47 highlightingRules.append( rule );
52 columnNameFormat.setForeground( Qt::darkRed );
53 HighlightingRule rule;
54 const auto constFieldList = fieldList;
55 for (
const QString &field : constFieldList )
57 if ( field.isEmpty() )
59 rule.pattern = QRegularExpression(
"\\b" + field +
"\\b" );
60 rule.format = columnNameFormat;
61 highlightingRules.append( rule );
67 const auto constHighlightingRules = highlightingRules;
68 for (
const HighlightingRule &rule : constHighlightingRules )
70 const QRegularExpression expression( rule.pattern );
71 QRegularExpressionMatch match = expression.match( text );
72 while ( match.hasMatch() )
74 const int index = match.capturedStart();
75 const int length = match.capturedLength();
78 setFormat( index, length, rule.format );
79 match = expression.match( text, index + length );