pandocz-0.0.1: src/Text/Pandoc/Z/ReaderOptions.hs
{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE TypeFamilies #-}
module Text.Pandoc.Z.ReaderOptions(
HasReaderOptions(..)
, AsReaderOptions(..)
, HasTrackChanges(..)
, AsTrackChanges(..)
, ReaderOptions(ReaderOptions)
, defaultReaderOptions
) where
import Control.Lens ( prism', Lens', Prism' )
import Data.Set ( Set )
import qualified Data.Set as Set
import Data.Text ( Text )
import qualified Data.Text as Text
import Text.Pandoc.Options(ReaderOptions(ReaderOptions), TrackChanges(..))
class HasReaderOptions a where
readerOptions ::
Lens' a ReaderOptions
standalone ::
Lens' a Bool
standalone =
readerOptions . standalone
indentedCodeClasses ::
Lens' a [Text]
indentedCodeClasses =
readerOptions . indentedCodeClasses
abbreviations ::
Lens' a (Set Text)
abbreviations =
readerOptions . abbreviations
defaultImageExtension ::
Lens' a Text
defaultImageExtension =
readerOptions . defaultImageExtension
stripComments ::
Lens' a Bool
stripComments =
readerOptions . stripComments
instance HasReaderOptions ReaderOptions where
readerOptions =
id
standalone f (ReaderOptions e s c t i a g h m) =
fmap (\s' -> ReaderOptions e s' c t i a g h m) (f s)
indentedCodeClasses f (ReaderOptions e s c t i a g h m) =
fmap (\i' -> ReaderOptions e s c t i' a g h m) (f i)
abbreviations f (ReaderOptions e s c t i a g h m) =
fmap (\a' -> ReaderOptions e s c t i a' g h m) (f a)
defaultImageExtension f (ReaderOptions e s c t i a g h m) =
fmap (\g' -> ReaderOptions e s c t i a g' h m) (f g)
stripComments f (ReaderOptions e s c t i a g h m) =
fmap (ReaderOptions e s c t i a g h) (f m)
class AsReaderOptions a where
_ReaderOptions ::
Prism' a ReaderOptions
instance AsReaderOptions ReaderOptions where
_ReaderOptions =
id
class HasTrackChanges a where
trackChanges ::
Lens' a TrackChanges
instance HasTrackChanges TrackChanges where
trackChanges =
id
instance HasTrackChanges ReaderOptions where
trackChanges f (ReaderOptions e s c t i a g h m) =
fmap (\h' -> ReaderOptions e s c t i a g h' m) (f h)
class AsTrackChanges a where
_TrackChanges ::
Prism' a TrackChanges
_AcceptChanges ::
Prism' a ()
_AcceptChanges =
_TrackChanges . _AcceptChanges
_RejectChanges ::
Prism' a ()
_RejectChanges =
_TrackChanges . _RejectChanges
_AllChanges ::
Prism' a ()
_AllChanges =
_TrackChanges . _AllChanges
instance AsTrackChanges TrackChanges where
_TrackChanges =
id
_AcceptChanges =
prism'
(\() -> AcceptChanges)
(\case
AcceptChanges -> Just ()
_ -> Nothing)
_RejectChanges =
prism'
(\() -> RejectChanges)
(\case
RejectChanges -> Just ()
_ -> Nothing)
_AllChanges =
prism'
(\() -> AllChanges)
(\case
AllChanges -> Just ()
_ -> Nothing)
defaultReaderOptions ::
ReaderOptions
defaultReaderOptions =
ReaderOptions
mempty
False
80
4
[]
(
Set.fromList (
fmap Text.pack [
"Mr.", "Mrs.", "Ms.", "Capt.", "Dr.", "Prof.",
"Gen.", "Gov.", "e.g.", "i.e.", "Sgt.", "St.",
"vol.", "vs.", "Sen.", "Rep.", "Pres.", "Hon.",
"Rev.", "Ph.D.", "M.D.", "M.A.", "p.", "pp.",
"ch.", "sec.", "cf.", "cp."
]
)
)
mempty
AcceptChanges
False