Fixed handling of default extensions, so they don't override +options.

This commit is contained in:
John MacFarlane 2012-08-09 20:41:50 -07:00
parent 0cb7362f62
commit 05216d2919

View file

@ -176,8 +176,7 @@ parseFormatSpec = parse formatSpec ""
readers :: [(String, ReaderOptions -> String -> Pandoc)] readers :: [(String, ReaderOptions -> String -> Pandoc)]
readers = [("native" , \_ -> readNative) readers = [("native" , \_ -> readNative)
,("json" , \_ -> decodeJSON) ,("json" , \_ -> decodeJSON)
,("strict" , \o -> readMarkdown ,("strict" , readMarkdown)
o{ readerExtensions = strictExtensions } )
,("markdown" , readMarkdown) ,("markdown" , readMarkdown)
,("rst" , readRST) ,("rst" , readRST)
,("docbook" , readDocBook) ,("docbook" , readDocBook)
@ -221,8 +220,7 @@ writers = [
,("texinfo" , PureStringWriter writeTexinfo) ,("texinfo" , PureStringWriter writeTexinfo)
,("man" , PureStringWriter writeMan) ,("man" , PureStringWriter writeMan)
,("markdown" , PureStringWriter writeMarkdown) ,("markdown" , PureStringWriter writeMarkdown)
,("strict" , PureStringWriter $ \o -> ,("strict" , PureStringWriter writeMarkdown)
writeMarkdown o{ writerExtensions = strictExtensions } )
,("plain" , PureStringWriter writePlain) ,("plain" , PureStringWriter writePlain)
,("rst" , PureStringWriter writeRST) ,("rst" , PureStringWriter writeRST)
,("mediawiki" , PureStringWriter writeMediaWiki) ,("mediawiki" , PureStringWriter writeMediaWiki)
@ -232,6 +230,10 @@ writers = [
,("asciidoc" , PureStringWriter writeAsciiDoc) ,("asciidoc" , PureStringWriter writeAsciiDoc)
] ]
getDefaultExtensions :: String -> Set Extension
getDefaultExtensions "strict" = strictExtensions
getDefaultExtensions _ = pandocExtensions
-- | Retrieve reader based on formatSpec (format+extensions). -- | Retrieve reader based on formatSpec (format+extensions).
getReader :: String -> Either String (ReaderOptions -> String -> Pandoc) getReader :: String -> Either String (ReaderOptions -> String -> Pandoc)
getReader s = getReader s =
@ -242,7 +244,7 @@ getReader s =
Nothing -> Left $ "Unknown reader: " ++ readerName Nothing -> Left $ "Unknown reader: " ++ readerName
Just r -> Right $ \o -> Just r -> Right $ \o ->
r o{ readerExtensions = setExts $ r o{ readerExtensions = setExts $
readerExtensions o } getDefaultExtensions readerName }
-- | Retrieve writer based on formatSpec (format+extensions). -- | Retrieve writer based on formatSpec (format+extensions).
getWriter :: String -> Either String Writer getWriter :: String -> Either String Writer
@ -254,13 +256,13 @@ getWriter s =
Nothing -> Left $ "Unknown writer: " ++ writerName Nothing -> Left $ "Unknown writer: " ++ writerName
Just (PureStringWriter r) -> Right $ PureStringWriter $ Just (PureStringWriter r) -> Right $ PureStringWriter $
\o -> r o{ writerExtensions = setExts $ \o -> r o{ writerExtensions = setExts $
writerExtensions o } getDefaultExtensions writerName }
Just (IOStringWriter r) -> Right $ IOStringWriter $ Just (IOStringWriter r) -> Right $ IOStringWriter $
\o -> r o{ writerExtensions = setExts $ \o -> r o{ writerExtensions = setExts $
writerExtensions o } getDefaultExtensions writerName }
Just (IOByteStringWriter r) -> Right $ IOByteStringWriter $ Just (IOByteStringWriter r) -> Right $ IOByteStringWriter $
\o -> r o{ writerExtensions = setExts $ \o -> r o{ writerExtensions = setExts $
writerExtensions o } getDefaultExtensions writerName }
{-# DEPRECATED jsonFilter "Use toJsonFilter instead" #-} {-# DEPRECATED jsonFilter "Use toJsonFilter instead" #-}
-- | Converts a transformation on the Pandoc AST into a function -- | Converts a transformation on the Pandoc AST into a function