module FormatPangoMarkup (formatPangoMarkup, formatPangoMarkupWhite) where import Text.Highlighting.Kate import Graphics.Rendering.Pango -- TODO: should use blaze-builder tokColor :: TokenType -> String tokColor KeywordTok = "" tokColor DataTypeTok = "" tokColor DecValTok = "" tokColor BaseNTok = "" tokColor FloatTok = "" tokColor CharTok = "" tokColor StringTok = "" tokColor CommentTok = "" tokColor OtherTok = "" tokColor AlertTok = "" tokColor FunctionTok = "" tokColor RegionMarkerTok = "" tokColor ErrorTok = "" tokColor NormalTok = "" tokShape :: TokenType -> String tokShape KeywordTok = "" tokShape DataTypeTok = "" tokShape DecValTok = "" tokShape BaseNTok = "" tokShape FloatTok = "" tokShape CharTok = "" tokShape StringTok = "" tokShape CommentTok = "" tokShape OtherTok = "" tokShape AlertTok = "" tokShape FunctionTok = "" tokShape RegionMarkerTok = "" tokShape ErrorTok = "" tokShape NormalTok = "" tagTok, tagTokShape :: Token -> String tagTok (t, s) = tokColor t ++ tokShape t ++ escapeMarkup s ++ "" tagTokShape (t, s) = tokShape t ++ escapeMarkup s ++ "" formatPangoMarkup :: String -> String -> String formatPangoMarkup lang = unlines . fmap (concat . fmap tagTok) . highlightAs lang formatPangoMarkupWhite :: String -> String -> String formatPangoMarkupWhite lang text = "" ++ (unlines . fmap (concat . fmap tagTokShape) . highlightAs lang) text ++ ""