diff --git a/lib/ace/mode/ruby_highlight_rules.js b/lib/ace/mode/ruby_highlight_rules.js index 8de4d903..0d0cabac 100644 --- a/lib/ace/mode/ruby_highlight_rules.js +++ b/lib/ace/mode/ruby_highlight_rules.js @@ -128,7 +128,7 @@ var RubyHighlightRules = function() { regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" }, { token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" + regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" }, { token : "constant.numeric", // float regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b" diff --git a/lib/ace/mode/ruby_tokenizer_test.js b/lib/ace/mode/ruby_tokenizer_test.js index 37f4e2a3..f8dd7eb8 100644 --- a/lib/ace/mode/ruby_tokenizer_test.js +++ b/lib/ace/mode/ruby_tokenizer_test.js @@ -61,6 +61,13 @@ module.exports = { ":th!ing", ":thing#"]); }, + "test: hex tokenizer" : function() { + assertValidTokens(this.tokenizer, "constant.numeric", + ["0x9a", "0XA1", "0x9_a"]); + assertInvalidTokens(this.tokenizer, "constant.numeric", + ["0x", "0x_9a", "0x9a_"]); + }, + "test: float tokenizer" : function() { assertValidTokens(this.tokenizer, "constant.numeric", ["1", "+1", "-1", "12_345", "0.000_1"]);