@@ -32,7 +32,7 @@ module Main where
32import Text.Pandoc
32import Text.Pandoc
33import Text.Pandoc.S5 (s5HeaderIncludes)
33import Text.Pandoc.S5 (s5HeaderIncludes)
34import Text.Pandoc.Shared ( tabFilter, ObfuscationMethod (..), readDataFile,
34import Text.Pandoc.Shared ( tabFilter, ObfuscationMethod (..), readDataFile,
35− headerShift )
35+ headerShift, findDataFile, findFirstFile )
36#ifdef _HIGHLIGHTING
36#ifdef _HIGHLIGHTING
37import Text.Pandoc.Highlighting ( languages )
37import Text.Pandoc.Highlighting ( languages )
@@ -42,7 +42,7 @@ import System.FilePath
42import System.Console.GetOpt
42import System.Console.GetOpt
43import Data.Char ( toLower, isDigit )
43import Data.Char ( toLower, isDigit )
44import Data.List ( intercalate, isSuffixOf )
44import Data.List ( intercalate, isSuffixOf )
45−import System.Directory ( getAppUserDataDirectory, doesFileExist )
45+import System.Directory ( getAppUserDataDirectory )
46import System.IO ( stdout, stderr )
46import System.IO ( stdout, stderr )
47import qualified Text.Pandoc.UTF8 as UTF8
47import qualified Text.Pandoc.UTF8 as UTF8
48#ifdef _CITEPROC
48#ifdef _CITEPROC
@@ -55,7 +55,6 @@ import Network.URI (parseURI, isURI, URI(..))
55import qualified Data.ByteString.Lazy as B
55import qualified Data.ByteString.Lazy as B
56import Data.ByteString.Lazy.UTF8 (toString, fromString)
56import Data.ByteString.Lazy.UTF8 (toString, fromString)
57import Codec.Binary.UTF8.String (decodeString, encodeString)
57import Codec.Binary.UTF8.String (decodeString, encodeString)
58−import Paths_pandoc (getDataFileName)
60copyrightMessage :: String
59copyrightMessage :: String
61copyrightMessage = "\nCopyright (C) 2006-2010 John MacFarlane\n" ++
60copyrightMessage = "\nCopyright (C) 2006-2010 John MacFarlane\n" ++
@@ -768,6 +767,25 @@ main = do
768 return $ ("mathml-script", s) : variables'
767 return $ ("mathml-script", s) : variables'
769 _ -> return variables'
768 _ -> return variables'
771+ cslfile' <- if null cslfile
772+ then findDataFile datadir "default.csl"
774+ csl <- readCSLFile cslfile'
775+ refs' <- if null refs
777+ f <- findFirstFile datadir
778+ ["biblio.xml","biblio.json","biblio.bib"]
780+ Just x -> catch (readBiblioFile x) $ \e -> do
781+ UTF8.hPutStrLn stderr $
782+ "Error reading bibliography `" ++ x ++ "'"
783+ UTF8.hPutStrLn stderr $ show e
784+ exitWith (ExitFailure 23) >> return []
785+ Nothing -> return []
771 let sourceDir = if null sources
789 let sourceDir = if null sources
773 else takeDirectory (head sources)
791 else takeDirectory (head sources)
@@ -785,7 +803,7 @@ main = do
785 lhsExtension sources,
803 lhsExtension sources,
786 stateStandalone = standalone',
804 stateStandalone = standalone',
787#ifdef _CITEPROC
805#ifdef _CITEPROC
788− stateCitations = map refId refs,
806+ stateCitations = map refId refs',
790 stateSmart = smart || writerName' `elem`
808 stateSmart = smart || writerName' `elem`
791 ["latex", "context", "latex+lhs", "man"],
809 ["latex", "context", "latex+lhs", "man"],
@@ -839,29 +857,13 @@ main = do
840 let convertTabs = tabFilter (if preserveTabs then 0 else tabStop)
858 let convertTabs = tabFilter (if preserveTabs then 0 else tabStop)
843− cslfile' <- if null cslfile
845− let defaultcsl = "default.csl"
846− csldatafile <- getDataFileName defaultcsl
848− Nothing -> return csldatafile
850− ex <- doesFileExist $ u </> defaultcsl
852− then return $ u </> defaultcsl
853− else return csldatafile
855− csl <- readCSLFile cslfile'
858 doc <- fmap (reader startParserState . convertTabs . intercalate "\n") (readSources sources)
860 doc <- fmap (reader startParserState . convertTabs . intercalate "\n") (readSources sources)
860 let doc' = foldr ($) doc transforms
862 let doc' = foldr ($) doc transforms
862 doc'' <- do
864 doc'' <- do
863#ifdef _CITEPROC
865#ifdef _CITEPROC
864− processBiblio csl refs doc'
866+ processBiblio csl refs' doc'
866 return doc'
868 return doc'