pandoc-3.1.13: Conversion between markup formats

Copyright | Copyright (C) 2016-2020 Jesse Rosenthal John MacFarlane
License | GNU GPL, version 2 or above
Maintainer | Jesse Rosenthal <jrosenthal@jhu.edu>
Stability | alpha
Portability | portable
Safe Haskell | None
Language | Haskell2010

Text.Pandoc.Class

Description

This module defines a type class, `PandocMonad`, for pandoc readers and writers. A pure instance `PandocPure` and an impure instance `PandocIO` are provided. This allows users of the library to choose whether they want conversions to perform IO operations (such as reading include files or images).

Synopsis

- data CommonState = CommonState {
  - stLog :: [LogMessage]
  - stUserDataDir :: Maybe FilePath
  - stSourceURL :: Maybe Text
  - stRequestHeaders :: [(Text, Text)]
  - stNoCheckCertificate :: Bool
  - stMediaBag :: MediaBag
  - stTranslations :: Maybe (Lang, Maybe Translations)
  - stInputFiles :: [FilePath]
  - stOutputFile :: Maybe FilePath
  - stResourcePath :: [FilePath]
  - stVerbosity :: Verbosity
  - stTrace :: Bool
  }
- runIO :: PandocIO a -> IO (Either PandocError a)
- extractMedia :: (PandocMonad m, MonadIO m) => FilePath -> Pandoc -> m Pandoc
- runIOorExplode :: PandocIO a -> IO a
- newtype PandocIO a = PandocIO {
  - unPandocIO :: ExceptT PandocError (StateT CommonState IO) a
  }
- class (Functor m, Applicative m, Monad m, MonadError PandocError m) => PandocMonad (m :: Type -> Type) where
  - lookupEnv :: Text -> m (Maybe Text)
  - getCurrentTime :: m UTCTime
  - getCurrentTimeZone :: m TimeZone
  - newStdGen :: m StdGen
  - newUniqueHash :: m Int
  - openURL :: Text -> m (ByteString, Maybe MimeType)
  - readFileLazy :: FilePath -> m ByteString
  - readFileStrict :: FilePath -> m ByteString
  - readStdinStrict :: m ByteString
  - glob :: String -> m [FilePath]
  - fileExists :: FilePath -> m Bool
  - getDataFileName :: FilePath -> m FilePath
  - getModificationTime :: FilePath -> m UTCTime
  - getCommonState :: m CommonState
  - putCommonState :: CommonState -> m ()
  - getsCommonState :: (CommonState -> a) -> m a
  - modifyCommonState :: (CommonState -> CommonState) -> m ()
  - logOutput :: LogMessage -> m ()
  - trace :: Text -> m ()
- report :: PandocMonad m => LogMessage -> m ()
- getPOSIXTime :: PandocMonad m => m POSIXTime
- getZonedTime :: PandocMonad m => m ZonedTime
- checkUserDataDir :: PandocMonad m => FilePath -> m (Maybe FilePath)
- getTimestamp :: PandocMonad m => m UTCTime
- getUserDataDir :: PandocMonad m => m (Maybe FilePath)
- makeCanonical :: FilePath -> FilePath
- insertMedia :: PandocMonad m => FilePath -> Maybe MimeType -> ByteString -> m ()
- findFileWithDataFallback :: PandocMonad m => FilePath -> FilePath -> m (Maybe FilePath)
- getVerbosity :: PandocMonad m => m Verbosity
- toTextM :: PandocMonad m => FilePath -> ByteString -> m Text
- getResourcePath :: PandocMonad m => m [FilePath]
- readFileFromDirs :: PandocMonad m => [FilePath] -> FilePath -> m (Maybe Text)
- setResourcePath :: PandocMonad m => [FilePath] -> m ()
- fetchItem :: PandocMonad m => Text -> m (ByteString, Maybe MimeType)
- getMediaBag :: PandocMonad m => m MediaBag
- toLang :: PandocMonad m => Maybe Text -> m (Maybe Lang)
- fillMediaBag :: PandocMonad m => Pandoc -> m Pandoc
- setVerbosity :: PandocMonad m => Verbosity -> m ()
- getInputFiles :: PandocMonad m => m [FilePath]
- setInputFiles :: PandocMonad m => [FilePath] -> m ()
- setTrace :: PandocMonad m => Bool -> m ()
- setRequestHeader :: PandocMonad m => Text -> Text -> m ()
- setNoCheckCertificate :: PandocMonad m => Bool -> m ()
- getLog :: PandocMonad m => m [LogMessage]
- setMediaBag :: PandocMonad m => MediaBag -> m ()
- setUserDataDir :: PandocMonad m => Maybe FilePath -> m ()
- getOutputFile :: PandocMonad m => m (Maybe FilePath)
- setOutputFile :: PandocMonad m => Maybe FilePath -> m ()
- readMetadataFile :: PandocMonad m => FilePath -> m ByteString
- newtype PandocPure a = PandocPure {
  - unPandocPure :: ExceptT PandocError (StateT CommonState (State PureState)) a
  }
