module Text.Highlighter.Lexers.RagelEmbedded (lexer) where
import qualified Text.Highlighter.Lexers.Ragel as Ragel
import qualified Text.Highlighter.Lexers.Ragel as Ragel
import Text.Regex.PCRE.Light
import Text.Highlighter.Types

lexer :: Lexer
lexer = Lexer
    { lName = "\82\97\103\101\108"
    , lAliases = ["\114\97\103\101\108\45\101\109"]
    , lExtensions = ["\46\114\108"]
    , lMimetypes = []
    , lStart = root'
    , lFlags = [multiline]
    }

root' :: TokenMatcher
root' =
    [ tok "\40\91\94\37\92\39\34\47\35\93\43\124\37\40\63\61\91\94\37\93\124\36\41\124\34\40\92\92\92\92\124\92\92\34\124\91\94\34\93\41\42\34\124\39\40\92\92\92\92\124\92\92\39\124\91\94\39\93\41\42\39\124\47\92\42\40\46\124\92\110\41\42\63\92\42\47\124\47\47\46\42\36\92\110\63\124\92\35\46\42\36\92\110\63\124\47\40\63\33\92\42\41\40\92\92\92\92\124\92\92\47\124\91\94\47\93\41\42\47\124\47\41\43" (Arbitrary "\79\116\104\101\114")
    , tok "\40\37\37\41\40\63\33\91\123\37\93\41\40\46\42\41\40\36\124\59\41\40\92\110\63\41" (ByGroups [(Arbitrary "\80\117\110\99\116\117\97\116\105\111\110"), (Using Ragel.lexer), (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110"), (Arbitrary "\84\101\120\116")])
    , tokNext "\40\37\37\37\37\124\37\37\41\123" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110") (GoTo multiLineFsm')
    ]

multiLineFsm' :: TokenMatcher
multiLineFsm' =
    [ tok "\40\40\91\94\125\92\39\34\92\91\47\35\93\124\125\40\63\61\91\94\37\93\124\36\41\124\125\37\40\63\61\91\94\37\93\124\36\41\124\91\94\92\92\93\91\92\92\93\91\123\125\93\124\40\62\124\92\36\124\37\124\60\124\64\124\60\62\41\47\124\47\40\63\33\92\42\41\40\92\92\92\92\124\92\92\47\124\91\94\47\93\41\42\47\92\42\124\47\40\63\61\91\94\47\92\42\93\124\36\41\41\43\124\34\40\92\92\92\92\124\92\92\34\124\91\94\34\93\41\42\34\124\39\40\92\92\92\92\124\92\92\39\124\91\94\39\93\41\42\39\124\92\91\40\92\92\92\92\124\92\92\92\93\124\91\94\92\93\93\41\42\92\93\124\47\92\42\40\46\124\92\110\41\42\63\92\42\47\124\47\47\46\42\36\92\110\63\124\92\35\46\42\36\92\110\63\41\43" (Using Ragel.lexer)
    , tokNext "\125\37\37" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110") Pop
    ]