fix #1413 Invalid number value breaks CSS mode

This commit is contained in:
nightwing 2013-05-08 15:37:12 +04:00
commit 495318ef6b
3 changed files with 10 additions and 3 deletions

View file

@ -1,6 +1,6 @@
.text-layer {
font-family: Monaco, "Courier New", monospace;
font-size: 12px;
font-size: 12pX;
cursor: text;
}

View file

@ -18,7 +18,7 @@
["support.type","font-size"],
["text",": "],
["constant.numeric","12"],
["keyword","px"],
["keyword","pX"],
["text",";"]
],[
"ruleset",

View file

@ -58,6 +58,7 @@ var Tokenizer = function(rules) {
var mapping = this.matchMappings[key] = {defaultToken: "text"};
var flag = "g";
var spliterRurles = [];
for (var i = 0; i < state.length; i++) {
var rule = state[i];
if (rule.defaultToken)
@ -104,7 +105,7 @@ var Tokenizer = function(rules) {
adjustedregex = this.removeCapturingGroups(rule.regex);
}
if (!rule.splitRegex && typeof rule.token != "string")
rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);
spliterRurles.push(rule); // flag will be known only at the very end
}
mapping[matchTotal] = i;
@ -117,6 +118,10 @@ var Tokenizer = function(rules) {
rule.onMatch = null;
rule.__proto__ = null;
}
spliterRurles.forEach(function(rule) {
rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);
}, this);
this.regExps[key] = new RegExp("(" + ruleRegExps.join(")|(") + ")|($)", flag);
}
@ -146,6 +151,8 @@ var Tokenizer = function(rules) {
if (!str)
return [];
var values = this.splitRegex.exec(str);
if (!values)
return "text";
var tokens = [];
var types = this.tokenArray;
for (var i = 0, l = types.length; i < l; i++) {