From c4bdcd8bad6e5b9bc534551787f52a15146ebd66 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 4 Dec 2011 20:55:25 +0400 Subject: [PATCH] add ability to Tokenizer to use "i" flag for caseInsensitve languages --- lib/ace/mode/css.js | 2 +- lib/ace/mode/css_highlight_rules.js | 84 ++++------------------------ lib/ace/mode/scss.js | 2 +- lib/ace/mode/scss_highlight_rules.js | 78 +++----------------------- lib/ace/tokenizer.js | 3 +- 5 files changed, 24 insertions(+), 145 deletions(-) diff --git a/lib/ace/mode/css.js b/lib/ace/mode/css.js index 7fc14152..5661e6d8 100644 --- a/lib/ace/mode/css.js +++ b/lib/ace/mode/css.js @@ -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(); }; diff --git a/lib/ace/mode/css_highlight_rules.js b/lib/ace/mode/css_highlight_rules.js index 71139e0c..d3875c21 100644 --- a/lib/ace/mode/css_highlight_rules.js +++ b/lib/ace/mode/css_highlight_rules.js @@ -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 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 : "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" diff --git a/lib/ace/tokenizer.js b/lib/ace/tokenizer.js index bf4727fe..edcd817a 100644 --- a/lib/ace/tokenizer.js +++ b/lib/ace/tokenizer.js @@ -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); } };