#ifndef LRSCRIPTHIGHLIGHTER_H #define LRSCRIPTHIGHLIGHTER_H #include #include namespace LimeReport { enum ParenthesisType { LeftParenthesis, RightParenthesis, ParenthesisTypeCount }; #define PARENHEIS_COUNT 3 const QChar parenthesisCharacters[ParenthesisTypeCount][PARENHEIS_COUNT] = { { '(', '{', '[' }, { ')', '}', ']' } }; struct ParenthesisInfo { char character; int position; }; class TextBlockData: public QTextBlockUserData { public: TextBlockData() { } ~TextBlockData(); QVector parentheses(); void insert(ParenthesisInfo* info); private: QVector m_parentheses; }; class ScriptHighlighter: QSyntaxHighlighter { public: ScriptHighlighter(QTextDocument* parent); protected: void highlightBlock(const QString& text); enum ScriptFormats { NumberFormat, StringFormat, KeywordFormat, CommentFormat, FormatsCount }; QTextCharFormat m_formats[FormatsCount]; bool isKeyWord(const QString& word); void createParentheisisInfo(const char& literal, TextBlockData* data, const QString& text); private: QSet m_keywords; }; } // namespace LimeReport #endif // LRSCRIPTHIGHLIGHTER_H