Start extracting titles from recipes

This commit is contained in:
2024-10-11 22:41:31 +02:00
parent afec7f814f
commit eae34707e9
2 changed files with 27 additions and 10 deletions

View File

@@ -1,6 +1,7 @@
module Functions.Pandoc
( readMarkdown
, writeHtml
, extractTitle
) where
import Types (IsFunction(..), Token)
@@ -8,6 +9,8 @@ import DependencyGenerator (DepGenM, TokenableTo(..), runFunction)
import Data.Text (Text)
import Text.Pandoc.Definition (Pandoc)
import qualified Text.Pandoc.Definition as PD
import qualified Text.Pandoc.Shared as PS
import qualified Text.Pandoc as P
runPandoc :: P.PandocPure a -> a
@@ -33,3 +36,13 @@ instance IsFunction WriteHtml Pandoc Text where
writeHtml :: TokenableTo Pandoc a => a -> DepGenM (Token Text)
writeHtml a = runFunction WriteHtml =<< toToken a
data ExtractTitle = ExtractTitle deriving Show
instance IsFunction ExtractTitle Pandoc Text where
evalFunction ExtractTitle (PD.Pandoc _ blocks) = case blocks of
(PD.Header 1 _ inlines : _) -> PS.stringify inlines
_ -> error "unexpected"
extractTitle :: TokenableTo Pandoc a => a -> DepGenM (Token Text)
extractTitle a = runFunction ExtractTitle =<< toToken a