1
0
mirror of https://github.com/cmur2/joe-syntax.git synced 2024-12-22 02:54:23 +01:00
joe-syntax/haml.jsf
cn 2b59cf9e90 Brand new Haml highlighter
The main features of Haml can be correctly parsed according to
http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html.

There exist some limitations inherently comming from the limitations
of state machine based highlighters (without side effects)... this parsers
sucks with multiline comments, strings etc since the indent based grouping
can't be evaluated.
2011-10-19 20:40:45 +02:00

116 lines
1.7 KiB
Plaintext

# JOE syntax highlight file for Haml
=Idle
=Comment green
=Constant cyan
=Escape bold cyan
=Bad bold red
=Brace magenta
=Tag fg_310
=Class yellow
=Id green
=Doctype bold magenta
=Filter blue
:line_start Idle
* idle noeat
# eat indent
" " line_start
"\\" escape_first recolor=-1
"!" doctype1
"%" tag recolor=-1
# implicit <div>
".#" after_tag noeat
"/" html_comment recolor=-1
":" filter recolor=-1
:escape_first Constant
* idle
:idle Constant
* idle
"\n" line_start
"=~-" ruby_call noeat
"&!" maybe_esc_ruby_call
"#" maybe_subst
"\\" maybe_subst_escape
:doctype1 Idle
* idle recolor=-2
"=" esc_ruby_call recolor=-2
"!" doctype2
:doctype2 Idle
* idle recolor=-3
"!" doctype3 recolor=-3
:doctype3 Doctype
* doctype3
"\n" line_start
:tag Tag
* idle noeat
"a-zA-Z0-9_-" tag
".#{(/" after_tag noeat
:after_tag Idle
* idle noeat
"." class recolor=-1
"#" id recolor=-1
"{" attrA
"(" attrB
"/" tag_close recolor=-1
:class Class
* after_tag noeat
"a-zA-Z0-9_-" class
:id Id
* after_tag noeat
"a-zA-Z0-9_-" id
:attrA Idle
* attrA
"}" after_tag
:attrB Idle
* attrB
")" after_tag
:tag_close Tag
* idle noeat
:html_comment Comment
* html_comment
"\n" line_start
:ruby_call Idle
* line_start call=ruby.ruby(haml)
:maybe_esc_ruby_call Constant
* idle
"=" esc_ruby_call recolor=-2
:esc_ruby_call Idle
* line_start call=ruby.ruby(haml)
"=" esc_ruby_call2
:esc_ruby_call2 Idle
* line_start call=ruby.ruby(haml)
:maybe_subst Constant
* idle
"{" subst recolor=-2
:subst Escape
* subst
"}" idle
:maybe_subst_escape Constant
* idle
:filter Filter
* idle
"a-zA-Z0-9_" filter