blagda-0.1.0.0: src/Blagda.hs
{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE TypeApplications #-}
module Blagda
( module Blagda
, module Blagda.Template
, module Blagda.Types
, loadMarkdown
, rename
) where
import Blagda.Agda
import Blagda.Markdown
import Blagda.Template
import Blagda.Rename (rename)
import Blagda.Types
import Blagda.Utils (pattern Strs)
import Data.List
import Data.Map.Lazy (Map)
import Data.Text (Text)
import Development.Shake
import Development.Shake.FilePath
import Text.Pandoc
-- Loads our type lookup table into memory
parseFileTypes :: () -> Action (Map Text Text)
parseFileTypes () = do
need ["_build/all-pages.agda"]
traced "loading types from iface" . runAgda $
tcAndLoadPublicNames "_build/all-pages.agda"
agdaHTML :: FilePath -> Action [FilePath]
agdaHTML dir = do
agda_files <- sort <$> getDirectoryFiles dir ["**/*.agda", "**/*.lagda.md"]
let
toOut x | takeExtensions x == ".lagda.md"
= moduleName (dropExtensions x) ++ " -- (text page)"
toOut x = moduleName (dropExtensions x) ++ " -- (code only)"
-- build the index
writeFileLines "_build/all-pages.agda"
$ ["open import " ++ toOut x | x <- agda_files]
++ ["import " ++ x ++ " -- (builtin)" | x <- builtinModules]
-- get agda html
-- cacheAction @String @() "agda" $
command @() [] "agda"
[ "--html"
, "--html-dir=_build/html0"
, "--html-highlight=auto"
, "--local-interfaces"
, "--css=/css/agda-cats.css"
, "_build/all-pages.agda"
]
pure agda_files
parseMetaString :: MetaValue -> Maybe Text
parseMetaString (MetaString txt) = Just txt
parseMetaString (MetaInlines (Strs txt)) = Just txt
parseMetaString _ = Nothing