118 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*
 | 
						|
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;
 |