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

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

lexer :: Lexer
lexer = Lexer
    { lName = "\66\97\116\99\104\102\105\108\101"
    , lAliases = ["\98\97\116"]
    , lExtensions = ["\46\98\97\116", "\46\99\109\100"]
    , lMimetypes = ["\97\112\112\108\105\99\97\116\105\111\110\47\120\45\100\111\115\45\98\97\116\99\104"]
    , lStart = root'
    , lFlags = [caseless, multiline]
    }

basic' :: TokenMatcher
basic' =
    [ tok "\34\46\42\63\34" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\68\111\117\98\108\101")
    , 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 "\96\46\42\63\96" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\66\97\99\107\116\105\99\107")
    , tok "\45\63\92\100\43" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\78\117\109\98\101\114")
    , tok "\44" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110")
    , tok "\61" (Arbitrary "\79\112\101\114\97\116\111\114")
    , tok "\47\92\83\43" (Arbitrary "\78\97\109\101")
    , tok "\58\92\119\43" (Arbitrary "\78\97\109\101" :. Arbitrary "\76\97\98\101\108")
    , tok "\92\119\58\92\119\43" (Arbitrary "\84\101\120\116")
    , tok "\40\91\60\62\124\93\41\40\92\115\42\41\40\92\119\43\41" (ByGroups [(Arbitrary "\80\117\110\99\116\117\97\116\105\111\110"), (Arbitrary "\84\101\120\116"), (Arbitrary "\78\97\109\101")])
    ]

root' :: TokenMatcher
root' =
    [ tok "\94\92\115\42\64" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110")
    , tok "\94\40\92\115\42\41\40\114\101\109\92\115\46\42\41\36" (ByGroups [(Arbitrary "\84\101\120\116"), (Arbitrary "\67\111\109\109\101\110\116")])
    , tok "\34\46\42\63\34" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\68\111\117\98\108\101")
    , 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 "\37\37\63\91\126\36\58\92\119\93\43\37\63" (Arbitrary "\78\97\109\101" :. Arbitrary "\86\97\114\105\97\98\108\101")
    , tok "\58\58\46\42" (Arbitrary "\67\111\109\109\101\110\116")
    , tok "\40\115\101\116\41\40\92\115\43\41\40\92\119\43\41" (ByGroups [(Arbitrary "\75\101\121\119\111\114\100"), (Arbitrary "\84\101\120\116"), (Arbitrary "\78\97\109\101" :. Arbitrary "\86\97\114\105\97\98\108\101")])
    , tok "\40\99\97\108\108\41\40\92\115\43\41\40\58\92\119\43\41" (ByGroups [(Arbitrary "\75\101\121\119\111\114\100"), (Arbitrary "\84\101\120\116"), (Arbitrary "\78\97\109\101" :. Arbitrary "\76\97\98\101\108")])
    , tok "\40\103\111\116\111\41\40\92\115\43\41\40\92\119\43\41" (ByGroups [(Arbitrary "\75\101\121\119\111\114\100"), (Arbitrary "\84\101\120\116"), (Arbitrary "\78\97\109\101" :. Arbitrary "\76\97\98\101\108")])
    , tok "\92\98\40\115\101\116\124\99\97\108\108\124\101\99\104\111\124\111\110\124\111\102\102\124\101\110\100\108\111\99\97\108\124\102\111\114\124\100\111\124\103\111\116\111\124\105\102\124\112\97\117\115\101\124\115\101\116\108\111\99\97\108\124\115\104\105\102\116\124\101\114\114\111\114\108\101\118\101\108\124\101\120\105\115\116\124\100\101\102\105\110\101\100\124\99\109\100\101\120\116\118\101\114\115\105\111\110\124\101\114\114\111\114\108\101\118\101\108\124\101\108\115\101\124\99\100\124\109\100\124\100\101\108\124\100\101\108\116\114\101\101\124\99\108\115\124\99\104\111\105\99\101\41\92\98" (Arbitrary "\75\101\121\119\111\114\100")
    , tok "\92\98\40\101\113\117\124\110\101\113\124\108\115\115\124\108\101\113\124\103\116\114\124\103\101\113\41\92\98" (Arbitrary "\79\112\101\114\97\116\111\114")
    , anyOf basic'
    , tok "\46" (Arbitrary "\84\101\120\116")
    ]

echo' :: TokenMatcher
echo' =
    [ tok "\92\94\92\94\124\92\94\60\124\92\94\62\124\92\94\92\124" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\69\115\99\97\112\101")
    , tokNext "\92\110" (Arbitrary "\84\101\120\116") Pop
    , anyOf basic'
    , tok "\91\94\92\39\34\94\93\43" (Arbitrary "\84\101\120\116")
    ]