@@ -1,7 +1,11 @@
1−{-# LANGUAGE NoImplicitPrelude #-}
1+{-# LANGUAGE CPP #-}
2{-# LANGUAGE DeriveDataTypeable #-}
2{-# LANGUAGE DeriveDataTypeable #-}
3{-# LANGUAGE DeriveGeneric #-}
3{-# LANGUAGE DeriveGeneric #-}
4+{-# LANGUAGE NoImplicitPrelude #-}
5+#ifndef AVOID_TEMPLATE_HASKELL
4{-# LANGUAGE TemplateHaskell #-}
6{-# LANGUAGE TemplateHaskell #-}
6Copyright (C) 2012-2018 John MacFarlane <jgm@berkeley.edu>
10Copyright (C) 2012-2018 John MacFarlane <jgm@berkeley.edu>
@@ -48,8 +52,6 @@ module Text.Pandoc.Options ( module Text.Pandoc.Extensions
48 , isEnabled
52 , isEnabled
50import Prelude
54import Prelude
51−import Data.Aeson (defaultOptions)
52−import Data.Aeson.TH (deriveJSON)
53import Data.Data (Data)
55import Data.Data (Data)
54import Data.Default
56import Data.Default
55import qualified Data.Set as Set
57import qualified Data.Set as Set
@@ -59,6 +61,13 @@ import Skylighting (SyntaxMap, defaultSyntaxMap)
59import Text.Pandoc.Extensions
61import Text.Pandoc.Extensions
60import Text.Pandoc.Highlighting (Style, pygments)
62import Text.Pandoc.Highlighting (Style, pygments)
64+#ifdef DERIVE_JSON_VIA_TH
65+import Data.Aeson.TH (deriveJSON, defaultOptions)
67+import Data.Aeson (FromJSON (..), ToJSON (..),
68+ defaultOptions, genericToEncoding)
62class HasSyntaxExtensions a where
71class HasSyntaxExtensions a where
63 getExtensions :: a -> Extensions
72 getExtensions :: a -> Extensions
@@ -239,6 +248,7 @@ instance HasSyntaxExtensions WriterOptions where
239isEnabled :: HasSyntaxExtensions a => Extension -> a -> Bool
248isEnabled :: HasSyntaxExtensions a => Extension -> a -> Bool
240isEnabled ext opts = ext `extensionEnabled` getExtensions opts
249isEnabled ext opts = ext `extensionEnabled` getExtensions opts
251+#ifdef DERIVE_JSON_VIA_TH
242$(deriveJSON defaultOptions ''ReaderOptions)
252$(deriveJSON defaultOptions ''ReaderOptions)
243$(deriveJSON defaultOptions ''HTMLMathMethod)
253$(deriveJSON defaultOptions ''HTMLMathMethod)
244$(deriveJSON defaultOptions ''CiteMethod)
254$(deriveJSON defaultOptions ''CiteMethod)
@@ -248,3 +258,40 @@ $(deriveJSON defaultOptions ''TrackChanges)
248$(deriveJSON defaultOptions ''WrapOption)
258$(deriveJSON defaultOptions ''WrapOption)
249$(deriveJSON defaultOptions ''TopLevelDivision)
259$(deriveJSON defaultOptions ''TopLevelDivision)
250$(deriveJSON defaultOptions ''ReferenceLocation)
260$(deriveJSON defaultOptions ''ReferenceLocation)
262+instance ToJSON CiteMethod where
263+ toEncoding = genericToEncoding defaultOptions
264+instance FromJSON CiteMethod
266+instance ToJSON ReaderOptions where
267+ toEncoding = genericToEncoding defaultOptions
268+instance FromJSON ReaderOptions
270+instance ToJSON ObfuscationMethod where
271+ toEncoding = genericToEncoding defaultOptions
272+instance FromJSON ObfuscationMethod
274+instance ToJSON WrapOption where
275+ toEncoding = genericToEncoding defaultOptions
276+instance FromJSON WrapOption
278+instance ToJSON HTMLMathMethod where
279+ toEncoding = genericToEncoding defaultOptions
280+instance FromJSON HTMLMathMethod
282+instance ToJSON HTMLSlideVariant where
283+ toEncoding = genericToEncoding defaultOptions
284+instance FromJSON HTMLSlideVariant
286+instance ToJSON TopLevelDivision where
287+ toEncoding = genericToEncoding defaultOptions
288+instance FromJSON TopLevelDivision
290+instance ToJSON ReferenceLocation where
291+ toEncoding = genericToEncoding defaultOptions
292+instance FromJSON ReferenceLocation
294+instance ToJSON TrackChanges where
295+ toEncoding = genericToEncoding defaultOptions
296+instance FromJSON TrackChanges