git.iko.soy/typeable/pandoc
on master help sign in
Fixed handling of default extensions, so they don't override +options.
05216d2John MacFarlane
src/Text/Pandoc.hs+10−8
@@ -176,8 +176,7 @@ parseFormatSpec = parse formatSpec ""
176readers :: [(String, ReaderOptions -> String -> Pandoc)]
176readers :: [(String, ReaderOptions -> String -> Pandoc)]
177readers = [("native" , \_ -> readNative)
177readers = [("native" , \_ -> readNative)
178 ,("json" , \_ -> decodeJSON)
178 ,("json" , \_ -> decodeJSON)
179− ,("strict" , \o -> readMarkdown
179+ ,("strict" , readMarkdown)
180− o{ readerExtensions = strictExtensions } )
181 ,("markdown" , readMarkdown)
180 ,("markdown" , readMarkdown)
182 ,("rst" , readRST)
181 ,("rst" , readRST)
183 ,("docbook" , readDocBook)
182 ,("docbook" , readDocBook)
@@ -221,8 +220,7 @@ writers = [
221 ,("texinfo" , PureStringWriter writeTexinfo)
220 ,("texinfo" , PureStringWriter writeTexinfo)
222 ,("man" , PureStringWriter writeMan)
221 ,("man" , PureStringWriter writeMan)
223 ,("markdown" , PureStringWriter writeMarkdown)
222 ,("markdown" , PureStringWriter writeMarkdown)
224− ,("strict" , PureStringWriter $ \o ->
223+ ,("strict" , PureStringWriter writeMarkdown)
225− writeMarkdown o{ writerExtensions = strictExtensions } )
226 ,("plain" , PureStringWriter writePlain)
224 ,("plain" , PureStringWriter writePlain)
227 ,("rst" , PureStringWriter writeRST)
225 ,("rst" , PureStringWriter writeRST)
228 ,("mediawiki" , PureStringWriter writeMediaWiki)
226 ,("mediawiki" , PureStringWriter writeMediaWiki)
@@ -232,6 +230,10 @@ writers = [
232 ,("asciidoc" , PureStringWriter writeAsciiDoc)
230 ,("asciidoc" , PureStringWriter writeAsciiDoc)
233 ]
231 ]
234
232
233+getDefaultExtensions :: String -> Set Extension
234+getDefaultExtensions "strict" = strictExtensions
235+getDefaultExtensions _ = pandocExtensions
236+
235-- | Retrieve reader based on formatSpec (format+extensions).
237-- | Retrieve reader based on formatSpec (format+extensions).
236getReader :: String -> Either String (ReaderOptions -> String -> Pandoc)
238getReader :: String -> Either String (ReaderOptions -> String -> Pandoc)
237getReader s =
239getReader s =
@@ -242,7 +244,7 @@ getReader s =
242 Nothing -> Left $ "Unknown reader: " ++ readerName
244 Nothing -> Left $ "Unknown reader: " ++ readerName
243 Just r -> Right $ \o ->
245 Just r -> Right $ \o ->
244 r o{ readerExtensions = setExts $
246 r o{ readerExtensions = setExts $
245− readerExtensions o }
247+ getDefaultExtensions readerName }
246
248
247-- | Retrieve writer based on formatSpec (format+extensions).
249-- | Retrieve writer based on formatSpec (format+extensions).
248getWriter :: String -> Either String Writer
250getWriter :: String -> Either String Writer
@@ -254,13 +256,13 @@ getWriter s =
254 Nothing -> Left $ "Unknown writer: " ++ writerName
256 Nothing -> Left $ "Unknown writer: " ++ writerName
255 Just (PureStringWriter r) -> Right $ PureStringWriter $
257 Just (PureStringWriter r) -> Right $ PureStringWriter $
256 \o -> r o{ writerExtensions = setExts $
258 \o -> r o{ writerExtensions = setExts $
257− writerExtensions o }
259+ getDefaultExtensions writerName }
258 Just (IOStringWriter r) -> Right $ IOStringWriter $
260 Just (IOStringWriter r) -> Right $ IOStringWriter $
259 \o -> r o{ writerExtensions = setExts $
261 \o -> r o{ writerExtensions = setExts $
260− writerExtensions o }
262+ getDefaultExtensions writerName }
261 Just (IOByteStringWriter r) -> Right $ IOByteStringWriter $
263 Just (IOByteStringWriter r) -> Right $ IOByteStringWriter $
262 \o -> r o{ writerExtensions = setExts $
264 \o -> r o{ writerExtensions = setExts $
263− writerExtensions o }
265+ getDefaultExtensions writerName }
264
266
265{-# DEPRECATED jsonFilter "Use toJsonFilter instead" #-}
267{-# DEPRECATED jsonFilter "Use toJsonFilter instead" #-}
266-- | Converts a transformation on the Pandoc AST into a function
268-- | Converts a transformation on the Pandoc AST into a function