diff --git a/src/Tokenizer.js b/src/Tokenizer.js index fb1d539e..fd7d54d9 100644 --- a/src/Tokenizer.js +++ b/src/Tokenizer.js @@ -14,7 +14,7 @@ ace.Tokenizer = function(rules) { ; this.regExps[key] = new RegExp("(?:(" + ruleRegExps.join(")|(") - + ")|(.))", "g"); + + ")|(.+))", "g"); } }; diff --git a/src/mode/XmlHighlightRules.js b/src/mode/XmlHighlightRules.js index 1ec228d2..2bf7f642 100644 --- a/src/mode/XmlHighlightRules.js +++ b/src/mode/XmlHighlightRules.js @@ -19,14 +19,14 @@ ace.mode.XmlHighlightRules = function() { next : "comment" }, { token : "text", // opening tag - regex : "<", + regex : "<\\/?", next : "tag" }, { token : "text", regex : "\\s+" }, { token : "text", - regex : ".+" + regex : "[^<]+" } ], tag : [ { diff --git a/test/mode/XmlTokenizerTest.js b/test/mode/XmlTokenizerTest.js new file mode 100644 index 00000000..23b8801d --- /dev/null +++ b/test/mode/XmlTokenizerTest.js @@ -0,0 +1,21 @@ +var XmlTest = new TestCase("mode.XmlTest", { + + setUp : function() { + this.tokenizer = new ace.mode.Xml().getTokenizer(); + }, + + "test: tokenize1" : function() { + + var line = "//Juhu Kinners"; + var tokens = this.tokenizer.getLineTokens(line, "start").tokens; + + assertEquals(7, tokens.length); + assertEquals("text", tokens[0].type); + assertEquals("keyword", tokens[1].type); + assertEquals("text", tokens[2].type); + assertEquals("text", tokens[3].type); + assertEquals("text", tokens[4].type); + assertEquals("keyword", tokens[5].type); + assertEquals("text", tokens[6].type); + } +}); \ No newline at end of file