- runPure :: PandocPure a -> Either PandocError a
- data PureState = PureState {
  - stStdGen :: StdGen
  - stWord8Store :: [Word8]
  - stUniqStore :: [Int]
  - stEnv :: [(Text, Text)]
  - stTime :: UTCTime
  - stTimeZone :: TimeZone
  - stReferenceDocx :: Archive
  - stReferencePptx :: Archive
  - stReferenceODT :: Archive
  - stFiles :: FileTree
  - stStdin :: ByteString
  - stUserDataFiles :: FileTree
  - stCabalDataFiles :: FileTree
  }
- getPureState :: PandocPure PureState
- getsPureState :: (PureState -> a) -> PandocPure a
- putPureState :: PureState -> PandocPure ()
- modifyPureState :: (PureState -> PureState) -> PandocPure ()
- data FileTree
- data FileInfo = FileInfo {
  - infoFileMTime :: UTCTime
  - infoFileContents :: ByteString
  }
- addToFileTree :: FileTree -> FilePath -> IO FileTree
- insertInFileTree :: FilePath -> FileInfo -> FileTree -> FileTree
- sandbox :: (PandocMonad m, MonadIO m) => [FilePath] -> PandocPure a -> m a
- data Translations

# Documentation

data CommonState #

`CommonState` represents state that is used by all instances of `PandocMonad`. Normally users should not need to interact with it directly; instead, auxiliary functions like `setVerbosity` and `withMediaBag` should be used.

Constructors

CommonState |
Fields stLog :: [LogMessage] A list of log messages in reverse order stUserDataDir :: Maybe FilePath Directory to search for data files stSourceURL :: Maybe Text Absolute URL + dir of 1st source file stRequestHeaders :: [(Text, Text)] Headers to add for HTTP requests stNoCheckCertificate :: Bool Controls whether certificate validation is disabled stMediaBag :: MediaBag Media parsed from binary containers stTranslations :: Maybe (Lang, Maybe Translations) Translations for localization stInputFiles :: [FilePath] List of input files from command line stOutputFile :: Maybe FilePath Output file from command line stResourcePath :: [FilePath] Path to search for resources like included images stVerbosity :: Verbosity Verbosity level stTrace :: Bool Controls whether tracing messages are issued.

#### Instances

Instances details

Default CommonState # |
Instance details Defined in Text.Pandoc.Class.CommonState Methods def :: CommonState #

runIO :: PandocIO a -> IO (Either PandocError a) #

Evaluate a `PandocIO` operation.

extractMedia :: (PandocMonad m, MonadIO m) => FilePath -> Pandoc -> m Pandoc #

Extract media from the mediabag into a directory.

runIOorExplode :: PandocIO a -> IO a #

Evaluate a `PandocIO` operation, handling any errors by exiting with an appropriate message and error status.

newtype PandocIO a #

Constructors

PandocIO |
Fields unPandocIO :: ExceptT PandocError (StateT CommonState IO) a

#### Instances

Instances details

