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

lexer :: Lexer
lexer = Lexer
    { lName = "\80\121\116\104\111\110"
    , lAliases = ["\109\97\107\111"]
    , lExtensions = ["\46\109\97\111"]
    , lMimetypes = ["\97\112\112\108\105\99\97\116\105\111\110\47\120\45\109\97\107\111"]
    , lStart = root'
    , lFlags = [multiline]
    }

ondeftags' :: TokenMatcher
ondeftags' =
    [ tok "\60\37" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99")
    , tok "\40\63\60\61\60\37\41\40\105\110\99\108\117\100\101\124\105\110\104\101\114\105\116\124\110\97\109\101\115\112\97\99\101\124\112\97\103\101\41" (Arbitrary "\78\97\109\101" :. Arbitrary "\66\117\105\108\116\105\110")
    , anyOf tag'
    ]

tag' :: TokenMatcher
tag' =
    [ tok "\40\40\63\58\92\119\43\41\92\115\42\61\41\92\115\42\40\34\46\42\63\34\41" (ByGroups [(Arbitrary "\78\97\109\101" :. Arbitrary "\65\116\116\114\105\98\117\116\101"), (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103")])
    , tokNext "\47\63\92\115\42\62" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99") Pop
    , tok "\92\115\43" (Arbitrary "\84\101\120\116")
    ]

root' :: TokenMatcher
root' =
    [ tok "\40\92\115\42\41\40\37\41\40\92\115\42\101\110\100\40\63\58\92\119\43\41\41\40\92\110\124\92\90\41" (ByGroups [(Arbitrary "\84\101\120\116"), (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99"), (Arbitrary "\75\101\121\119\111\114\100"), (Arbitrary "\79\116\104\101\114")])
    , tok "\40\92\115\42\41\40\37\41\40\91\94\92\110\93\42\41\40\92\110\124\92\90\41" (ByGroups [(Arbitrary "\84\101\120\116"), (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99"), (Using Python.lexer), (Arbitrary "\79\116\104\101\114")])
    , tok "\40\92\115\42\41\40\35\35\91\94\92\110\93\42\41\40\92\110\124\92\90\41" (ByGroups [(Arbitrary "\84\101\120\116"), (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99"), (Arbitrary "\79\116\104\101\114")])
    , tok "\40\63\115\41\60\37\100\111\99\62\46\42\63\60\47\37\100\111\99\62" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99")
    , tokNext "\40\60\37\41\40\91\92\119\92\46\92\58\93\43\41" (ByGroups [(Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99"), (Arbitrary "\78\97\109\101" :. Arbitrary "\66\117\105\108\116\105\110")]) (GoTo tag')
    , tok "\40\60\47\37\41\40\91\92\119\92\46\92\58\93\43\41\40\62\41" (ByGroups [(Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99"), (Arbitrary "\78\97\109\101" :. Arbitrary "\66\117\105\108\116\105\110"), (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99")])
    , tokNext "\60\37\40\63\61\40\91\92\119\92\46\92\58\93\43\41\41" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99") (GoTo ondeftags')
    , tok "\40\60\37\40\63\58\33\63\41\41\40\46\42\63\41\40\37\62\41\40\63\115\41" (ByGroups [(Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99"), (Using Python.lexer), (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99")])
    , tok "\40\92\36\92\123\41\40\46\42\63\41\40\92\125\41" (ByGroups [(Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99"), (Using Python.lexer), (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99")])
    , tok "\40\63\115\120\41\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\46\43\63\41\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\97\110\121\116\104\105\110\103\44\32\102\111\108\108\111\119\101\100\32\98\121\58\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\63\58\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\63\60\61\92\110\41\40\63\61\37\124\92\35\92\35\41\32\124\32\35\32\97\110\32\101\118\97\108\32\111\114\32\99\111\109\109\101\110\116\32\108\105\110\101\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\63\61\92\35\92\42\41\32\124\32\32\32\32\32\32\32\32\32\32\35\32\109\117\108\116\105\108\105\110\101\32\99\111\109\109\101\110\116\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\63\61\60\47\63\37\41\32\124\32\32\32\32\32\32\32\32\32\32\35\32\97\32\112\121\116\104\111\110\32\98\108\111\99\107\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\99\97\108\108\32\115\116\97\114\116\32\111\114\32\101\110\100\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\63\61\92\36\92\123\41\32\124\32\32\32\32\32\32\32\32\32\32\35\32\97\32\115\117\98\115\116\105\116\117\116\105\111\110\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\63\60\61\92\110\41\40\63\61\92\115\42\37\41\32\124\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\45\32\100\111\110\39\116\32\99\111\110\115\117\109\101\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\92\92\92\110\41\32\124\32\32\32\32\32\32\32\32\32\32\32\32\35\32\97\110\32\101\115\99\97\112\101\100\32\110\101\119\108\105\110\101\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\92\90\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\101\110\100\32\111\102\32\115\116\114\105\110\103\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\41\10\32\32\32\32\32\32\32\32\32\32\32\32" (ByGroups [(Arbitrary "\79\116\104\101\114"), (Arbitrary "\79\112\101\114\97\116\111\114")])
    , tok "\92\115\43" (Arbitrary "\84\101\120\116")
    ]

attr' :: TokenMatcher
attr' =
    [ tokNext "\34\46\42\63\34" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103") Pop
    , tokNext "\39\46\42\63\39" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103") Pop
    , tokNext "\91\94\92\115\62\93\43" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103") Pop
    ]