{-# LANGUAGE OverloadedStrings #-}

module Text.Pandoc.Util
  (
    meta,
    body,
    parseMarkdown
  ) where

import Data.Text                  qualified as T
import Text.Pandoc                qualified as P

meta :: P.Pandoc -> P.Meta
meta :: Pandoc -> Meta
meta (P.Pandoc Meta
m [Block]
_) = Meta
m

body :: P.Pandoc -> [P.Block]
body :: Pandoc -> [Block]
body (P.Pandoc Meta
_ [Block]
bs) = [Block]
bs

parseMarkdown :: T.Text -> IO P.Pandoc
parseMarkdown :: Text -> IO Pandoc
parseMarkdown Text
s = PandocIO Pandoc -> IO (Either PandocError Pandoc)
forall a. PandocIO a -> IO (Either PandocError a)
P.runIO (ReaderOptions -> Text -> PandocIO Pandoc
forall (m :: * -> *) a.
(PandocMonad m, ToSources a) =>
ReaderOptions -> a -> m Pandoc
P.readMarkdown ReaderOptions
markdownReaderOptions Text
s) IO (Either PandocError Pandoc)
-> (Either PandocError Pandoc -> IO Pandoc) -> IO Pandoc
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Either PandocError Pandoc -> IO Pandoc
forall a. Either PandocError a -> IO a
P.handleError

markdownReaderOptions :: P.ReaderOptions
markdownReaderOptions :: ReaderOptions
markdownReaderOptions = ReaderOptions
forall a. Default a => a
P.def { readerStandalone :: Bool
P.readerStandalone = Bool
True,
                                readerExtensions :: Extensions
P.readerExtensions = Extensions
P.pandocExtensions }