module Text.Highlighter.Lexers.Duel (lexer) where import qualified Text.Highlighter.Lexers.Javascript as Javascript import qualified Text.Highlighter.Lexers.Html as Html import qualified Text.Highlighter.Lexers.Javascript as Javascript import qualified Text.Highlighter.Lexers.Html as Html import qualified Text.Highlighter.Lexers.Html as Html import qualified Text.Highlighter.Lexers.Html as Html import Text.Regex.PCRE.Light import Text.Highlighter.Types lexer :: Lexer lexer = Lexer { lName = "Duel" , lAliases = ["duel", "Duel Engine", "Duel View", "JBST", "jbst", "JsonML+BST"] , lExtensions = [".duel", ".jbst"] , lMimetypes = ["text/x-duel", "text/x-jbst"] , lStart = root' , lFlags = [dotall] } root' :: TokenMatcher root' = [ tok "(<%[@=#!:]?)(.*?)(%>)" (ByGroups [(Arbitrary "Name" :. Arbitrary "Tag"), (Using Javascript.lexer), (Arbitrary "Name" :. Arbitrary "Tag")]) , tok "(<%\\$)(.*?)(:)(.*?)(%>)" (ByGroups [(Arbitrary "Name" :. Arbitrary "Tag"), (Arbitrary "Name" :. Arbitrary "Function"), (Arbitrary "Punctuation"), (Arbitrary "Literal" :. Arbitrary "String"), (Arbitrary "Name" :. Arbitrary "Tag")]) , tok "(<%--)(.*?)(--%>)" (ByGroups [(Arbitrary "Name" :. Arbitrary "Tag"), (Arbitrary "Comment" :. Arbitrary "Multiline"), (Arbitrary "Name" :. Arbitrary "Tag")]) , tok "()(.*?)()" (ByGroups [(Using Html.lexer), (Using Javascript.lexer), (Using Html.lexer)]) , tok "(.+?)(?=<)" (Using Html.lexer) , tok ".+" (Using Html.lexer) ]