add ability to Tokenizer to use "i" flag for caseInsensitve languages
This commit is contained in:
parent
ba334cae71
commit
c4bdcd8bad
5 changed files with 24 additions and 145 deletions
|
|
@ -46,7 +46,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient;
|
|||
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||
|
||||
var Mode = function() {
|
||||
this.$tokenizer = new Tokenizer(new CssHighlightRules().getRules());
|
||||
this.$tokenizer = new Tokenizer(new CssHighlightRules().getRules(), "i");
|
||||
this.$outdent = new MatchingBraceOutdent();
|
||||
this.foldingRules = new CStyleFoldMode();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -108,20 +108,6 @@ var CssHighlightRules = function() {
|
|||
|
||||
var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
|
||||
|
||||
function ic(str) {
|
||||
var re = [];
|
||||
var chars = str.split("");
|
||||
for (var i=0; i<chars.length; i++) {
|
||||
re.push(
|
||||
"[",
|
||||
chars[i].toLowerCase(),
|
||||
chars[i].toUpperCase(),
|
||||
"]"
|
||||
);
|
||||
}
|
||||
return re.join("");
|
||||
}
|
||||
|
||||
var base_ruleset = [
|
||||
{
|
||||
token : "comment", // multi line comment
|
||||
|
|
@ -136,61 +122,13 @@ var CssHighlightRules = function() {
|
|||
regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("em")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("ex")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("px")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("cm")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("mm")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("in")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("pt")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("pc")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("deg")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("rad")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("grad")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("ms")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("s")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("hz")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("khz")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + "%"
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe
|
||||
regex : numRe + "(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"
|
||||
}, {
|
||||
token : "constant.numeric", // hex6 color
|
||||
regex : "#[a-fA-F0-9]{6}"
|
||||
regex : "#[a-f0-9]{6}"
|
||||
}, {
|
||||
token : "constant.numeric", // hex3 color
|
||||
regex : "#[a-fA-F0-9]{3}"
|
||||
regex : "#[a-f0-9]{3}"
|
||||
}, {
|
||||
token : function(value) {
|
||||
if (properties.hasOwnProperty(value.toLowerCase())) {
|
||||
|
|
@ -270,16 +208,16 @@ var CssHighlightRules = function() {
|
|||
next: "media"
|
||||
},{
|
||||
token: "keyword",
|
||||
regex: "#[a-zA-Z0-9-_]+"
|
||||
regex: "#[a-z0-9-_]+"
|
||||
},{
|
||||
token: "variable",
|
||||
regex: "\\.[a-zA-Z0-9-_]+"
|
||||
regex: "\\.[a-z0-9-_]+"
|
||||
},{
|
||||
token: "string",
|
||||
regex: ":[a-zA-Z0-9-_]+"
|
||||
regex: ":[a-z0-9-_]+"
|
||||
},{
|
||||
token: "constant",
|
||||
regex: "[a-zA-Z0-9-_]+"
|
||||
regex: "[a-z0-9-_]+"
|
||||
}],
|
||||
|
||||
"media" : [ {
|
||||
|
|
@ -297,16 +235,16 @@ var CssHighlightRules = function() {
|
|||
next: "start"
|
||||
},{
|
||||
token: "keyword",
|
||||
regex: "#[a-zA-Z0-9-_]+"
|
||||
regex: "#[a-z0-9-_]+"
|
||||
},{
|
||||
token: "variable",
|
||||
regex: "\\.[a-zA-Z0-9-_]+"
|
||||
regex: "\\.[a-z0-9-_]+"
|
||||
},{
|
||||
token: "string",
|
||||
regex: ":[a-zA-Z0-9-_]+"
|
||||
regex: ":[a-z0-9-_]+"
|
||||
},{
|
||||
token: "constant",
|
||||
regex: "[a-zA-Z0-9-_]+"
|
||||
regex: "[a-z0-9-_]+"
|
||||
}],
|
||||
|
||||
"comment" : comment,
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd
|
|||
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||
|
||||
var Mode = function() {
|
||||
this.$tokenizer = new Tokenizer(new ScssHighlightRules().getRules());
|
||||
this.$tokenizer = new Tokenizer(new ScssHighlightRules().getRules(), "i");
|
||||
this.$outdent = new MatchingBraceOutdent();
|
||||
this.foldingRules = new CStyleFoldMode();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -171,21 +171,6 @@ var ScssHighlightRules = function() {
|
|||
|
||||
var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
|
||||
|
||||
function ic(str) {
|
||||
var re = [];
|
||||
var chars = str.split("");
|
||||
for (var i=0; i<chars.length; i++) {
|
||||
re.push(
|
||||
"[",
|
||||
chars[i].toLowerCase(),
|
||||
chars[i].toUpperCase(),
|
||||
"]"
|
||||
);
|
||||
}
|
||||
return re.join("");
|
||||
}
|
||||
|
||||
|
||||
// regexp must not have capturing parentheses. Use (?:) instead.
|
||||
// regexps are ordered -> the first match is used
|
||||
|
||||
|
|
@ -218,58 +203,13 @@ var ScssHighlightRules = function() {
|
|||
next : "qstring"
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("em")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("ex")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("px")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("cm")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("mm")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("in")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("pt")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("pc")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("deg")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("rad")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("grad")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("ms")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("s")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("hz")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + ic("khz")
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe + "%"
|
||||
regex : numRe + "(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"
|
||||
}, {
|
||||
token : "constant.numeric", // hex6 color
|
||||
regex : "#[a-fA-F0-9]{6}"
|
||||
regex : "#[a-f0-9]{6}"
|
||||
}, {
|
||||
token : "constant.numeric", // hex3 color
|
||||
regex : "#[a-fA-F0-9]{3}"
|
||||
regex : "#[a-f0-9]{3}"
|
||||
}, {
|
||||
token : "constant.numeric",
|
||||
regex : numRe
|
||||
|
|
@ -290,22 +230,22 @@ var ScssHighlightRules = function() {
|
|||
else
|
||||
return "text";
|
||||
},
|
||||
regex : "\\-?[@a-zA-Z_][@a-zA-Z0-9_\\-]*"
|
||||
regex : "\\-?[@a-z_][@a-z0-9_\\-]*"
|
||||
}, {
|
||||
token : "variable",
|
||||
regex : "[a-zA-Z_\\-$][a-zA-Z0-9_\\-$]*\\b"
|
||||
regex : "[a-z_\\-$][a-z0-9_\\-$]*\\b"
|
||||
}, {
|
||||
token: "variable.language",
|
||||
regex: "#[a-zA-Z0-9-_]+"
|
||||
regex: "#[a-z0-9-_]+"
|
||||
}, {
|
||||
token: "variable.language",
|
||||
regex: "\\.[a-zA-Z0-9-_]+"
|
||||
regex: "\\.[a-z0-9-_]+"
|
||||
}, {
|
||||
token: "variable.language",
|
||||
regex: ":[a-zA-Z0-9-_]+"
|
||||
regex: ":[a-z0-9-_]+"
|
||||
}, {
|
||||
token: "constant",
|
||||
regex: "[a-zA-Z0-9-_]+"
|
||||
regex: "[a-z0-9-_]+"
|
||||
}, {
|
||||
token : "keyword.operator",
|
||||
regex : "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ var Tokenizer = function(rules) {
|
|||
|
||||
this.regExps = {};
|
||||
this.matchMappings = {};
|
||||
var flag = flag ? "g" + flag : "g";
|
||||
for ( var key in this.rules) {
|
||||
var rule = this.rules[key];
|
||||
var state = rule;
|
||||
|
|
@ -68,7 +69,7 @@ var Tokenizer = function(rules) {
|
|||
ruleRegExps.push(adjustedregex);
|
||||
}
|
||||
|
||||
this.regExps[key] = new RegExp("(?:(" + ruleRegExps.join(")|(") + ")|(.))", "g");
|
||||
this.regExps[key] = new RegExp("(?:(" + ruleRegExps.join(")|(") + ")|(.))", flag);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue