module Text.Highlighter.Lexers.GenshiText (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 = ["\103\101\110\115\104\105\116\101\120\116"]
    , lExtensions = []
    , lMimetypes = ["\97\112\112\108\105\99\97\116\105\111\110\47\120\45\103\101\110\115\104\105\45\116\101\120\116", "\116\101\120\116\47\120\45\103\101\110\115\104\105"]
    , lStart = root'
    , lFlags = [multiline]
    }

variable' :: TokenMatcher
variable' =
    [ tok "\40\63\60\33\92\36\41\40\92\36\92\123\41\40\46\43\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\60\33\92\36\41\40\92\36\41\40\91\97\45\122\65\45\90\95\93\91\97\45\122\65\45\90\48\45\57\95\92\46\93\42\41" (Arbitrary "\78\97\109\101" :. Arbitrary "\86\97\114\105\97\98\108\101")
    ]

root' :: TokenMatcher
root' =
    [ tok "\91\94\35\92\36\92\115\93\43" (Arbitrary "\79\116\104\101\114")
    , tok "\94\40\92\115\42\41\40\35\35\46\42\41\36" (ByGroups [(Arbitrary "\84\101\120\116"), (Arbitrary "\67\111\109\109\101\110\116")])
    , tokNext "\94\40\92\115\42\41\40\35\41" (ByGroups [(Arbitrary "\84\101\120\116"), (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99")]) (GoTo directive')
    , anyOf variable'
    , tok "\91\35\92\36\92\115\93" (Arbitrary "\79\116\104\101\114")
    ]

directive' :: TokenMatcher
directive' =
    [ tokNext "\92\110" (Arbitrary "\84\101\120\116") Pop
    , tokNext "\40\63\58\100\101\102\124\102\111\114\124\105\102\41\92\115\43\46\42" (Using Python.lexer) Pop
    , tokNext "\40\99\104\111\111\115\101\124\119\104\101\110\124\119\105\116\104\41\40\91\94\92\83\92\110\93\43\41\40\46\42\41" (ByGroups [(Arbitrary "\75\101\121\119\111\114\100"), (Arbitrary "\84\101\120\116"), (Using Python.lexer)]) Pop
    , tokNext "\40\99\104\111\111\115\101\124\111\116\104\101\114\119\105\115\101\41\92\98" (Arbitrary "\75\101\121\119\111\114\100") Pop
    , tokNext "\40\101\110\100\92\119\42\41\40\91\94\92\83\92\110\93\42\41\40\46\42\41" (ByGroups [(Arbitrary "\75\101\121\119\111\114\100"), (Arbitrary "\84\101\120\116"), (Arbitrary "\67\111\109\109\101\110\116")]) Pop
    ]