aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Options.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Text/Pandoc/Options.hs')
-rw-r--r--src/Text/Pandoc/Options.hs51
1 files changed, 13 insertions, 38 deletions
diff --git a/src/Text/Pandoc/Options.hs b/src/Text/Pandoc/Options.hs
index 03960b6b9..1fb838321 100644
--- a/src/Text/Pandoc/Options.hs
+++ b/src/Text/Pandoc/Options.hs
@@ -1,5 +1,6 @@
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE TemplateHaskell #-}
{-
Copyright (C) 2012-2017 John MacFarlane <jgm@berkeley.edu>
@@ -45,8 +46,8 @@ module Text.Pandoc.Options ( module Text.Pandoc.Extensions
, def
, isEnabled
) where
-import Data.Aeson (FromJSON (..), ToJSON (..), defaultOptions,
- genericToEncoding)
+import Data.Aeson (defaultOptions)
+import Data.Aeson.TH (deriveJSON)
import Data.Data (Data)
import Data.Default
import qualified Data.Set as Set
@@ -75,10 +76,6 @@ data ReaderOptions = ReaderOptions{
instance HasSyntaxExtensions ReaderOptions where
getExtensions opts = readerExtensions opts
-instance ToJSON ReaderOptions where
- toEncoding = genericToEncoding defaultOptions
-instance FromJSON ReaderOptions
-
instance Default ReaderOptions
where def = ReaderOptions{
readerExtensions = emptyExtensions
@@ -116,29 +113,17 @@ data HTMLMathMethod = PlainMath
| KaTeX String -- url of KaTeX files
deriving (Show, Read, Eq, Data, Typeable, Generic)
-instance ToJSON HTMLMathMethod where
- toEncoding = genericToEncoding defaultOptions
-instance FromJSON HTMLMathMethod
-
data CiteMethod = Citeproc -- use citeproc to render them
| Natbib -- output natbib cite commands
| Biblatex -- output biblatex cite commands
deriving (Show, Read, Eq, Data, Typeable, Generic)
-instance ToJSON CiteMethod where
- toEncoding = genericToEncoding defaultOptions
-instance FromJSON CiteMethod
-
-- | Methods for obfuscating email addresses in HTML.
data ObfuscationMethod = NoObfuscation
| ReferenceObfuscation
| JavascriptObfuscation
deriving (Show, Read, Eq, Data, Typeable, Generic)
-instance ToJSON ObfuscationMethod where
- toEncoding = genericToEncoding defaultOptions
-instance FromJSON ObfuscationMethod
-
-- | Varieties of HTML slide shows.
data HTMLSlideVariant = S5Slides
| SlidySlides
@@ -148,30 +133,18 @@ data HTMLSlideVariant = S5Slides
| NoSlides
deriving (Show, Read, Eq, Data, Typeable, Generic)
-instance ToJSON HTMLSlideVariant where
- toEncoding = genericToEncoding defaultOptions
-instance FromJSON HTMLSlideVariant
-
-- | Options for accepting or rejecting MS Word track-changes.
data TrackChanges = AcceptChanges
| RejectChanges
| AllChanges
deriving (Show, Read, Eq, Data, Typeable, Generic)
-instance ToJSON TrackChanges where
- toEncoding = genericToEncoding defaultOptions
-instance FromJSON TrackChanges
-
-- | Options for wrapping text in the output.
data WrapOption = WrapAuto -- ^ Automatically wrap to width
| WrapNone -- ^ No non-semantic newlines
| WrapPreserve -- ^ Preserve wrapping of input source
deriving (Show, Read, Eq, Data, Typeable, Generic)
-instance ToJSON WrapOption where
- toEncoding = genericToEncoding defaultOptions
-instance FromJSON WrapOption
-
-- | Options defining the type of top-level headers.
data TopLevelDivision = TopLevelPart -- ^ Top-level headers become parts
| TopLevelChapter -- ^ Top-level headers become chapters
@@ -180,20 +153,12 @@ data TopLevelDivision = TopLevelPart -- ^ Top-level headers become parts
-- heuristics
deriving (Show, Read, Eq, Data, Typeable, Generic)
-instance ToJSON TopLevelDivision where
- toEncoding = genericToEncoding defaultOptions
-instance FromJSON TopLevelDivision
-
-- | Locations for footnotes and references in markdown output
data ReferenceLocation = EndOfBlock -- ^ End of block
| EndOfSection -- ^ prior to next section header (or end of document)
| EndOfDocument -- ^ at end of document
deriving (Show, Read, Eq, Data, Typeable, Generic)
-instance ToJSON ReferenceLocation where
- toEncoding = genericToEncoding defaultOptions
-instance FromJSON ReferenceLocation
-
-- | Options for writers
data WriterOptions = WriterOptions
{ writerTemplate :: Maybe String -- ^ Template to use
@@ -271,3 +236,13 @@ instance HasSyntaxExtensions WriterOptions where
-- | Returns True if the given extension is enabled.
isEnabled :: HasSyntaxExtensions a => Extension -> a -> Bool
isEnabled ext opts = ext `extensionEnabled` getExtensions opts
+
+$(deriveJSON defaultOptions ''ReaderOptions)
+$(deriveJSON defaultOptions ''HTMLMathMethod)
+$(deriveJSON defaultOptions ''CiteMethod)
+$(deriveJSON defaultOptions ''ObfuscationMethod)
+$(deriveJSON defaultOptions ''HTMLSlideVariant)
+$(deriveJSON defaultOptions ''TrackChanges)
+$(deriveJSON defaultOptions ''WrapOption)
+$(deriveJSON defaultOptions ''TopLevelDivision)
+$(deriveJSON defaultOptions ''ReferenceLocation)