MonadIO PandocIO # |
Instance details Defined in Text.Pandoc.Class.PandocIO Methods liftIO :: IO a -> PandocIO a #
Applicative PandocIO # |
Instance details Defined in Text.Pandoc.Class.PandocIO Methods pure :: a -> PandocIO a # (<*>) :: PandocIO (a -> b) -> PandocIO a -> PandocIO b # liftA2 :: (a -> b -> c) -> PandocIO a -> PandocIO b -> PandocIO c # (*>) :: PandocIO a -> PandocIO b -> PandocIO b # (<*) :: PandocIO a -> PandocIO b -> PandocIO a #
Functor PandocIO # |
Instance details Defined in Text.Pandoc.Class.PandocIO Methods fmap :: (a -> b) -> PandocIO a -> PandocIO b # (<$) :: a -> PandocIO b -> PandocIO a #
Monad PandocIO # |
Instance details Defined in Text.Pandoc.Class.PandocIO Methods (>>=) :: PandocIO a -> (a -> PandocIO b) -> PandocIO b # (>>) :: PandocIO a -> PandocIO b -> PandocIO b # return :: a -> PandocIO a #
MonadCatch PandocIO # |
Instance details Defined in Text.Pandoc.Class.PandocIO Methods catch :: (HasCallStack, Exception e) => PandocIO a -> (e -> PandocIO a) -> PandocIO a #
MonadMask PandocIO # |
Instance details Defined in Text.Pandoc.Class.PandocIO Methods mask :: HasCallStack => ((forall a. PandocIO a -> PandocIO a) -> PandocIO b) -> PandocIO b # uninterruptibleMask :: HasCallStack => ((forall a. PandocIO a -> PandocIO a) -> PandocIO b) -> PandocIO b # generalBracket :: HasCallStack => PandocIO a -> (a -> ExitCase b -> PandocIO c) -> (a -> PandocIO b) -> PandocIO (b, c) #
MonadThrow PandocIO # |
Instance details Defined in Text.Pandoc.Class.PandocIO Methods throwM :: (HasCallStack, Exception e) => e -> PandocIO a #
PandocMonad PandocIO # |
Instance details Defined in Text.Pandoc.Class.PandocIO Methods lookupEnv :: Text -> PandocIO (Maybe Text) # getCurrentTime :: PandocIO UTCTime # getCurrentTimeZone :: PandocIO TimeZone # newStdGen :: PandocIO StdGen # newUniqueHash :: PandocIO Int # openURL :: Text -> PandocIO (ByteString, Maybe MimeType) # readFileLazy :: FilePath -> PandocIO ByteString # readFileStrict :: FilePath -> PandocIO ByteString # readStdinStrict :: PandocIO ByteString # glob :: String -> PandocIO [FilePath] # fileExists :: FilePath -> PandocIO Bool # getDataFileName :: FilePath -> PandocIO FilePath # getModificationTime :: FilePath -> PandocIO UTCTime # getCommonState :: PandocIO CommonState # putCommonState :: CommonState -> PandocIO () # getsCommonState :: (CommonState -> a) -> PandocIO a # modifyCommonState :: (CommonState -> CommonState) -> PandocIO () # logOutput :: LogMessage -> PandocIO () # trace :: Text -> PandocIO () #
MonadError PandocError PandocIO # |
Instance details Defined in Text.Pandoc.Class.PandocIO Methods throwError :: PandocError -> PandocIO a # catchError :: PandocIO a -> (PandocError -> PandocIO a) -> PandocIO a #

class (Functor m, Applicative m, Monad m, MonadError PandocError m) => PandocMonad (m :: Type -> Type) where #

The PandocMonad typeclass contains all the potentially IO-related functions used in pandoc's readers and writers. Instances of this typeclass may implement these functions in IO (as in `PandocIO`) or using an internal state that represents a file system, time, and so on (as in `PandocPure`).

Minimal complete definition

lookupEnv, getCurrentTime, getCurrentTimeZone, newStdGen, newUniqueHash, openURL, readFileLazy, readFileStrict, readStdinStrict, glob, fileExists, getDataFileName, getModificationTime, getCommonState, putCommonState, logOutput

Methods

lookupEnv :: Text -> m (Maybe Text) #

Lookup an environment variable.

getCurrentTime :: m UTCTime #

Get the current (UTC) time.

getCurrentTimeZone :: m TimeZone #

Get the locale's time zone.

newStdGen :: m StdGen #

Return a new generator for random numbers.

newUniqueHash :: m Int #

Return a new unique integer.

openURL :: Text -> m (ByteString, Maybe MimeType) #

Retrieve contents and mime type from a URL, raising an error on failure.

readFileLazy :: FilePath -> m ByteString #

Read the lazy ByteString contents from a file path, raising an error on failure.

readFileStrict :: FilePath -> m ByteString #

Read the strict ByteString contents from a file path, raising an error on failure.

readStdinStrict :: m ByteString #

Read the contents of stdin as a strict ByteString, raising an error on failure.

