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

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

lexer :: Lexer
lexer = Lexer
    { lName = "\86\105\109\76"
    , lAliases = ["\118\105\109"]
    , lExtensions = ["\46\118\105\109", "\46\118\105\109\114\99"]
    , lMimetypes = ["\116\101\120\116\47\120\45\118\105\109"]
    , lStart = root'
    , lFlags = [multiline]
    }

root' :: TokenMatcher
root' =
    [ tok "\94\92\115\42\34\46\42" (Arbitrary "\67\111\109\109\101\110\116")
    , tok "\40\63\60\61\92\115\41\34\91\94\92\45\58\46\37\35\61\42\93\46\42" (Arbitrary "\67\111\109\109\101\110\116")
    , tok "\91\32\92\116\93\43" (Arbitrary "\84\101\120\116")
    , tok "\47\40\92\92\92\92\124\92\92\47\124\91\94\92\110\47\93\41\42\47" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\82\101\103\101\120")
    , tok "\34\40\92\92\92\92\124\92\92\34\124\91\94\92\110\34\93\41\42\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\40\92\92\92\92\124\92\92\39\124\91\94\92\110\39\93\41\42\39" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\83\105\110\103\108\101")
    , tok "\45\63\92\100\43" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\78\117\109\98\101\114")
    , tok "\35\91\48\45\57\97\45\102\93\123\54\125" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\78\117\109\98\101\114" :. Arbitrary "\72\101\120")
    , tok "\94\58" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110")
    , tok "\91\40\41\60\62\43\61\33\124\44\126\45\93" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110")
    , tok "\92\98\40\108\101\116\124\105\102\124\101\108\115\101\124\101\110\100\105\102\124\101\108\115\101\105\102\124\102\117\110\124\102\117\110\99\116\105\111\110\124\101\110\100\102\117\110\99\116\105\111\110\41\92\98" (Arbitrary "\75\101\121\119\111\114\100")
    , tok "\92\98\40\78\79\78\69\124\98\111\108\100\124\105\116\97\108\105\99\124\117\110\100\101\114\108\105\110\101\124\100\97\114\107\124\108\105\103\104\116\41\92\98" (Arbitrary "\78\97\109\101" :. Arbitrary "\66\117\105\108\116\105\110")
    , tok "\92\98\92\119\43\92\98" (Arbitrary "\78\97\109\101" :. Arbitrary "\79\116\104\101\114")
    , tok "\46" (Arbitrary "\84\101\120\116")
    ]