do not require highlighter to match every letter
This commit is contained in:
parent
903b7a1951
commit
0e7a7b9ebe
1 changed files with 15 additions and 7 deletions
|
|
@ -106,9 +106,8 @@ var Tokenizer = function(rules, flag) {
|
|||
|
||||
ruleRegExps.push(adjustedregex);
|
||||
}
|
||||
console.log(key, ruleRegExps)
|
||||
|
||||
this.regExps[key] = new RegExp("(?:(" + ruleRegExps.join(")|(") + ")|(.))", flag);
|
||||
this.regExps[key] = new RegExp("(" + ruleRegExps.join(")|(") + ")|($)", flag);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -143,7 +142,7 @@ var Tokenizer = function(rules, flag) {
|
|||
var stack = startState.slice(0);
|
||||
startState = stack[0];
|
||||
} else
|
||||
var stack = []
|
||||
var stack = [];
|
||||
|
||||
var currentState = startState || "start";
|
||||
var state = this.rules[currentState];
|
||||
|
|
@ -160,7 +159,16 @@ var Tokenizer = function(rules, flag) {
|
|||
var type = "text";
|
||||
var rule = null;
|
||||
var value = match[0];
|
||||
|
||||
var index = re.lastIndex;
|
||||
|
||||
if (index - value.length > lastIndex) {
|
||||
if (token.type)
|
||||
tokens.push(token);
|
||||
token = {
|
||||
type: "regex",
|
||||
value: line.substring(lastIndex, index - value.length)
|
||||
};
|
||||
}
|
||||
for (var i = 0; i < match.length-2; i++) {
|
||||
if (match[i + 1] === undefined)
|
||||
continue;
|
||||
|
|
@ -182,9 +190,9 @@ var Tokenizer = function(rules, flag) {
|
|||
state = this.rules[currentState];
|
||||
}
|
||||
mapping = this.matchMappings[currentState];
|
||||
lastIndex = re.lastIndex;
|
||||
lastIndex = index;
|
||||
re = this.regExps[currentState];
|
||||
re.lastIndex = lastIndex;
|
||||
re.lastIndex = index;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -210,7 +218,7 @@ var Tokenizer = function(rules, flag) {
|
|||
if (lastIndex == line.length)
|
||||
break;
|
||||
|
||||
lastIndex = re.lastIndex;
|
||||
lastIndex = index;
|
||||
}
|
||||
|
||||
if (token.type)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue