0 | ||| HTML rendering of fenced idris codeblocks in markdown files
 1 | module Katla.Markdown
 2 |
 3 | import Core.Metadata
 4 | import System.File
 5 |
 6 | import Collie
 7 | import Katla.Config
 8 | import Katla.HTML
 9 |
10 | import Libraries.Text.PrettyPrint.Prettyprinter.Render.HTML as Lib
11 |
12 | export
13 | escapeMarkdown : Config -> Char -> List Char
14 | escapeMarkdown config ' ' = unpack config.space
15 | escapeMarkdown config '_' = unpack "\\_"
16 | escapeMarkdown config '*' = unpack "\\*"
17 | escapeMarkdown config '$' = unpack "$"
18 | escapeMarkdown config '\\' = unpack "\\\\"
19 | escapeMarkdown config '`' = unpack "`"
20 | escapeMarkdown config c = unpack (htmlEscape $ cast c)
21 |
22 | export
23 | standalonePre : Config -> String
24 | standalonePre config = """
25 |   <style>
26 |   \{styleHeader config}
27 |   .IdrisCode {
28 |     display: block;
29 |     background-color: whitesmoke;
30 |   }
31 |   </style>
32 |   """
33 |
34 | export
35 | mkDriver : Config -> Driver
36 | mkDriver config = MkDriver
37 |   (\ wdth, ln => "", "<br />")
38 |   (escapeMarkdown config)
39 |   annotate
40 |   (Markdown.standalonePre config, "")
41 |   (makeInlineMacroPre, makeInlineMacroPost)
42 |   (makeMacroPre, makeMacroPost)
43 |
44 | public export
45 | initMarkdownCmd : Command "init"
46 | initMarkdownCmd = MkCommand
47 |   { description = "Generate default configuration file"
48 |   , subcommands = []
49 |   , modifiers = []
50 |   , arguments = filePath
51 |   }
52 |
53 | export
54 | init : (ParsedCommand _ Markdown.initMarkdownCmd) -> IO ()
55 | init parsed = initExec Markdown parsed.arguments
56 |