@@ -1,7 +1,11 @@
1−{-# LANGUAGE NoImplicitPrelude #-}
1+{-# LANGUAGE CPP #-}
22{-# LANGUAGE DeriveDataTypeable #-}
33{-# LANGUAGE DeriveGeneric #-}
4+{-# LANGUAGE NoImplicitPrelude #-}
5+#ifndef AVOID_TEMPLATE_HASKELL
46{-# LANGUAGE TemplateHaskell #-}
7+#endif
8+
59{-
610Copyright (C) 2012-2018 John MacFarlane <jgm@berkeley.edu>
711
@@ -48,8 +52,6 @@ module Text.Pandoc.Options ( module Text.Pandoc.Extensions
4852 , isEnabled
4953 ) where
5054import Prelude
51−import Data.Aeson (defaultOptions)
52−import Data.Aeson.TH (deriveJSON)
5355import Data.Data (Data)
5456import Data.Default
5557import qualified Data.Set as Set
@@ -59,6 +61,13 @@ import Skylighting (SyntaxMap, defaultSyntaxMap)
5961import Text.Pandoc.Extensions
6062import Text.Pandoc.Highlighting (Style, pygments)
6163
64+#ifdef DERIVE_JSON_VIA_TH
65+import Data.Aeson.TH (deriveJSON, defaultOptions)
66+#else
67+import Data.Aeson (FromJSON (..), ToJSON (..),
68+ defaultOptions, genericToEncoding)
69+#endif
70+
6271class HasSyntaxExtensions a where
6372 getExtensions :: a -> Extensions
6473
@@ -239,6 +248,7 @@ instance HasSyntaxExtensions WriterOptions where
239248isEnabled :: HasSyntaxExtensions a => Extension -> a -> Bool
240249isEnabled ext opts = ext `extensionEnabled` getExtensions opts
241250
251+#ifdef DERIVE_JSON_VIA_TH
242252$(deriveJSON defaultOptions ''ReaderOptions)
243253$(deriveJSON defaultOptions ''HTMLMathMethod)
244254$(deriveJSON defaultOptions ''CiteMethod)
@@ -248,3 +258,40 @@ $(deriveJSON defaultOptions ''TrackChanges)
248258$(deriveJSON defaultOptions ''WrapOption)
249259$(deriveJSON defaultOptions ''TopLevelDivision)
250260$(deriveJSON defaultOptions ''ReferenceLocation)
261+#else
262+instance ToJSON CiteMethod where
263+ toEncoding = genericToEncoding defaultOptions
264+instance FromJSON CiteMethod
265+
266+instance ToJSON ReaderOptions where
267+ toEncoding = genericToEncoding defaultOptions
268+instance FromJSON ReaderOptions
269+
270+instance ToJSON ObfuscationMethod where
271+ toEncoding = genericToEncoding defaultOptions
272+instance FromJSON ObfuscationMethod
273+
274+instance ToJSON WrapOption where
275+ toEncoding = genericToEncoding defaultOptions
276+instance FromJSON WrapOption
277+
278+instance ToJSON HTMLMathMethod where
279+ toEncoding = genericToEncoding defaultOptions
280+instance FromJSON HTMLMathMethod
281+
282+instance ToJSON HTMLSlideVariant where
283+ toEncoding = genericToEncoding defaultOptions
284+instance FromJSON HTMLSlideVariant
285+
286+instance ToJSON TopLevelDivision where
287+ toEncoding = genericToEncoding defaultOptions
288+instance FromJSON TopLevelDivision
289+
290+instance ToJSON ReferenceLocation where
291+ toEncoding = genericToEncoding defaultOptions
292+instance FromJSON ReferenceLocation
293+
294+instance ToJSON TrackChanges where
295+ toEncoding = genericToEncoding defaultOptions
296+instance FromJSON TrackChanges
297+#endif