123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- /*
- Language: HAML
- Requires: ruby.js
- Author: Dan Allen <dan.j.allen@gmail.com>
- Website: http://haml.info
- Category: template
- */
- // TODO support filter tags like :javascript, support inline HTML
- function haml(hljs) {
- return {
- name: 'HAML',
- case_insensitive: true,
- contains: [
- {
- className: 'meta',
- begin: '^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$',
- relevance: 10
- },
- // FIXME these comments should be allowed to span indented lines
- hljs.COMMENT(
- '^\\s*(!=#|=#|-#|/).*$',
- false,
- {
- relevance: 0
- }
- ),
- {
- begin: '^\\s*(-|=|!=)(?!#)',
- starts: {
- end: '\\n',
- subLanguage: 'ruby'
- }
- },
- {
- className: 'tag',
- begin: '^\\s*%',
- contains: [
- {
- className: 'selector-tag',
- begin: '\\w+'
- },
- {
- className: 'selector-id',
- begin: '#[\\w-]+'
- },
- {
- className: 'selector-class',
- begin: '\\.[\\w-]+'
- },
- {
- begin: /\{\s*/,
- end: /\s*\}/,
- contains: [
- {
- begin: ':\\w+\\s*=>',
- end: ',\\s+',
- returnBegin: true,
- endsWithParent: true,
- contains: [
- {
- className: 'attr',
- begin: ':\\w+'
- },
- hljs.APOS_STRING_MODE,
- hljs.QUOTE_STRING_MODE,
- {
- begin: '\\w+',
- relevance: 0
- }
- ]
- }
- ]
- },
- {
- begin: '\\(\\s*',
- end: '\\s*\\)',
- excludeEnd: true,
- contains: [
- {
- begin: '\\w+\\s*=',
- end: '\\s+',
- returnBegin: true,
- endsWithParent: true,
- contains: [
- {
- className: 'attr',
- begin: '\\w+',
- relevance: 0
- },
- hljs.APOS_STRING_MODE,
- hljs.QUOTE_STRING_MODE,
- {
- begin: '\\w+',
- relevance: 0
- }
- ]
- }
- ]
- }
- ]
- },
- {
- begin: '^\\s*[=~]\\s*'
- },
- {
- begin: /#\{/,
- starts: {
- end: /\}/,
- subLanguage: 'ruby'
- }
- }
- ]
- };
- }
- module.exports = haml;
|