@@ -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
633− userDirFiles <- getsPureState stUserDataFiles
638+ userDirFiles <- getsPureState stUserDataFiles
634− case infoFileContents <$> getFileInfo (userDir </> fname) userDirFiles of
639+ case infoFileContents <$> getFileInfo (userDir </> fname)
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
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