{-# LANGUAGE ExtendedDefaultRules #-}
{-# LANGUAGE ScopedTypeVariables  #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE DataKinds     #-}
{-# LANGUAGE GADTs         #-}
module Knit.Report.Input.MarkDown.PandocMarkDown
  (
    
    markDownReaderOptions
    
  , addMarkDown
  , addMarkDownWithOptions
  )
where
import qualified Data.Text                     as T
import qualified Text.Pandoc                   as PA
import qualified Polysemy                      as P
import qualified Knit.Effect.Pandoc            as PE
import qualified Knit.Effect.PandocMonad       as PM
markDownReaderOptions :: PA.ReaderOptions
markDownReaderOptions :: ReaderOptions
markDownReaderOptions = ReaderOptions
forall a. Default a => a
PA.def
  { readerStandalone :: Bool
PA.readerStandalone = Bool
True
  , readerExtensions :: Extensions
PA.readerExtensions = [Extension] -> Extensions
PA.extensionsFromList
                            [ Extension
PA.Ext_auto_identifiers
                            , Extension
PA.Ext_backtick_code_blocks
                            , Extension
PA.Ext_fancy_lists
                            , Extension
PA.Ext_footnotes
                            , Extension
PA.Ext_simple_tables
                            , Extension
PA.Ext_multiline_tables
                            , Extension
PA.Ext_tex_math_dollars
                            , Extension
PA.Ext_header_attributes
                            , Extension
PA.Ext_implicit_header_references
                            , Extension
PA.Ext_implicit_figures
                            ]
  }
addMarkDownWithOptions
  :: (PM.PandocEffects effs, P.Member PE.ToPandoc effs)
  => PA.ReaderOptions
  -> T.Text
  -> P.Sem effs ()
addMarkDownWithOptions :: ReaderOptions -> Text -> Sem effs ()
addMarkDownWithOptions = PandocReadFormat Text -> ReaderOptions -> Text -> Sem effs ()
forall (effs :: [(* -> *) -> * -> *]) a.
Member ToPandoc effs =>
PandocReadFormat a -> ReaderOptions -> a -> Sem effs ()
PE.addFrom PandocReadFormat Text
PE.ReadMarkDown
addMarkDown
  :: (PM.PandocEffects effs, P.Member PE.ToPandoc effs)
  => T.Text
  -> P.Sem effs ()
addMarkDown :: Text -> Sem effs ()
addMarkDown = ReaderOptions -> Text -> Sem effs ()
forall (effs :: [(* -> *) -> * -> *]).
(PandocEffects effs, Member ToPandoc effs) =>
ReaderOptions -> Text -> Sem effs ()
addMarkDownWithOptions ReaderOptions
markDownReaderOptions