diff options
author | Alexander <ilabdsf@gmail.com> | 2017-11-16 20:24:02 +0300 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2017-11-16 09:24:02 -0800 |
commit | 26e59b331fc6ce2509a3b53f4454c0fadfbc58ee (patch) | |
tree | 56b9f025dd4d90fb87cfa40004d5fa899875902c /src/Text/Pandoc/Options.hs | |
parent | 4e02ed5f5cd5cf4d07c7252f2aac9a83b9ca7463 (diff) |
Introduce `HasSyntaxExtensions` typeclass (#4074)
+ Added new `HasSyntaxExtensions` typeclass for `ReaderOptions` and `WriterOptions`.
+ Reimplemented `isEnabled` function from `Options.hs` to accept both `ReaderOptions`
and `WriterOptions`.
+ Replaced `enabled` from `CommonMark.hs` with new `isEnabled`.
Diffstat (limited to 'src/Text/Pandoc/Options.hs')
-rw-r--r-- | src/Text/Pandoc/Options.hs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/Text/Pandoc/Options.hs b/src/Text/Pandoc/Options.hs index 581f4c82a..03960b6b9 100644 --- a/src/Text/Pandoc/Options.hs +++ b/src/Text/Pandoc/Options.hs @@ -56,6 +56,9 @@ import Skylighting (SyntaxMap, defaultSyntaxMap) import Text.Pandoc.Extensions import Text.Pandoc.Highlighting (Style, pygments) +class HasSyntaxExtensions a where + getExtensions :: a -> Extensions + data ReaderOptions = ReaderOptions{ readerExtensions :: Extensions -- ^ Syntax extensions , readerStandalone :: Bool -- ^ Standalone document with header @@ -69,6 +72,9 @@ data ReaderOptions = ReaderOptions{ , readerStripComments :: Bool -- ^ Strip HTML comments instead of parsing as raw HTML } deriving (Show, Read, Data, Typeable, Generic) +instance HasSyntaxExtensions ReaderOptions where + getExtensions opts = readerExtensions opts + instance ToJSON ReaderOptions where toEncoding = genericToEncoding defaultOptions instance FromJSON ReaderOptions @@ -259,6 +265,9 @@ instance Default WriterOptions where , writerSyntaxMap = defaultSyntaxMap } +instance HasSyntaxExtensions WriterOptions where + getExtensions opts = writerExtensions opts + -- | Returns True if the given extension is enabled. -isEnabled :: Extension -> WriterOptions -> Bool -isEnabled ext opts = ext `extensionEnabled` writerExtensions opts +isEnabled :: HasSyntaxExtensions a => Extension -> a -> Bool +isEnabled ext opts = ext `extensionEnabled` getExtensions opts |