import Text.Pandoc import Text.Pandoc.JSON import Text.Pandoc.Walk import Control.Monad.State import References import Util.Settings import Util.Options import Util.CodeBlockCaptions import Util.ModifyMeta main :: IO () main = toJSONFilter go go :: Maybe Format -> Pandoc -> IO Pandoc go fmt (Pandoc meta bs) = do dtv <- getSettings meta let doWalk = bottomUpM (codeBlockCaptions opts) bs >>= walkM (replaceBlocks opts) >>= bottomUpM (replaceRefs opts) >>= bottomUpM (listOf opts) opts = getOptions dtv fmt meta' = modifyMeta opts dtv return $ Pandoc meta' $ evalState doWalk def