highlighter-0.2: src/Text/Highlighter/Lexers/SourcesList.hs
module Text.Highlighter.Lexers.SourcesList (lexer) where
import Text.Regex.PCRE.Light
import Text.Highlighter.Types
lexer :: Lexer
lexer = Lexer
{ lName = "Debian Sourcelist"
, lAliases = ["sourceslist", "sources.list"]
, lExtensions = ["sources.list"]
, lMimetypes = []
, lStart = root'
, lFlags = [multiline]
}
distribution' :: TokenMatcher
distribution' =
[ tokNext "#.*?$" (Arbitrary "Comment") Pop
, tok "\\$\\(ARCH\\)" (Arbitrary "Name" :. Arbitrary "Variable")
, tok "[^\\s$[]+" (Arbitrary "Literal" :. Arbitrary "String")
, tokNext "\\[" (Arbitrary "Literal" :. Arbitrary "String" :. Arbitrary "Other") (GoTo escapedDistribution')
, tok "\\$" (Arbitrary "Literal" :. Arbitrary "String")
, tokNext "\\s+" (Arbitrary "Text") (GoTo components')
]
root' :: TokenMatcher
root' =
[ tok "\\s+" (Arbitrary "Text")
, tok "#.*?$" (Arbitrary "Comment")
, tokNext "^(deb(?:-src)?)(\\s+)" (ByGroups [(Arbitrary "Keyword"), (Arbitrary "Text")]) (GoTo distribution')
]
escapedDistribution' :: TokenMatcher
escapedDistribution' =
[ tokNext "\\]" (Arbitrary "Literal" :. Arbitrary "String" :. Arbitrary "Other") Pop
, tok "\\$\\(ARCH\\)" (Arbitrary "Name" :. Arbitrary "Variable")
, tok "[^\\]$]+" (Arbitrary "Literal" :. Arbitrary "String" :. Arbitrary "Other")
, tok "\\$" (Arbitrary "Literal" :. Arbitrary "String" :. Arbitrary "Other")
]
components' :: TokenMatcher
components' =
[ tokNext "#.*?$" (Arbitrary "Comment") (PopNum 2)
, tokNext "$" (Arbitrary "Text") (PopNum 2)
, tok "\\s+" (Arbitrary "Text")
, tok "\\S+" (Arbitrary "Keyword" :. Arbitrary "Pseudo")
]