zettelkast-0.2.0.0: src/Data/ZettelMeta.hs
{-# LANGUAGE LambdaCase #-}
module Data.ZettelMeta where
import Text.Pandoc
import Text.Pandoc.Walk
import Data.Text
(Text)
import qualified Data.Text as T
import Data.Maybe
(listToMaybe)
import Data.ZettelID
data ZettelMeta
= ZettelMeta { zettelID :: ZettelID
, title :: Text
}
deriving Show
extractTitle :: Block -> [Text]
extractTitle = \case
Header 1 _attr inlines -> [T.unwords (query strings inlines)]
_ -> []
where
strings = \case
Str x -> [x]
_ -> []
zettelMeta :: ZettelID -> Pandoc -> Maybe ZettelMeta
zettelMeta zid p = ZettelMeta zid <$> listToMaybe (query extractTitle p)