@@ -20,7 +20,7 @@ module Text.Pandoc.App.Opt (
2020 , defaultOpts
2121 ) where
2222import Prelude
23−import Data.Char (isLower)
23+import Data.Char (isLower, toLower)
2424import GHC.Generics
2525import Text.Pandoc.Filter (Filter (..))
2626import Text.Pandoc.Logging (Verbosity (WARNING))
@@ -31,26 +31,12 @@ import Text.Pandoc.Options (TopLevelDivision (TopLevelDefault),
3131 ObfuscationMethod (NoObfuscation),
3232 CiteMethod (Citeproc))
3333import Text.Pandoc.Shared (camelCaseToHyphenated)
34−import qualified Data.Text as T
35−import Data.Aeson (defaultOptions, Options(..), FromJSON(..), ToJSON(..),
36− Value(..))
37−import Data.Aeson.Types (typeMismatch)
34+import Data.Aeson (defaultOptions, Options(..))
3835import Data.Aeson.TH (deriveJSON)
3936
4037-- | The type of line-endings to be used when writing plain-text.
4138data LineEnding = LF | CRLF | Native deriving (Show, Generic)
4239
43−instance ToJSON LineEnding
44−
45−instance FromJSON LineEnding where
46− parseJSON (String t) =
47− case T.toLower t of
48− "lf" -> return LF
49− "crlf" -> return CRLF
50− "native" -> return Native
51− _ -> fail "Expecting LF, CRLF, or Native"
52− parseJSON v = typeMismatch "String" v
53−
5440-- | Data structure for command line options.
5541data Opt = Opt
5642 { optTabStop :: Int -- ^ Number of spaces per tab
@@ -200,6 +186,8 @@ defaultOpts = Opt
200186
201187-- see https://github.com/jgm/pandoc/pull/4083
202188-- using generic deriving caused long compilation times
189+$(deriveJSON
190+ defaultOptions{ fieldLabelModifier = map toLower } ''LineEnding)
203191$(deriveJSON
204192 defaultOptions{ fieldLabelModifier =
205193 camelCaseToHyphenated . dropWhile isLower