R - Replace QRegExp by QRegularExpression

This commit is contained in:
Alejandro Martinez
2024-01-16 10:34:41 -03:00
parent 8e2eb3fc18
commit 95b4a4969c
2 changed files with 20 additions and 18 deletions

View File

@@ -26,10 +26,10 @@ RSyntax::RSyntax(QTextDocument *parent) : QSyntaxHighlighter(parent)
HighlightingRule rule;
assignmentFormat.setForeground(QColor(255,204,000));
rule.pattern = QRegExp("<{1,2}[-]");
rule.pattern = QRegularExpression("<{1,2}[-]");
rule.format = assignmentFormat;
highlightingRules.append(rule);
rule.pattern = QRegExp("[-]>{1,2}");
rule.pattern = QRegularExpression("[-]>{1,2}");
rule.format = assignmentFormat;
highlightingRules.append(rule);
@@ -37,14 +37,14 @@ RSyntax::RSyntax(QTextDocument *parent) : QSyntaxHighlighter(parent)
// function: anything followed by (
functionFormat.setForeground(Qt::cyan);
//functionFormat.setFontItalic(true);
rule.pattern = QRegExp("\\b[A-Za-z0-9_\\.]+(?=[ ]*\\()");
rule.pattern = QRegularExpression("\\b[A-Za-z0-9_\\.]+(?=[ ]*\\()");
rule.format = functionFormat;
highlightingRules.append(rule);
// argument: anything followed by =, but not at the start(???)
// unfortunately look behind assertions are not supported
argumentFormat.setFontItalic(true);
rule.pattern = QRegExp("[A-Za-z0-9_\\.]+(?=[ ]*=[^=])");
rule.pattern = QRegularExpression("[A-Za-z0-9_\\.]+(?=[ ]*=[^=])");
rule.format = argumentFormat;
highlightingRules.append(rule);
@@ -53,7 +53,7 @@ RSyntax::RSyntax(QTextDocument *parent) : QSyntaxHighlighter(parent)
QStringList numberPatterns;
numberPatterns << "\\b[0-9]+[\\.]?[0-9]*\\b" << "\\b[\\.][0-9]+\\b";
foreach (QString pattern, numberPatterns) {
rule.pattern = QRegExp(pattern);
rule.pattern = QRegularExpression(pattern);
rule.format = numberFormat;
highlightingRules.append(rule);
}
@@ -63,7 +63,7 @@ RSyntax::RSyntax(QTextDocument *parent) : QSyntaxHighlighter(parent)
QStringList constantPatterns;
constantPatterns << "\\bTRUE\\b" << "\\bFALSE\\b" << "\\bNA\\b" << "\\bNULL\\b" << "\\bInf\\b" << "\\bNaN\\b";
foreach (QString pattern, constantPatterns) {
rule.pattern = QRegExp(pattern);
rule.pattern = QRegularExpression(pattern);
rule.format = constantFormat;
highlightingRules.append(rule);
}
@@ -79,7 +79,7 @@ RSyntax::RSyntax(QTextDocument *parent) : QSyntaxHighlighter(parent)
<< "\\bfunction\\b" << "\\breturn\\b" << "\\bmessage\\b"
<< "\\bwarning\\b" << "\\bstop\\b";
foreach (QString pattern, keywordPatterns) {
rule.pattern = QRegExp(pattern);
rule.pattern = QRegularExpression(pattern);
rule.format = keywordFormat;
highlightingRules.append(rule);
}
@@ -90,7 +90,7 @@ RSyntax::RSyntax(QTextDocument *parent) : QSyntaxHighlighter(parent)
QStringList commonFunctionPatterns;
commonFunctionPatterns << "\\blibrary\\b" << "\\bsource\\b" << "\\brequire\\b";
foreach (QString pattern, commonFunctionPatterns) {
rule.pattern = QRegExp(pattern);
rule.pattern = QRegularExpression(pattern);
rule.format = commonFunctionFormat;
highlightingRules.append(rule);
}
@@ -105,30 +105,30 @@ RSyntax::RSyntax(QTextDocument *parent) : QSyntaxHighlighter(parent)
operatorPatterns << "[\\&\\@\\|\\:\\~!<>=]" << "==" << "!=";
foreach (QString pattern, operatorPatterns) {
rule.pattern = QRegExp(pattern);
rule.pattern = QRegularExpression(pattern);
rule.format = operatorFormat;
highlightingRules.append(rule);
}
// namespace: anything followed by ::
//namespaceFormat.setForeground(Qt::magenta);
//rule.pattern = QRegExp("\\b[A-Za-z0-9_\\.]+(?=::)");
//rule.pattern = QRegularExpression("\\b[A-Za-z0-9_\\.]+(?=::)");
//rule.format = namespaceFormat;
//highlightingRules.append(rule);
// quotes: only activated after quotes are closed. Does not
// span lines.
quotationFormat.setForeground(Qt::red);
rule.pattern = QRegExp("\"[^\"]*\"");
rule.pattern = QRegularExpression("\"[^\"]*\"");
rule.format = quotationFormat;
highlightingRules.append(rule);
rule.pattern = QRegExp("'[^']*\'");
rule.pattern = QRegularExpression("'[^']*\'");
rule.format = quotationFormat;
highlightingRules.append(rule);
// comments (should override everything else)
commentFormat.setForeground(QColor(100,149,237));
rule.pattern = QRegExp("#[^\n]*");
rule.pattern = QRegularExpression("#[^\n]*");
rule.format = commentFormat;
highlightingRules.append(rule);
}
@@ -137,13 +137,14 @@ RSyntax::RSyntax(QTextDocument *parent) : QSyntaxHighlighter(parent)
void RSyntax::highlightBlock(const QString &text)
{
foreach (HighlightingRule rule, highlightingRules) {
QRegExp expression(rule.pattern);
int index = text.indexOf(expression);
QRegularExpression expression(rule.pattern);
QRegularExpressionMatch match;
int index = text.indexOf(expression, 0, &match);
// NB: this is index in block, not full document
while (index >= 0) {
int length = expression.matchedLength();
int length = match.capturedLength();
setFormat(index, length, rule.format);
index = text.indexOf(expression, index + length);
index = text.indexOf(expression, index + length, &match);
}
}
}

View File

@@ -23,6 +23,7 @@
#include <QHash>
#include <QTextCharFormat>
#include <QRegularExpression>
class QTextDocument;
@@ -38,7 +39,7 @@ class RSyntax : public QSyntaxHighlighter
private:
struct HighlightingRule {
QRegExp pattern;
QRegularExpression pattern;
QTextCharFormat format;
};
QVector<HighlightingRule> highlightingRules;