highlighter-0.2: src/Text/Highlighter/Lexers/Gettext.hs
module Text.Highlighter.Lexers.Gettext (lexer) where
import Text.Regex.PCRE.Light
import Text.Highlighter.Types
lexer :: Lexer
lexer = Lexer
{ lName = "Gettext Catalog"
, lAliases = ["pot", "po"]
, lExtensions = [".pot", ".po"]
, lMimetypes = ["application/x-gettext", "text/x-gettext", "text/gettext"]
, lStart = root'
, lFlags = [multiline]
}
root' :: TokenMatcher
root' =
[ tok "^#,\\s.*?$" (Arbitrary "Keyword" :. Arbitrary "Type")
, tok "^#:\\s.*?$" (Arbitrary "Keyword" :. Arbitrary "Declaration")
, tok "^(#|#\\.\\s|#\\|\\s|#\126\\s|#\\s).*$" (Arbitrary "Comment" :. Arbitrary "Single")
, tok "^(\")([A-Za-z-]+:)(.*\")$" (ByGroups [(Arbitrary "Literal" :. Arbitrary "String"), (Arbitrary "Name" :. Arbitrary "Property"), (Arbitrary "Literal" :. Arbitrary "String")])
, tok "^\".*\"$" (Arbitrary "Literal" :. Arbitrary "String")
, tok "^(msgid|msgid_plural|msgstr)(\\s+)(\".*\")$" (ByGroups [(Arbitrary "Name" :. Arbitrary "Variable"), (Arbitrary "Text"), (Arbitrary "Literal" :. Arbitrary "String")])
, tok "^(msgstr\\[)(\\d)(\\])(\\s+)(\".*\")$" (ByGroups [(Arbitrary "Name" :. Arbitrary "Variable"), (Arbitrary "Literal" :. Arbitrary "Number" :. Arbitrary "Integer"), (Arbitrary "Name" :. Arbitrary "Variable"), (Arbitrary "Text"), (Arbitrary "Literal" :. Arbitrary "String")])
]