diff options
author | Albert Krewinkel <albert@zeitkraut.de> | 2020-03-15 04:49:36 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-14 20:49:36 -0700 |
commit | ec49643d647080218bedfaf61b3eb9b9383e42c0 (patch) | |
tree | db0093d2ad97010e6c4fd92c3295b2873733a696 /src/Text/Pandoc/Class/CommonState.hs | |
parent | 11b5f1e40b4c1e4ddbfb93a8d75bfd55ef52a6df (diff) | |
download | pandoc-ec49643d647080218bedfaf61b3eb9b9383e42c0.tar.gz |
Subdivide Text.Pandoc.Class into small modules (#6106)
* Extract CommonState into submodule
* Extract PandocMonad into submodule
* PandocMonad: ensure all functions have Haddock documentation
Diffstat (limited to 'src/Text/Pandoc/Class/CommonState.hs')
-rw-r--r-- | src/Text/Pandoc/Class/CommonState.hs | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Class/CommonState.hs b/src/Text/Pandoc/Class/CommonState.hs new file mode 100644 index 000000000..4a0f66859 --- /dev/null +++ b/src/Text/Pandoc/Class/CommonState.hs @@ -0,0 +1,80 @@ +{- | +Module : Text.Pandoc.Class.CommonState +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 + +Common state shared by all pandoc-specific operations, including +those in readers, writers, and Lua filters. +-} + +module Text.Pandoc.Class.CommonState + ( CommonState(..) + , defaultCommonState + ) +where + +import Data.Default (Default (def)) +import Data.Text (Text) +import Text.Pandoc.BCP47 (Lang) +import Text.Pandoc.MediaBag (MediaBag) +import Text.Pandoc.Logging (LogMessage, Verbosity (WARNING)) +import Text.Pandoc.Translations (Translations) + +-- | '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. +data CommonState = CommonState + { 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 + , 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. + } + +-- | The default @'CommonState'@. All fields are initialized as the +-- monoid identity of their resprective type, except for: +-- +-- * @'stResourcePath'@, which is set to @["."]@, +-- * @'stTrace'@, which is set to @'False'@, and +-- * @'stVerbosity'@, which is set to @WARNING@. +defaultCommonState :: CommonState +defaultCommonState = CommonState + { stLog = [] + , stUserDataDir = Nothing + , stSourceURL = Nothing + , stRequestHeaders = [] + , stMediaBag = mempty + , stTranslations = Nothing + , stInputFiles = [] + , stOutputFile = Nothing + , stResourcePath = ["."] + , stVerbosity = WARNING + , stTrace = False + } + +instance Default CommonState where + def = defaultCommonState |