glob :: String -> m [FilePath] #

Return a list of paths that match a glob, relative to the working directory. See `Glob` for the glob syntax.

fileExists :: FilePath -> m Bool #

Returns True if file exists.

getDataFileName :: FilePath -> m FilePath #

Returns the path of data file.

getModificationTime :: FilePath -> m UTCTime #

Return the modification time of a file.

getCommonState :: m CommonState #

Get the value of the `CommonState` used by all instances of `PandocMonad`.

putCommonState :: CommonState -> m () #

Set the value of the `CommonState` used by all instances of `PandocMonad`. | Get the value of a specific field of `CommonState`.

getsCommonState :: (CommonState -> a) -> m a #

Get the value of a specific field of `CommonState`.

modifyCommonState :: (CommonState -> CommonState) -> m () #

Modify the `CommonState`.

logOutput :: LogMessage -> m () #

Output a log message.

trace :: Text -> m () #

Output a debug message to sterr, using `trace`, if tracing is enabled. Note: this writes to stderr even in pure instances.

#### Instances

Instances details

PandocMonad PandocIO # |
Instance details Defined in Text.Pandoc.Class.PandocIO Methods lookupEnv :: Text -> PandocIO (Maybe Text) # getCurrentTime :: PandocIO UTCTime # getCurrentTimeZone :: PandocIO TimeZone # newStdGen :: PandocIO StdGen # newUniqueHash :: PandocIO Int # openURL :: Text -> PandocIO (ByteString, Maybe MimeType) # readFileLazy :: FilePath -> PandocIO ByteString # readFileStrict :: FilePath -> PandocIO ByteString # readStdinStrict :: PandocIO ByteString # glob :: String -> PandocIO [FilePath] # fileExists :: FilePath -> PandocIO Bool # getDataFileName :: FilePath -> PandocIO FilePath # getModificationTime :: FilePath -> PandocIO UTCTime # getCommonState :: PandocIO CommonState # putCommonState :: CommonState -> PandocIO () # getsCommonState :: (CommonState -> a) -> PandocIO a # modifyCommonState :: (CommonState -> CommonState) -> PandocIO () # logOutput :: LogMessage -> PandocIO () # trace :: Text -> PandocIO () #
PandocMonad PandocPure # |
Instance details Defined in Text.Pandoc.Class.PandocPure Methods lookupEnv :: Text -> PandocPure (Maybe Text) # getCurrentTime :: PandocPure UTCTime # getCurrentTimeZone :: PandocPure TimeZone # newStdGen :: PandocPure StdGen # newUniqueHash :: PandocPure Int # openURL :: Text -> PandocPure (ByteString, Maybe MimeType) # readFileLazy :: FilePath -> PandocPure ByteString # readFileStrict :: FilePath -> PandocPure ByteString # readStdinStrict :: PandocPure ByteString # glob :: String -> PandocPure [FilePath] # fileExists :: FilePath -> PandocPure Bool # getDataFileName :: FilePath -> PandocPure FilePath # getModificationTime :: FilePath -> PandocPure UTCTime # getCommonState :: PandocPure CommonState # putCommonState :: CommonState -> PandocPure () # getsCommonState :: (CommonState -> a) -> PandocPure a # modifyCommonState :: (CommonState -> CommonState) -> PandocPure () # logOutput :: LogMessage -> PandocPure () # trace :: Text -> PandocPure () #
(MonadTrans t, PandocMonad m, Functor (t m), MonadError PandocError (t m), Monad (t m), Applicative (t m)) => PandocMonad (t m) # |
Instance details Defined in Text.Pandoc.Class.PandocMonad Methods lookupEnv :: Text -> t m (Maybe Text) # getCurrentTime :: t m UTCTime # getCurrentTimeZone :: t m TimeZone # newStdGen :: t m StdGen # newUniqueHash :: t m Int # openURL :: Text -> t m (ByteString, Maybe MimeType) # readFileLazy :: FilePath -> t m ByteString # readFileStrict :: FilePath -> t m ByteString # readStdinStrict :: t m ByteString # glob :: String -> t m [FilePath] # fileExists :: FilePath -> t m Bool # getDataFileName :: FilePath -> t m FilePath # getModificationTime :: FilePath -> t m UTCTime # getCommonState :: t m CommonState # putCommonState :: CommonState -> t m () # getsCommonState :: (CommonState -> a) -> t m a # modifyCommonState :: (CommonState -> CommonState) -> t m () # logOutput :: LogMessage -> t m () # trace :: Text -> t m () #
PandocMonad m => PandocMonad (ParsecT s st m) # |
Instance details Defined in Text.Pandoc.Class.PandocMonad Methods lookupEnv :: Text -> ParsecT s st m (Maybe Text) # getCurrentTime :: ParsecT s st m UTCTime # getCurrentTimeZone :: ParsecT s st m TimeZone # newStdGen :: ParsecT s st m StdGen # newUniqueHash :: ParsecT s st m Int # openURL :: Text -> ParsecT s st m (ByteString, Maybe MimeType) # readFileLazy :: FilePath -> ParsecT s st m ByteString # readFileStrict :: FilePath -> ParsecT s st m ByteString # readStdinStrict :: ParsecT s st m ByteString # glob :: String -> ParsecT s st m [FilePath] # fileExists :: FilePath -> ParsecT s st m Bool # getDataFileName :: FilePath -> ParsecT s st m FilePath # getModificationTime :: FilePath -> ParsecT s st m UTCTime # getCommonState :: ParsecT s st m CommonState # putCommonState :: CommonState -> ParsecT s st m () # getsCommonState :: (CommonState -> a) -> ParsecT s st m a # modifyCommonState :: (CommonState -> CommonState) -> ParsecT s st m () # logOutput :: LogMessage -> ParsecT s st m () # trace :: Text -> ParsecT s st m () #

