module Text.Highlighter.Lexers.Coldfusion (lexer) where

import Text.Regex.PCRE.Light
import Text.Highlighter.Types

lexer :: Lexer
lexer = Lexer
    { lName = "\99\102\115\116\97\116\101\109\101\110\116"
    , lAliases = ["\99\102\115"]
    , lExtensions = []
    , lMimetypes = []
    , lStart = root'
    , lFlags = [caseless, multiline]
    }

root' :: TokenMatcher
root' =
    [ tok "\47\47\46\42" (Arbitrary "\67\111\109\109\101\110\116")
    , tok "\92\43\92\43\124\45\45" (Arbitrary "\79\112\101\114\97\116\111\114")
    , tok "\91\45\43\42\47\94\38\61\33\93" (Arbitrary "\79\112\101\114\97\116\111\114")
    , tok "\60\61\124\62\61\124\60\124\62" (Arbitrary "\79\112\101\114\97\116\111\114")
    , tok "\109\111\100\92\98" (Arbitrary "\79\112\101\114\97\116\111\114")
    , tok "\40\101\113\124\108\116\124\103\116\124\108\116\101\124\103\116\101\124\110\111\116\124\105\115\124\97\110\100\124\111\114\41\92\98" (Arbitrary "\79\112\101\114\97\116\111\114")
    , tok "\92\124\92\124\124\38\38" (Arbitrary "\79\112\101\114\97\116\111\114")
    , tokNext "\34" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\68\111\117\98\108\101") (GoTo string')
    , tok "\39\46\42\63\39" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\83\105\110\103\108\101")
    , tok "\92\100\43" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\78\117\109\98\101\114")
    , tok "\40\105\102\124\101\108\115\101\124\108\101\110\124\118\97\114\124\99\97\115\101\124\100\101\102\97\117\108\116\124\98\114\101\97\107\124\115\119\105\116\99\104\41\92\98" (Arbitrary "\75\101\121\119\111\114\100")
    , tok "\40\91\65\45\90\97\45\122\95\36\93\91\65\45\90\97\45\122\48\45\57\95\46\93\42\41\92\115\42\40\92\40\41" (ByGroups [(Arbitrary "\78\97\109\101" :. Arbitrary "\70\117\110\99\116\105\111\110"), (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110")])
    , tok "\91\65\45\90\97\45\122\95\36\93\91\65\45\90\97\45\122\48\45\57\95\46\93\42" (Arbitrary "\78\97\109\101" :. Arbitrary "\86\97\114\105\97\98\108\101")
    , tok "\91\40\41\92\91\92\93\123\125\59\58\44\46\92\92\93" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110")
    , tok "\92\115\43" (Arbitrary "\84\101\120\116")
    ]

string' :: TokenMatcher
string' =
    [ tok "\34\34" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\68\111\117\98\108\101")
    , tok "\35\46\43\63\35" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\73\110\116\101\114\112")
    , tok "\91\94\34\35\93\43" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\68\111\117\98\108\101")
    , tok "\35" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\68\111\117\98\108\101")
    , tokNext "\34" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\68\111\117\98\108\101") Pop
    ]