diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Text/Pandoc/Shared.hs | 9 | ||||
-rw-r--r-- | src/Text/Pandoc/Templates.hs | 19 |
2 files changed, 7 insertions, 21 deletions
diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs index e913d5d0b..ddce396fb 100644 --- a/src/Text/Pandoc/Shared.hs +++ b/src/Text/Pandoc/Shared.hs @@ -118,13 +118,13 @@ import Data.Char ( toLower, toUpper, ord, isLower, isUpper, isAlpha, import Data.List ( find, isPrefixOf, intercalate ) import Network.URI ( parseURI, URI (..), isAllowedInURI ) import System.Directory +import System.FilePath ( FilePath, (</>) ) import Prelude hiding ( putStrLn, writeFile, readFile, getContents ) import System.IO.UTF8 import Data.Generics import qualified Control.Monad.State as S import Control.Monad (join) import Paths_pandoc (getDataFileName) - -- -- List processing -- @@ -1033,6 +1033,9 @@ inDirectory path action = do setCurrentDirectory oldDir return result --- | Read file from the Cabal data directory. +-- | Read file from user data directory or, if not found there, from +-- Cabal data directory. On unix the user data directory is @$HOME/.pandoc@. readDataFile :: FilePath -> IO String -readDataFile fname = getDataFileName fname >>= readFile +readDataFile fname = do + userDir <- getAppUserDataDirectory "pandoc" + catch (readFile $ userDir </> fname) (\_ -> getDataFileName fname >>= readFile) diff --git a/src/Text/Pandoc/Templates.hs b/src/Text/Pandoc/Templates.hs index 75989fbcd..5c21cc8be 100644 --- a/src/Text/Pandoc/Templates.hs +++ b/src/Text/Pandoc/Templates.hs @@ -49,11 +49,7 @@ import Text.ParserCombinators.Parsec import Control.Monad (liftM) import qualified Control.Exception as E (try, IOException) import System.FilePath -import System.Directory -import Prelude hiding (readFile) -import System.IO.UTF8 (readFile) import Text.Pandoc.Shared (readDataFile) -import Paths_pandoc -- | Get the default template, either from the application's user data -- directory (~/.pandoc on unix) or from the cabal data directory. @@ -62,21 +58,8 @@ getDefaultTemplate "native" = return $ Right "" getDefaultTemplate "odt" = getDefaultTemplate "opendocument" getDefaultTemplate format = do let format' = takeWhile (/='+') format -- strip off "+lhs" if present - ut <- getTemplateFromUserDataDirectory format' - case ut of - Right t -> return $ Right t - Left _ -> getTemplateFromCabalDataDirectory format' + E.try $ readDataFile $ "templates" </> format' <.> "template" -getTemplateFromUserDataDirectory :: String -> IO (Either E.IOException String) -getTemplateFromUserDataDirectory format = E.try $ do - userDir <- getAppUserDataDirectory "pandoc" - let templatePath = userDir </> "templates" </> format <.> "template" - readFile templatePath - -getTemplateFromCabalDataDirectory :: String -> IO (Either E.IOException String) -getTemplateFromCabalDataDirectory format = E.try $ - readDataFile $ "templates" </> format <.> "template" - -- | Renders a template renderTemplate :: [(String,String)] -- ^ Assoc. list of values for variables -> String -- ^ Template |