zettelkast-0.1.0.0: src/Data/Zettel.hs
module Data.Zettel where
import qualified Data.Text as T
import qualified Data.Text.IO as T
import System.Directory (listDirectory)
import Data.Path
import Data.ZettelID
import Data.ZettelPath
import Data.Pointed (Pointed, point)
import Text.Pandoc
zettels :: (Monoid (f (Maybe ZettelID)), Pointed f) => ZettelRoot -> IO (f (Maybe ZettelID))
zettels (ZettelRoot r) = do
paths <- listDirectory (toPosixPath r)
let files = map (\p -> r ./ file (T.pack p)) paths
pure $ foldMap (point . fromPath) files
readZettel :: ZettelRoot -> ZettelID -> IO (Either PandocError Pandoc)
readZettel (ZettelRoot base) zid = do
contents <- T.readFile (toPosixPath (base ./ toPath zid))
runIO (readMarkdown def contents)