report :: PandocMonad m => LogMessage -> m () #

Log a message using `logOutput`. Note that `logOutput` is called only if the verbosity level exceeds the level of the message, but the message is added to the list of log messages that will be retrieved by `getLog` regardless of its verbosity level.

getPOSIXTime :: PandocMonad m => m POSIXTime #

Get the POSIX time. If `SOURCE_DATE_EPOCH` is set to a unix time, it is used instead of the current time.

getZonedTime :: PandocMonad m => m ZonedTime #

Get the zoned time. If `SOURCE_DATE_EPOCH` is set to a unix time, value (POSIX time), it is used instead of the current time.

checkUserDataDir :: PandocMonad m => FilePath -> m (Maybe FilePath) #

Returns possible user data directory if the file path refers to a file or subdirectory within it.

getTimestamp :: PandocMonad m => m UTCTime #

Get the current UTC time. If the `SOURCE_DATE_EPOCH` environment variable is set to a unix time (number of seconds since midnight Jan 01 1970 UTC), it is used instead of the current time, to support reproducible builds.

getUserDataDir :: PandocMonad m => m (Maybe FilePath) #

Get the user data directory from common state.

makeCanonical :: FilePath -> FilePath #

Canonicalizes a file path by removing redundant `.` and `..`.

insertMedia :: PandocMonad m => FilePath -> Maybe MimeType -> ByteString -> m () #

Insert an item into the media bag.

findFileWithDataFallback #

Arguments

:: PandocMonad m |
=> FilePath | subdir
-> FilePath | fp
-> m (Maybe FilePath) |

Returns `fp` if the file exists in the current directory; otherwise searches for the data file relative to `subdir`. Returns `Nothing` if neither file exists.

getVerbosity :: PandocMonad m => m Verbosity #

Get the verbosity level.

toTextM :: PandocMonad m => FilePath -> ByteString -> m Text #

A variant of Text.Pandoc.UTF8.toText that takes a FilePath as well as the file's contents as parameter, and traps UTF8 decoding errors so it can issue a more informative PandocUTF8DecodingError with source position.

getResourcePath :: PandocMonad m => m [FilePath] #

Retrieve the resource path searched by `fetchItem`.

readFileFromDirs :: PandocMonad m => [FilePath] -> FilePath -> m (Maybe Text) #

Read file, checking in any number of directories.

setResourcePath :: PandocMonad m => [FilePath] -> m () #

Set the resource path searched by `fetchItem`.

fetchItem :: PandocMonad m => Text -> m (ByteString, Maybe MimeType) #

Fetch an image or other item from the local filesystem or the net. Returns raw content and maybe mime type.

getMediaBag :: PandocMonad m => m MediaBag #

Retrieve the media bag.

toLang :: PandocMonad m => Maybe Text -> m (Maybe Lang) #

