packages feed

illuminate-0.1: Text/Highlighting/Illuminate/RHTML.x

{
{-# OPTIONS -w  #-} -- Suppress warnings from alex-generated code
module Text.Highlighting.Illuminate.RHTML (lexer) where
import qualified Text.Highlighting.Illuminate.HTML as HTML
import qualified Text.Highlighting.Illuminate.Ruby as Ruby
}

%wrapper "illuminate"

tokens :-

<erb> {
  ([^ \%] | \n | \% [^ \>])+  { tokenizeWith Ruby.lexer }
  \% \>                       { tok Tag ==> popContext }
}
<0> {
 \< \% \=?                   { tok Tag ==> pushContext (erb, Plain) }
 ([^ \<] | \n | \< [^ \%])+  { tokenizeWith HTML.lexer }
}

{
lexer :: Lexer
lexer = Lexer { name = "RHTML"
              , aliases = ["rhtml"]
              , filenames = ["*.html.erb","*.rhtml"]
              , scan = scanner }
}