define(function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var RubyExports = require("./ruby_highlight_rules"); var RubyHighlightRules = RubyExports.RubyHighlightRules; var HamlHighlightRules = function() { // regexp must not have capturing parentheses. Use (?:) instead. // regexps are ordered -> the first match is used this.$rules = { "start": [ { "token" : "punctuation.section.comment", "regex" : /^\s*\/.*/ }, { "token" : "punctuation.section.comment", "regex" : /^\s*#.*/ }, { "token": "string.quoted.double", "regex": "==.+?==" }, { "token": "keyword.other.doctype", "regex": "^!!!\\s*(?:[a-zA-Z0-9-_]+)?" }, RubyExports.qString, RubyExports.qqString, RubyExports.tString, { "token": ["entity.name.tag.haml"], "regex": /^\s*%[\w:]+/, "next": "tag_single" }, { "token": [ "meta.escape.haml" ], "regex": "^\\s*\\\\." }, RubyExports.constantNumericHex, RubyExports.constantNumericFloat, RubyExports.constantOtherSymbol, { "token": "text", "regex": "=|-|~", "next": "embedded_ruby" } ], "tag_single": [ { "token": "entity.other.attribute-name.class.haml", "regex": "\\.[\\w-]+" }, { "token": "entity.other.attribute-name.id.haml", "regex": "#[\\w-]+" }, { "token": "punctuation.section", "regex": "\\{", "next": "section" }, RubyExports.constantOtherSymbol, { "token": "text", "regex": /\s/, "next": "start" }, { "token": ["text", "punctuation"], "regex": "($)|((?!\\.|#|\\{|\\[|=|-|~|\\/))", "next": "start" } ], "section": [ RubyExports.constantOtherSymbol, RubyExports.qString, RubyExports.qqString, RubyExports.tString, RubyExports.constantNumericHex, RubyExports.constantNumericFloat, { "token": "punctuation.section", "regex": "\\}", "next": "start" } ], "embedded_ruby": [ RubyExports.constantNumericHex, RubyExports.constantNumericFloat, { token : "support.class", // class name regex : "[A-Z][a-zA-Z_\\d]+" }, { "token" : new RubyHighlightRules().getKeywords(), "regex" : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { "token" : ["keyword", "text", "text"], "regex" : "(?:do|\\{)(?: \\|[^|]+\\|)?$", "next" : "start" }, { "token" : ["text"], "regex" : "^$", "next" : "start" }, { "token" : ["text"], "regex" : "^(?!.*\\|\\s*$)", "next" : "start" } ] } }; oop.inherits(HamlHighlightRules, TextHighlightRules); exports.HamlHighlightRules = HamlHighlightRules; });