diff --git a/lib/ace/mode/html_highlight_rules.js b/lib/ace/mode/html_highlight_rules.js index 8c1449c0..3dff3c5a 100644 --- a/lib/ace/mode/html_highlight_rules.js +++ b/lib/ace/mode/html_highlight_rules.js @@ -47,8 +47,7 @@ var HtmlHighlightRules = function() { // regexp must not have capturing parentheses // regexps are ordered -> the first match is used function string(state) { - return [ - { + return [{ token : "string", regex : '".*?"' }, { @@ -94,6 +93,9 @@ var HtmlHighlightRules = function() { next : name + "-attribute-list" }]; + states[name + "-qstring"] = multiLineString("'", name); + states[name + "-qqstring"] = multiLineString("\"", name); + states[name + "-attribute-list"] = [{ token : "text", regex : ">", @@ -107,7 +109,7 @@ var HtmlHighlightRules = function() { }, { token : "text", regex : "\\s+" - }].concat(string("attribute-list")); + }].concat(string(name)); }; this.$rules = { @@ -143,14 +145,7 @@ var HtmlHighlightRules = function() { token : "text", regex : "[^<]+" } ], - - "style-qstring": multiLineString("'", "style"), - "style-qqstring": multiLineString('"', "style"), - "script-qstring": multiLineString("'", "script"), - "script-qqstring": multiLineString('"', "script"), - "tag-qstring": multiLineString("'", "tag"), - "tag-qqstring": multiLineString('"', "tag"), - + cdata : [ { token : "text", regex : "\\]\\]>", diff --git a/lib/ace/mode/html_tokenizer_test.js b/lib/ace/mode/html_tokenizer_test.js index 4b6d7f2f..9ba6dc4f 100644 --- a/lib/ace/mode/html_tokenizer_test.js +++ b/lib/ace/mode/html_tokenizer_test.js @@ -56,15 +56,15 @@ module.exports = { //assert.equal(10, tokens.length); assert.equal("text", tokens[0].type); - assert.equal("keyword", tokens[1].type); + assert.equal("meta.tag", tokens[1].type); assert.equal("text", tokens[2].type); - assert.equal("keyword", tokens[3].type); + assert.equal("entity.other.attribute-name", tokens[3].type); assert.equal("text", tokens[4].type); assert.equal("string", tokens[5].type); assert.equal("text", tokens[6].type); assert.equal("keyword", tokens[7].type); assert.equal("text", tokens[8].type); - assert.equal("keyword", tokens[9].type); + assert.equal("meta.tag", tokens[9].type); assert.equal("text", tokens[10].type); }, @@ -77,7 +77,7 @@ module.exports = { }, "test: tokenize multiline attribute value with single quotes": function() { - var line1 = this.tokenizer.getLineTokens('', line1.state).tokens; assert.equal(t1[t1.length-1].type, "string");