From 66790c4c0174e483370ae440afb989b7a3efe3f6 Mon Sep 17 00:00:00 2001 From: Chris Wanstrath Date: Tue, 26 Jul 2011 00:32:00 -0700 Subject: [PATCH] Add plain text rule for namespaces (@misfo's idea) --- lib/ace/mode/ruby_highlight_rules.js | 3 +++ lib/ace/mode/ruby_tokenizer_test.js | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/lib/ace/mode/ruby_highlight_rules.js b/lib/ace/mode/ruby_highlight_rules.js index 0d0cabac..a6383bc9 100644 --- a/lib/ace/mode/ruby_highlight_rules.js +++ b/lib/ace/mode/ruby_highlight_rules.js @@ -118,6 +118,9 @@ var RubyHighlightRules = function() { token : "string", // backtick string regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" }, { + token : "text", // namespaces aren't symbols + regex : "::" + }, { token : "variable.instancce", // instance variable regex : "@{1,2}(?:[a-zA-Z_]|\d)+" }, { diff --git a/lib/ace/mode/ruby_tokenizer_test.js b/lib/ace/mode/ruby_tokenizer_test.js index 862b8ab8..ecb47228 100644 --- a/lib/ace/mode/ruby_tokenizer_test.js +++ b/lib/ace/mode/ruby_tokenizer_test.js @@ -60,6 +60,16 @@ module.exports = { ":th!ing", ":thing#"]); }, + "test: namespaces aren't symbols" : function() { + var line = "Namespaced::Class"; + var tokens = this.tokenizer.getLineTokens(line, "start").tokens; + + assert.equal(3, tokens.length); + assert.equal("variable.class", tokens[0].type); + assert.equal("text", tokens[1].type); + assert.equal("variable.class", tokens[2].type); + }, + "test: hex tokenizer" : function() { assertValidTokens(this.tokenizer, "constant.numeric", ["0x9a", "0XA1", "0x9_a"]);