git.iko.soy/typeable/pandoc
on master help sign in
Fix #1267.
c8f97d3John MacFarlane
pandoc.hs+13−10
@@ -47,7 +47,7 @@ import System.Exit ( exitWith, ExitCode (..) )
47import System.FilePath
47import System.FilePath
48import System.Console.GetOpt
48import System.Console.GetOpt
49import Data.Char ( toLower )
49import Data.Char ( toLower )
50−import Data.List ( intercalate, isPrefixOf, sort )
50+import Data.List ( intercalate, isPrefixOf, isSuffixOf, sort )
51import System.Directory ( getAppUserDataDirectory, findExecutable,
51import System.Directory ( getAppUserDataDirectory, findExecutable,
52 doesFileExist )
52 doesFileExist )
53import System.IO ( stdout, stderr )
53import System.IO ( stdout, stderr )
@@ -1021,15 +1021,18 @@ main = do
1021 let laTeXOutput = "latex" `isPrefixOf` writerName' ||
1021 let laTeXOutput = "latex" `isPrefixOf` writerName' ||
1022 "beamer" `isPrefixOf` writerName'
1022 "beamer" `isPrefixOf` writerName'
1023
1023
1024+ writer <- if ".lua" `isSuffixOf` writerName'
1025+ -- note: use non-lowercased version writerName
1026+ then return $ IOStringWriter $ writeCustom writerName
1024− writer <- case getWriter writerName' of
1027+ else case getWriter writerName' of
1025− Left e -> err 9 $
1028+ Left e -> err 9 $
1026− if writerName' == "pdf"
1029+ if writerName' == "pdf"
1027− then e ++ "\nTo create a pdf with pandoc, use the " ++
1030+ then e ++ "\nTo create a pdf with pandoc, use " ++
1028− "latex or beamer writer and specify\n" ++
1031+ "the latex or beamer writer and specify\n" ++
1029− "an output file with .pdf extension " ++
1032+ "an output file with .pdf extension " ++
1030− "(pandoc -t latex -o filename.pdf)."
1033+ "(pandoc -t latex -o filename.pdf)."
1031− else e
1034+ else e
1032− Right w -> return w
1035+ Right w -> return w
1033
1036
1034 reader <- case getReader readerName' of
1037 reader <- case getReader readerName' of
1035 Right r -> return r
1038 Right r -> return r
src/Text/Pandoc.hs+16−19
@@ -152,7 +152,7 @@ import Text.Pandoc.Options
152import Text.Pandoc.Shared (safeRead, warn)
152import Text.Pandoc.Shared (safeRead, warn)
153import Data.Aeson
153import Data.Aeson
154import qualified Data.ByteString.Lazy as BL
154import qualified Data.ByteString.Lazy as BL
155−import Data.List (intercalate, isSuffixOf)
155+import Data.List (intercalate)
156import Data.Version (showVersion)
156import Data.Version (showVersion)
157import Data.Set (Set)
157import Data.Set (Set)
158import qualified Data.Set as Set
158import qualified Data.Set as Set
@@ -292,24 +292,21 @@ getReader s =
292
292
293-- | Retrieve writer based on formatSpec (format+extensions).
293-- | Retrieve writer based on formatSpec (format+extensions).
294getWriter :: String -> Either String Writer
294getWriter :: String -> Either String Writer
295−getWriter s =
295+getWriter s
296− case parseFormatSpec s of
296+ = case parseFormatSpec s of
297− Left e -> Left $ intercalate "\n" $ [m | Message m <- errorMessages e]
297+ Left e -> Left $ intercalate "\n" $ [m | Message m <- errorMessages e]
298− Right (writerName, setExts) ->
298+ Right (writerName, setExts) ->
299− case lookup writerName writers of
299+ case lookup writerName writers of
300− Nothing
301− | ".lua" `isSuffixOf` s ->
302− Right $ IOStringWriter $ writeCustom s
303− | otherwise -> Left $ "Unknown writer: " ++ writerName
300+ Nothing -> Left $ "Unknown writer: " ++ writerName
304− Just (PureStringWriter r) -> Right $ PureStringWriter $
301+ Just (PureStringWriter r) -> Right $ PureStringWriter $
305− \o -> r o{ writerExtensions = setExts $
302+ \o -> r o{ writerExtensions = setExts $
306− getDefaultExtensions writerName }
303+ getDefaultExtensions writerName }
307− Just (IOStringWriter r) -> Right $ IOStringWriter $
304+ Just (IOStringWriter r) -> Right $ IOStringWriter $
308− \o -> r o{ writerExtensions = setExts $
305+ \o -> r o{ writerExtensions = setExts $
309− getDefaultExtensions writerName }
306+ getDefaultExtensions writerName }
310− Just (IOByteStringWriter r) -> Right $ IOByteStringWriter $
307+ Just (IOByteStringWriter r) -> Right $ IOByteStringWriter $
311− \o -> r o{ writerExtensions = setExts $
308+ \o -> r o{ writerExtensions = setExts $
312− getDefaultExtensions writerName }
309+ getDefaultExtensions writerName }
313
310
314{-# DEPRECATED toJsonFilter "Use 'toJSONFilter' from 'Text.Pandoc.JSON' instead" #-}
311{-# DEPRECATED toJsonFilter "Use 'toJSONFilter' from 'Text.Pandoc.JSON' instead" #-}
315-- | Deprecated. Use @toJSONFilter@ from @Text.Pandoc.JSON@ instead.
312-- | Deprecated. Use @toJSONFilter@ from @Text.Pandoc.JSON@ instead.