0
0
mirror of https://github.com/fralx/LimeReport.git synced 2024-12-24 16:44:39 +03:00

Script highlighter fixes

Fixed: keywords and numbers at the end of the line were not highlighted
This commit is contained in:
Константин Макаренков 2021-06-18 16:04:39 +03:00
parent 0353dbb7b4
commit 6bfc6be9fb

View File

@ -34,7 +34,7 @@ enum LiteralsType {
}; };
enum States { enum States {
Undefinded = -1, Undefined = -1,
Start, Start,
MayBeKeyWord, MayBeKeyWord,
Code, Code,
@ -67,8 +67,8 @@ void ScriptHighlighter::highlightBlock(const QString& text)
int literal = -1; int literal = -1;
bool lastWasBackSlash = false; bool lastWasBackSlash = false;
States prevState = (States)previousBlockState(); States prevState = (States)previousBlockState();
States state = prevState != Undefinded ? (States)prevState : Start; States state = prevState != Undefined ? (States)prevState : Start;
States oldState = Undefinded; States oldState = Undefined;
const States stateMaschine[StatesCount][LiteralsCount] = { const States stateMaschine[StatesCount][LiteralsCount] = {
// Space Alpahabet Number Hash Slash Asterix, Bracket, Quotation, Apostrophe, Apostrophe2 Separator, Back Slash // Space Alpahabet Number Hash Slash Asterix, Bracket, Quotation, Apostrophe, Apostrophe2 Separator, Back Slash
{Separator, MayBeKeyWord, MayBeNumber, Separator, MayBeComment, Separator, Separator, String, String2, String3, Separator, Separator}, {Separator, MayBeKeyWord, MayBeNumber, Separator, MayBeComment, Separator, Separator, String, String2, String3, Separator, Separator},
@ -87,7 +87,7 @@ void ScriptHighlighter::highlightBlock(const QString& text)
QString buffer; QString buffer;
setCurrentBlockState(Undefinded); setCurrentBlockState(Undefined);
if (text.isEmpty()) if (text.isEmpty())
{ {
@ -172,7 +172,7 @@ void ScriptHighlighter::highlightBlock(const QString& text)
switch(oldState){ switch(oldState){
case MayBeComment2End: case MayBeComment2End:
setFormat(i-(buffer.length()-1), buffer.length(), m_formats[CommentFormat]); setFormat(i-(buffer.length()-1), buffer.length(), m_formats[CommentFormat]);
setCurrentBlockState(Undefinded); setCurrentBlockState(Undefined);
buffer.clear(); buffer.clear();
break; break;
case MayBeKeyWord: case MayBeKeyWord:
@ -214,16 +214,20 @@ void ScriptHighlighter::highlightBlock(const QString& text)
if (buffer.length()) if (buffer.length())
{ {
if (oldState == MayBeKeyWord) if (state == MayBeKeyWord)
{ {
if (isKeyWord(buffer)) if (isKeyWord(buffer))
setFormat(i - buffer.length(), buffer.length(), m_formats[KeywordFormat]); setFormat(i - buffer.length(), buffer.length(), m_formats[KeywordFormat]);
} }
else if (state == MayBeNumber)
{
setFormat(i - buffer.length(), buffer.length(), m_formats[NumberFormat]);
}
} }
TextBlockData *data = new TextBlockData; TextBlockData *data = new TextBlockData;
for (int i = 0; i < PARENHEIS_COUNT; ++i){ for (int i = 0; i < PARENHEIS_COUNT; ++i) {
createParentheisisInfo(parenthesisCharacters[LeftParenthesis][i].toLatin1(), data, text); createParentheisisInfo(parenthesisCharacters[LeftParenthesis][i].toLatin1(), data, text);
createParentheisisInfo(parenthesisCharacters[RightParenthesis][i].toLatin1(), data, text); createParentheisisInfo(parenthesisCharacters[RightParenthesis][i].toLatin1(), data, text);
} }