git.iko.soy/typeable/pandoc
on master help sign in
Removed datadir param from readDataFile and getDefaultTemplate.
737d09eJohn MacFarlane
src/Text/Pandoc/App.hs+9−4
@@ -76,7 +76,8 @@ import System.IO.Error (isDoesNotExistError)
76import Text.Pandoc
76import Text.Pandoc
77import Text.Pandoc.Builder (setMeta)
77import Text.Pandoc.Builder (setMeta)
78import Text.Pandoc.Class (PandocIO, extractMedia, fillMediaBag, getLog,
78import Text.Pandoc.Class (PandocIO, extractMedia, fillMediaBag, getLog,
79− setResourcePath, getMediaBag, setTrace, report)
79+ setResourcePath, getMediaBag, setTrace, report,
80+ setUserDataDir)
80import Text.Pandoc.Highlighting (highlightingStyles)
81import Text.Pandoc.Highlighting (highlightingStyles)
81import Text.Pandoc.Lua (runLuaFilter, LuaException(..))
82import Text.Pandoc.Lua (runLuaFilter, LuaException(..))
82import Text.Pandoc.Writers.Math (defaultMathJaxURL, defaultKaTeXURL)
83import Text.Pandoc.Writers.Math (defaultMathJaxURL, defaultKaTeXURL)
@@ -218,8 +219,9 @@ convertWithOpts opts = do
218 templ <- case optTemplate opts of
219 templ <- case optTemplate opts of
219 _ | not standalone -> return Nothing
220 _ | not standalone -> return Nothing
220 Nothing -> do
221 Nothing -> do
221− deftemp <- runIO $
222+ deftemp <- runIO $ do
223+ setUserDataDir datadir
222− getDefaultTemplate datadir format
224+ getDefaultTemplate format
223 case deftemp of
225 case deftemp of
224 Left e -> E.throwIO e
226 Left e -> E.throwIO e
225 Right t -> return (Just t)
227 Right t -> return (Just t)
@@ -444,6 +446,7 @@ convertWithOpts opts = do
444 Native -> nativeNewline
446 Native -> nativeNewline
445
447
446 runIO' $ do
448 runIO' $ do
449+ setUserDataDir datadir
447 when (readerName == "markdown_github" ||
450 when (readerName == "markdown_github" ||
448 writerName == "markdown_github") $
451 writerName == "markdown_github") $
449 report $ Deprecated "markdown_github" "Use gfm instead."
452 report $ Deprecated "markdown_github" "Use gfm instead."
@@ -996,7 +999,9 @@ options =
996 , Option "D" ["print-default-template"]
999 , Option "D" ["print-default-template"]
997 (ReqArg
1000 (ReqArg
998 (\arg _ -> do
1001 (\arg _ -> do
1002+ templ <- runIO $ do
1003+ setUserDataDir Nothing
999− templ <- runIO $ getDefaultTemplate Nothing arg
1004+ getDefaultTemplate arg
1000 case templ of
1005 case templ of
1001 Right t -> UTF8.hPutStr stdout t
1006 Right t -> UTF8.hPutStr stdout t
1002 Left e -> E.throwIO e
1007 Left e -> E.throwIO e
src/Text/Pandoc/Class.hs+20−14
@@ -157,9 +157,9 @@ class (Functor m, Applicative m, Monad m, MonadError PandocError m)
157 readFileStrict :: FilePath -> m B.ByteString
157 readFileStrict :: FilePath -> m B.ByteString
158 -- | Read file from from Cabal data directory.
158 -- | Read file from from Cabal data directory.
159 readDefaultDataFile :: FilePath -> m B.ByteString
159 readDefaultDataFile :: FilePath -> m B.ByteString
160− -- | Read file from specified user data directory or,
160+ -- | Read file from user data directory or,
161 -- if not found there, from Cabal data directory.
161 -- if not found there, from Cabal data directory.
162− readDataFile :: Maybe FilePath -> FilePath -> m B.ByteString
162+ readDataFile :: FilePath -> m B.ByteString
163 -- | Return a list of paths that match a glob, relative to
163 -- | Return a list of paths that match a glob, relative to
164 -- the working directory. See 'System.FilePath.Glob' for
164 -- the working directory. See 'System.FilePath.Glob' for
165 -- the glob syntax.
165 -- the glob syntax.
@@ -335,7 +335,9 @@ instance PandocMonad PandocIO where
335 readFileLazy s = liftIOError BL.readFile s
335 readFileLazy s = liftIOError BL.readFile s
336 readFileStrict s = liftIOError B.readFile s
336 readFileStrict s = liftIOError B.readFile s
337 readDefaultDataFile fname = liftIOError IO.readDefaultDataFile fname
337 readDefaultDataFile fname = liftIOError IO.readDefaultDataFile fname
338+ readDataFile fname = do
339+ datadir <- getUserDataDir
338− readDataFile mfp fname = liftIOError (IO.readDataFile mfp) fname
340+ liftIOError (IO.readDataFile datadir) fname
339 glob = liftIO . IO.glob
341 glob = liftIO . IO.glob
340 getModificationTime fp = liftIOError IO.getModificationTime fp
342 getModificationTime fp = liftIOError IO.getModificationTime fp
341 getCommonState = PandocIO $ lift get
343 getCommonState = PandocIO $ lift get
@@ -629,12 +631,16 @@ instance PandocMonad PandocPure where
629 readDefaultDataFile fname = do
631 readDefaultDataFile fname = do
630 let fname' = if fname == "MANUAL.txt" then fname else "data" </> fname
632 let fname' = if fname == "MANUAL.txt" then fname else "data" </> fname
631 readFileStrict fname'
633 readFileStrict fname'
632− readDataFile (Just userDir) fname = do
634+ readDataFile fname = do
635+ datadir <- getUserDataDir
636+ case datadir of
637+ Just userDir -> do
633− userDirFiles <- getsPureState stUserDataFiles
638+ userDirFiles <- getsPureState stUserDataFiles
634− case infoFileContents <$> getFileInfo (userDir </> fname) userDirFiles of
639+ case infoFileContents <$> getFileInfo (userDir </> fname)
640+ userDirFiles of
635− Just bs -> return bs
641+ Just bs -> return bs
636− Nothing -> readDataFile Nothing fname
642+ Nothing -> readDefaultDataFile fname
637− readDataFile Nothing fname = readDefaultDataFile fname
643+ Nothing -> readDefaultDataFile fname
638
644
639 glob s = do
645 glob s = do
640 FileTree ftmap <- getsPureState stFiles
646 FileTree ftmap <- getsPureState stFiles
@@ -662,7 +668,7 @@ instance PandocMonad m => PandocMonad (ParsecT s st m) where
662 readFileLazy = lift . readFileLazy
668 readFileLazy = lift . readFileLazy
663 readFileStrict = lift . readFileStrict
669 readFileStrict = lift . readFileStrict
664 readDefaultDataFile = lift . readDefaultDataFile
670 readDefaultDataFile = lift . readDefaultDataFile
665− readDataFile mbuserdir = lift . readDataFile mbuserdir
671+ readDataFile = lift . readDataFile
666 glob = lift . glob
672 glob = lift . glob
667 getModificationTime = lift . getModificationTime
673 getModificationTime = lift . getModificationTime
668 getCommonState = lift getCommonState
674 getCommonState = lift getCommonState
@@ -691,7 +697,7 @@ instance PandocMonad m => PandocMonad (ReaderT r m) where
691 readFileLazy = lift . readFileLazy
697 readFileLazy = lift . readFileLazy
692 readFileStrict = lift . readFileStrict
698 readFileStrict = lift . readFileStrict
693 readDefaultDataFile = lift . readDefaultDataFile
699 readDefaultDataFile = lift . readDefaultDataFile
694− readDataFile mbuserdir = lift . readDataFile mbuserdir
700+ readDataFile = lift . readDataFile
695 glob = lift . glob
701 glob = lift . glob
696 getModificationTime = lift . getModificationTime
702 getModificationTime = lift . getModificationTime
697 getCommonState = lift getCommonState
703 getCommonState = lift getCommonState
@@ -708,7 +714,7 @@ instance (PandocMonad m, Monoid w) => PandocMonad (WriterT w m) where
708 readFileLazy = lift . readFileLazy
714 readFileLazy = lift . readFileLazy
709 readFileStrict = lift . readFileStrict
715 readFileStrict = lift . readFileStrict
710 readDefaultDataFile = lift . readDefaultDataFile
716 readDefaultDataFile = lift . readDefaultDataFile
711− readDataFile mbuserdir = lift . readDataFile mbuserdir
717+ readDataFile = lift . readDataFile
712 glob = lift . glob
718 glob = lift . glob
713 getModificationTime = lift . getModificationTime
719 getModificationTime = lift . getModificationTime
714 getCommonState = lift getCommonState
720 getCommonState = lift getCommonState
@@ -725,7 +731,7 @@ instance (PandocMonad m, Monoid w) => PandocMonad (RWST r w st m) where
725 readFileLazy = lift . readFileLazy
731 readFileLazy = lift . readFileLazy
726 readFileStrict = lift . readFileStrict
732 readFileStrict = lift . readFileStrict
727 readDefaultDataFile = lift . readDefaultDataFile
733 readDefaultDataFile = lift . readDefaultDataFile
728− readDataFile mbuserdir = lift . readDataFile mbuserdir
734+ readDataFile = lift . readDataFile
729 glob = lift . glob
735 glob = lift . glob
730 getModificationTime = lift . getModificationTime
736 getModificationTime = lift . getModificationTime
731 getCommonState = lift getCommonState
737 getCommonState = lift getCommonState
@@ -742,7 +748,7 @@ instance PandocMonad m => PandocMonad (StateT st m) where
742 readFileLazy = lift . readFileLazy
748 readFileLazy = lift . readFileLazy
743 readFileStrict = lift . readFileStrict
749 readFileStrict = lift . readFileStrict
744 readDefaultDataFile = lift . readDefaultDataFile
750 readDefaultDataFile = lift . readDefaultDataFile
745− readDataFile mbuserdir = lift . readDataFile mbuserdir
751+ readDataFile = lift . readDataFile
746 glob = lift . glob
752 glob = lift . glob
747 getModificationTime = lift . getModificationTime
753 getModificationTime = lift . getModificationTime
748 getCommonState = lift getCommonState
754 getCommonState = lift getCommonState
src/Text/Pandoc/Templates.hs+13−14
@@ -50,28 +50,27 @@ import qualified Text.Pandoc.UTF8 as UTF8
50
50
51-- | Get default template for the specified writer.
51-- | Get default template for the specified writer.
52getDefaultTemplate :: PandocMonad m
52getDefaultTemplate :: PandocMonad m
53− => (Maybe FilePath) -- ^ User data directory to search 1st
54− -> String -- ^ Name of writer
53+ => String -- ^ Name of writer
55 -> m String
54 -> m String
56−getDefaultTemplate user writer = do
55+getDefaultTemplate writer = do
57 let format = takeWhile (`notElem` ("+-" :: String)) writer -- strip off extensions
56 let format = takeWhile (`notElem` ("+-" :: String)) writer -- strip off extensions
58 case format of
57 case format of
59 "native" -> return ""
58 "native" -> return ""
60 "json" -> return ""
59 "json" -> return ""
61 "docx" -> return ""
60 "docx" -> return ""
62 "fb2" -> return ""
61 "fb2" -> return ""
63− "odt" -> getDefaultTemplate user "opendocument"
62+ "odt" -> getDefaultTemplate "opendocument"
64− "html" -> getDefaultTemplate user "html5"
63+ "html" -> getDefaultTemplate "html5"
65− "docbook" -> getDefaultTemplate user "docbook5"
64+ "docbook" -> getDefaultTemplate "docbook5"
66− "epub" -> getDefaultTemplate user "epub3"
65+ "epub" -> getDefaultTemplate "epub3"
67− "markdown_strict" -> getDefaultTemplate user "markdown"
66+ "markdown_strict" -> getDefaultTemplate "markdown"
68− "multimarkdown" -> getDefaultTemplate user "markdown"
67+ "multimarkdown" -> getDefaultTemplate "markdown"
69− "markdown_github" -> getDefaultTemplate user "markdown"
68+ "markdown_github" -> getDefaultTemplate "markdown"
70− "markdown_mmd" -> getDefaultTemplate user "markdown"
69+ "markdown_mmd" -> getDefaultTemplate "markdown"
71− "markdown_phpextra" -> getDefaultTemplate user "markdown"
70+ "markdown_phpextra" -> getDefaultTemplate "markdown"
72− "gfm" -> getDefaultTemplate user "commonmark"
71+ "gfm" -> getDefaultTemplate "commonmark"
73 _ -> let fname = "templates" </> "default" <.> format
72 _ -> let fname = "templates" </> "default" <.> format
74− in UTF8.toString <$> readDataFile user fname
73+ in UTF8.toString <$> readDataFile fname
75
74
76-- | Like 'applyTemplate', but runs in PandocMonad and
75-- | Like 'applyTemplate', but runs in PandocMonad and
77-- raises an error if compilation fails.
76-- raises an error if compilation fails.
src/Text/Pandoc/Writers/Docx.hs+1−1
@@ -235,7 +235,7 @@ writeDocx opts doc@(Pandoc meta _) = do
235 refArchive <- case writerReferenceDoc opts of
235 refArchive <- case writerReferenceDoc opts of
236 Just f -> toArchive <$> P.readFileLazy f
236 Just f -> toArchive <$> P.readFileLazy f
237 Nothing -> (toArchive . BL.fromStrict) <$>
237 Nothing -> (toArchive . BL.fromStrict) <$>
238− P.readDataFile datadir "reference.docx"
238+ P.readDataFile "reference.docx"
239
239
240 parsedDoc <- parseXml refArchive distArchive "word/document.xml"
240 parsedDoc <- parseXml refArchive distArchive "word/document.xml"
241 let wname f qn = qPrefix qn == Just "w" && f (qName qn)
241 let wname f qn = qPrefix qn == Just "w" && f (qName qn)
src/Text/Pandoc/Writers/EPUB.hs+1−2
@@ -393,8 +393,7 @@ pandocToEPUB version opts doc@(Pandoc meta _) = do
393 -- stylesheet
393 -- stylesheet
394 stylesheets <- case epubStylesheets metadata of
394 stylesheets <- case epubStylesheets metadata of
395 [] -> (\x -> [B.fromChunks [x]]) <$>
395 [] -> (\x -> [B.fromChunks [x]]) <$>
396− P.readDataFile (writerUserDataDir opts)
397− "epub.css"
396+ P.readDataFile "epub.css"
398 fs -> mapM P.readFileLazy fs
397 fs -> mapM P.readFileLazy fs
399 let stylesheetEntries = zipWith
398 let stylesheetEntries = zipWith
400 (\bs n -> mkEntry ("styles/stylesheet" ++ show n ++ ".css") bs)
399 (\bs n -> mkEntry ("styles/stylesheet" ++ show n ++ ".css") bs)
src/Text/Pandoc/Writers/ODT.hs+1−2
@@ -78,14 +78,13 @@ pandocToODT :: PandocMonad m
78 -> Pandoc -- ^ Document to convert
78 -> Pandoc -- ^ Document to convert
79 -> O m B.ByteString
79 -> O m B.ByteString
80pandocToODT opts doc@(Pandoc meta _) = do
80pandocToODT opts doc@(Pandoc meta _) = do
81− let datadir = writerUserDataDir opts
82 let title = docTitle meta
81 let title = docTitle meta
83 lang <- toLang (getLang opts meta)
82 lang <- toLang (getLang opts meta)
84 refArchive <-
83 refArchive <-
85 case writerReferenceDoc opts of
84 case writerReferenceDoc opts of
86 Just f -> liftM toArchive $ lift $ P.readFileLazy f
85 Just f -> liftM toArchive $ lift $ P.readFileLazy f
87 Nothing -> lift $ (toArchive . B.fromStrict) <$>
86 Nothing -> lift $ (toArchive . B.fromStrict) <$>
88− P.readDataFile datadir "reference.odt"
87+ P.readDataFile "reference.odt"
89 -- handle formulas and pictures
88 -- handle formulas and pictures
90 -- picEntriesRef <- P.newIORef ([] :: [Entry])
89 -- picEntriesRef <- P.newIORef ([] :: [Entry])
91 doc' <- walkM (transformPicMath opts) $ walk fixDisplayMath doc
90 doc' <- walkM (transformPicMath opts) $ walk fixDisplayMath doc