heist-extra-0.1.0.0: src/Heist/Extra/Splices/Pandoc/TaskList.hs
-- GFM Task List, https://github.github.com/gfm/#task-list-items-extension-
module Heist.Extra.Splices.Pandoc.TaskList (
parseTaskFromInlines,
queryTasks,
) where
import Text.Pandoc.Builder qualified as B
import Text.Pandoc.Walk qualified as W
parseTaskFromInlines :: [B.Inline] -> Maybe (Bool, [B.Inline])
parseTaskFromInlines = \case
B.Str "[" : B.Space : B.Str "]" : B.Space : taskInlines ->
pure (False, taskInlines)
B.Str "[x]" : B.Space : taskInlines ->
pure (True, taskInlines)
_ ->
Nothing
queryTasks :: W.Walkable B.Block b => b -> [(Bool, [B.Inline])]
queryTasks =
W.query $ \case
B.Plain is ->
maybeToList $ parseTaskFromInlines is
B.Para is ->
maybeToList $ parseTaskFromInlines is
_ ->
mempty