source: s10k/CommonLibs/jsonhighlighter/highlighter.cpp @ 1073

Last change on this file since 1073 was 1073, checked in by s10k, 23 months ago

added XML Tools latest version (2.0d) and s10k's common libs

File size: 1.2 KB
Line 
1#include "highlighter.h"
2#include <QRegExp>
3#include <QTextCharFormat>
4#include <QTextDocument>
5
6Highlighter::Highlighter(QTextDocument *parent)
7    : QSyntaxHighlighter(parent)
8{
9   HighlightingRule rule;
10
11   //numbers
12   rule.pattern = QRegExp("([-0-9.]+)(?!([^\"]*\"[\\s]*\\:))");
13   rule.format.setForeground(QColor(255,192,85));
14   rules.append(rule);
15
16   //key
17   rule.pattern = QRegExp ("(\"[^\"]*\")");
18   rule.format.setForeground(QColor(145,145,192));
19   rules.append(rule);
20
21   //value
22   rule.pattern = QRegExp(":\\s*([\"](?:[^\"])*[\"])");
23   rule.format.setForeground(QColor(145,145,192));
24   rules.append(rule);
25
26   //reserved words
27   rule.pattern = QRegExp("(true|false|null)(?!\"[^\"]*\")");
28   rule.format.setForeground(QColor(0,0,255));
29   rules.append(rule);
30}
31
32void Highlighter::highlightBlock(const QString &text)
33{
34    foreach (const HighlightingRule &rule, rules) {
35        QRegExp expression(rule.pattern);
36        int index = expression.indexIn(text);
37
38        while (index >= 0) {
39            index = expression.pos(1);
40            int length = expression.cap(1).length();
41            setFormat(index, length, rule.format);
42            index = expression.indexIn(text, index + length);
43        }
44    }
45}
Note: See TracBrowser for help on using the repository browser.