Convert BCP47 string to a Lang, issuing warning if there are problems.

fillMediaBag :: PandocMonad m => Pandoc -> m Pandoc #

Traverse tree, filling media bag for any images that aren't already in the media bag.

setVerbosity :: PandocMonad m => Verbosity -> m () #

Set the verbosity level.

getInputFiles :: PandocMonad m => m [FilePath] #

Retrieve the input filenames.

setInputFiles :: PandocMonad m => [FilePath] -> m () #

Set the input filenames.

setTrace :: PandocMonad m => Bool -> m () #

Determine whether tracing is enabled. This affects the behavior of `trace`. If tracing is not enabled, `trace` does nothing.

setRequestHeader #

Arguments

:: PandocMonad m |
=> Text | Header name
-> Text | Value
-> m () |

Set request header to use in HTTP requests.

setNoCheckCertificate :: PandocMonad m => Bool -> m () #

Determine whether certificate validation is disabled

getLog :: PandocMonad m => m [LogMessage] #

Get the accumulated log messages (in temporal order).

setMediaBag :: PandocMonad m => MediaBag -> m () #

Initialize the media bag.

setUserDataDir :: PandocMonad m => Maybe FilePath -> m () #

Set the user data directory in common state.

getOutputFile :: PandocMonad m => m (Maybe FilePath) #

Retrieve the output filename.

setOutputFile :: PandocMonad m => Maybe FilePath -> m () #

Set the output filename.

readMetadataFile :: PandocMonad m => FilePath -> m ByteString #

Read metadata file from the working directory or, if not found there, from the metadata subdirectory of the user data directory.

newtype PandocPure a #

Constructors

PandocPure |
Fields unPandocPure :: ExceptT PandocError (StateT CommonState (State PureState)) a

#### Instances

Instances details

Applicative PandocPure # |
Instance details Defined in Text.Pandoc.Class.PandocPure Methods pure :: a -> PandocPure a # (<*>) :: PandocPure (a -> b) -> PandocPure a -> PandocPure b # liftA2 :: (a -> b -> c) -> PandocPure a -> PandocPure b -> PandocPure c # (*>) :: PandocPure a -> PandocPure b -> PandocPure b # (<*) :: PandocPure a -> PandocPure b -> PandocPure a #
Functor PandocPure # |
Instance details Defined in Text.Pandoc.Class.PandocPure Methods fmap :: (a -> b) -> PandocPure a -> PandocPure b # (<$) :: a -> PandocPure b -> PandocPure a #
Monad PandocPure # |
Instance details Defined in Text.Pandoc.Class.PandocPure Methods (>>=) :: PandocPure a -> (a -> PandocPure b) -> PandocPure b # (>>) :: PandocPure a -> PandocPure b -> PandocPure b # return :: a -> PandocPure a #
PandocMonad PandocPure # |
Instance details Defined in Text.Pandoc.Class.PandocPure Methods lookupEnv :: Text -> PandocPure (Maybe Text) # getCurrentTime :: PandocPure UTCTime # getCurrentTimeZone :: PandocPure TimeZone # newStdGen :: PandocPure StdGen # newUniqueHash :: PandocPure Int # openURL :: Text -> PandocPure (ByteString, Maybe MimeType) # readFileLazy :: FilePath -> PandocPure ByteString # readFileStrict :: FilePath -> PandocPure ByteString # readStdinStrict :: PandocPure ByteString # glob :: String -> PandocPure [FilePath] # fileExists :: FilePath -> PandocPure Bool # getDataFileName :: FilePath -> PandocPure FilePath # getModificationTime :: FilePath -> PandocPure UTCTime # getCommonState :: PandocPure CommonState # putCommonState :: CommonState -> PandocPure () # getsCommonState :: (CommonState -> a) -> PandocPure a # modifyCommonState :: (CommonState -> CommonState) -> PandocPure () # logOutput :: LogMessage -> PandocPure () # trace :: Text -> PandocPure () #
MonadError PandocError PandocPure # |
Instance details Defined in Text.Pandoc.Class.PandocPure Methods throwError :: PandocError -> PandocPure a # catchError :: PandocPure a -> (PandocError -> PandocPure a) -> PandocPure a #

runPure :: PandocPure a -> Either PandocError a #

Run a `PandocPure` operation.

data PureState #

The `PureState` contains ersatz representations of things that would normally be obtained through IO.

