0 | ||| LaTeX rendering of fenced idris codeblocks in literate tex files
 1 | module Katla.Literate
 2 |
 3 | import Core.Metadata
 4 | import System.File
 5 | import System.Directory
 6 |
 7 | import Collie
 8 | import Katla.Config
 9 | import Katla.LaTeX
10 |
11 | import Libraries.Text.PrettyPrint.Prettyprinter.Render.HTML as Lib
12 |
13 | export
14 | initStyFile : IO ()
15 | initStyFile = do
16 |   pure ()
17 |
18 | export
19 | makeMacroPre : String -> String
20 | makeMacroPre name = """
21 |   \\begin{code}
22 |   """
23 |
24 | export
25 | makeMacroPost : String
26 | makeMacroPost = """
27 |   \\end{code}
28 |   """
29 |
30 | export
31 | mkDriver : Config -> Driver
32 | mkDriver config = MkDriver
33 |   (\ wdth, ln => "", "\\KatlaNewline{}")
34 |   (escapeLatex)
35 |   annotate
36 |   ("", "")
37 |   (const "", "")
38 |   (Literate.makeMacroPre, Literate.makeMacroPost)
39 |
40 | public export
41 | initLiterateCmd : Command "init"
42 | initLiterateCmd = MkCommand
43 |   { description = "Generate default configuration file"
44 |   , subcommands = []
45 |   , modifiers = []
46 |   , arguments = filePath
47 |   }
48 |
49 | export
50 | init : (ParsedCommand _ Literate.initLiterateCmd) -> IO ()
51 | init parsed = initExec Literate parsed.arguments
52 |
53 | export
54 | initSty : Config -> IO ()
55 | initSty cfg = do
56 |   let styFile = "idris2.sty"
57 |   unless !(exists styFile) $ do
58 |     let content = """
59 |                   \\usepackage{inconsolata}
60 |                   \{laTeXHeader cfg}
61 |                   """
62 |     Right () <- writeFile styFile content
63 |       | Left err => do putStrLn "Error: \{show err}"
64 |                        exitFailure
65 |     pure ()
66 |