@@ -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 )
45+import System.Directory ( getAppUserDataDirectory, doesFileExist )
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,6 +55,7 @@ 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)
59copyrightMessage :: String
60copyrightMessage :: String
60copyrightMessage = "\nCopyright (C) 2006-2010 John MacFarlane\n" ++
61copyrightMessage = "\nCopyright (C) 2006-2010 John MacFarlane\n" ++
@@ -164,7 +165,7 @@ data Opt = Opt
164 , optDataDir :: Maybe FilePath
165 , optDataDir :: Maybe FilePath
165#ifdef _CITEPROC
166#ifdef _CITEPROC
166 , optBibliography :: [Reference]
167 , optBibliography :: [Reference]
167− , optCslFile :: String
168+ , optCslFile :: FilePath
@@ -205,7 +206,7 @@ defaultOpts = Opt
205 , optDataDir = Nothing
206 , optDataDir = Nothing
206#ifdef _CITEPROC
207#ifdef _CITEPROC
207 , optBibliography = []
208 , optBibliography = []
208− , optCslFile = []
209+ , optCslFile = ""
@@ -532,7 +533,7 @@ options =
533 , Option "" ["csl"]
534 , Option "" ["csl"]
535− (\arg opt -> return opt { optCslFile = arg} )
536+ (\arg opt -> return opt { optCslFile = arg })
536 "FILENAME")
537 "FILENAME")
@@ -685,7 +686,7 @@ main = do
685 , optDataDir = mbDataDir
686 , optDataDir = mbDataDir
686#ifdef _CITEPROC
687#ifdef _CITEPROC
687 , optBibliography = refs
688 , optBibliography = refs
688− , optCslFile = cslFile
689+ , optCslFile = cslfile
@@ -838,13 +839,29 @@ main = do
839 let convertTabs = tabFilter (if preserveTabs then 0 else tabStop)
840 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'
841 doc <- fmap (reader startParserState . convertTabs . intercalate "\n") (readSources sources)
858 doc <- fmap (reader startParserState . convertTabs . intercalate "\n") (readSources sources)
843 let doc' = foldr ($) doc transforms
860 let doc' = foldr ($) doc transforms
845 doc'' <- do
862 doc'' <- do
846#ifdef _CITEPROC
863#ifdef _CITEPROC
847− processBiblio cslFile refs doc'
864+ processBiblio csl refs doc'
849 return doc'
866 return doc'