Constructors

PureState |
Fields stStdGen :: StdGen stWord8Store :: [Word8] should be infinite, i.e. [1..] stUniqStore :: [Int] should be infinite and contain every element at most once, e.g. [1..] stEnv :: [(Text, Text)] stTime :: UTCTime stTimeZone :: TimeZone stReferenceDocx :: Archive stReferencePptx :: Archive stReferenceODT :: Archive stFiles :: FileTree stStdin :: ByteString stUserDataFiles :: FileTree stCabalDataFiles :: FileTree

#### Instances

Instances details

Default PureState # |
Instance details Defined in Text.Pandoc.Class.PandocPure Methods def :: PureState #

getPureState :: PandocPure PureState #

Retrieve the underlying state of the ``PandocPure`` type.

getsPureState :: (PureState -> a) -> PandocPure a #

Retrieve a value from the underlying state of the ``PandocPure`` type.

putPureState :: PureState -> PandocPure () #

Set a new state for the ``PandocPure`` type.

modifyPureState :: (PureState -> PureState) -> PandocPure () #

Modify the underlying state of the ``PandocPure`` type.

data FileTree #

Basis of the mock file system used by ``PandocPure``.

#### Instances

Instances details

Monoid FileTree # |
Instance details Defined in Text.Pandoc.Class.PandocPure Methods mempty :: FileTree # mappend :: FileTree -> FileTree -> FileTree # mconcat :: [FileTree] -> FileTree #
Semigroup FileTree # |
Instance details Defined in Text.Pandoc.Class.PandocPure Methods (<>) :: FileTree -> FileTree -> FileTree # sconcat :: NonEmpty FileTree -> FileTree # stimes :: Integral b => b -> FileTree -> FileTree #

data FileInfo #

Captures all file-level information necessary for a ``PandocMonad`` conforming mock file system.

Constructors

FileInfo |
Fields infoFileMTime :: UTCTime infoFileContents :: ByteString

addToFileTree :: FileTree -> FilePath -> IO FileTree #

Add the specified file to the FileTree. If file is a directory, add its contents recursively.

insertInFileTree :: FilePath -> FileInfo -> FileTree -> FileTree #

Insert an ersatz file into the `FileTree`.

sandbox :: (PandocMonad m, MonadIO m) => [FilePath] -> PandocPure a -> m a #

Lift a PandocPure action into any instance of PandocMonad. The main computation is done purely, but CommonState is preserved continuously, and warnings are emitted after the action completes. The parameter is a list of FilePaths which will be added to the ersatz file system and be available for reading.

data Translations #

#### Instances

Instances details

FromJSON Translations # |
Instance details Defined in Text.Pandoc.Translations.Types Methods parseJSON :: Value -> Parser Translations # parseJSONList :: Value -> Parser [Translations] # omittedField :: Maybe Translations #
Monoid Translations # |
Instance details Defined in Text.Pandoc.Translations.Types Methods mempty :: Translations # mappend :: Translations -> Translations -> Translations # mconcat :: [Translations] -> Translations #
Semigroup Translations # |
Instance details Defined in Text.Pandoc.Translations.Types Methods (<>) :: Translations -> Translations -> Translations # sconcat :: NonEmpty Translations -> Translations # stimes :: Integral b => b -> Translations -> Translations #
Generic Translations # |
Instance details Defined in Text.Pandoc.Translations.Types Associated Types
type Rep Translations |
Instance details Defined in Text.Pandoc.Translations.Types type Rep Translations = D1 ('MetaData "Translations" "Text.Pandoc.Translations.Types" "pandoc-3.1.13-4z6Ggw740m1ARLbD77fK9I" 'True) (C1 ('MetaCons "Translations" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map Term Text))))
Methods from :: Translations -> Rep Translations x # to :: Rep Translations x -> Translations #
Show Translations # |
Instance details Defined in Text.Pandoc.Translations.Types Methods showsPrec :: Int -> Translations -> ShowS # show :: Translations -> String # showList :: [Translations] -> ShowS #
type Rep Translations # |
Instance details Defined in Text.Pandoc.Translations.Types type Rep Translations = D1 ('MetaData "Translations" "Text.Pandoc.Translations.Types" "pandoc-3.1.13-4z6Ggw740m1ARLbD77fK9I" 'True) (C1 ('MetaCons "Translations" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map Term Text))))