citeproc-hs 0.3.0 → 0.3.1
raw patch · 3 files changed
+47/−30 lines, 3 filesdep +bytestringdep +utf8-stringdep ~HTTPdep ~pandoc-typesPVP ok
version bump matches the API change (PVP)
Dependencies added: bytestring, utf8-string
Dependency ranges changed: HTTP, pandoc-types
API changes (from Hackage documentation)
Files
- citeproc-hs.cabal +7/−7
- src/Text/CSL/Input/Bibutils.hs +36/−22
- src/Text/CSL/Pickle.hs +4/−1
citeproc-hs.cabal view
@@ -1,5 +1,5 @@ name: citeproc-hs-version: 0.3.0+version: 0.3.1 homepage: http://code.haskell.org/citeproc-hs synopsis: A Citation Style Language implementation in Haskell @@ -94,16 +94,16 @@ ghc-options: -funbox-strict-fields -Wall ghc-prof-options: -prof -auto-all hs-source-dirs: src- build-depends: containers, directory, mtl, xml, json, filepath,- pandoc-types == 1.7+ build-depends: containers, directory, mtl, xml, json, utf8-string,+ bytestring, filepath, pandoc-types >= 1.8 && < 1.9 if flag(bibutils)- build-depends: hs-bibutils >= 0.3- extensions: CPP- cpp-options: -DUSE_BIBUTILS+ build-depends: hs-bibutils >= 0.3+ extensions: CPP+ cpp-options: -DUSE_BIBUTILS if flag(network)- build-depends: network >= 2, HTTP >= 4000.0.5+ build-depends: network >= 2, HTTP >= 4000.0.9 extensions: CPP cpp-options: -DUSE_NETWORK
src/Text/CSL/Input/Bibutils.hs view
@@ -15,15 +15,18 @@ ( readBiblioFile ) where +import Data.Char+import System.FilePath ( takeExtension ) import Text.CSL.Reference import Text.CSL.Input.Json import Text.CSL.Input.MODS-import System.FilePath ( takeExtension, (</>) ) #ifdef USE_BIBUTILS-import Data.Char-import System.Directory ( getTemporaryDirectory, removeFile )-import System.IO+import Control.Exception ( bracket )+import Control.Monad.Trans ( liftIO )+import System.FilePath ( (</>), (<.>) )+import System.IO.Error ( isAlreadyExistsError )+import System.Directory import Text.Bibutils #endif @@ -64,22 +67,33 @@ readBiblioFile' :: FilePath -> BiblioIn -> IO [Reference] readBiblioFile' fin bin | bin == mods_in = readModsCollectionFile fin- | otherwise = do- tdir <- getTemporaryDirectory- (f,h) <- openTempFile tdir "citeproc.txt"- hClose h- let tfile = tdir </> f- param <- bibl_initparams bin mods_out "hs-bibutils"- bibl <- bibl_init- unsetBOM param- setNoSplitTitle param- setCharsetIn param bibl_charset_unicode- setCharsetOut param bibl_charset_unicode- _ <- bibl_read param bibl fin- _ <- bibl_write param bibl tfile- bibl_free bibl- bibl_freeparams param- refs <- readModsCollectionFile tfile- removeFile tfile- return refs+ | otherwise = withTempDir "citeproc" $ \tdir -> do+ let tfile = tdir </> "bibutils-tmp"+ param <- bibl_initparams bin mods_out "hs-bibutils"+ bibl <- bibl_init+ unsetBOM param+ setNoSplitTitle param+ setCharsetIn param bibl_charset_unicode+ setCharsetOut param bibl_charset_unicode+ _ <- bibl_read param bibl fin+ _ <- bibl_write param bibl tfile+ bibl_free bibl+ bibl_freeparams param+ refs <- readModsCollectionFile tfile+ return $! refs++-- | Perform a function in a temporary directory and clean up.+withTempDir :: FilePath -> (FilePath -> IO a) -> IO a+withTempDir baseName = bracket (createTempDir 0 baseName)+ (removeDirectoryRecursive)++-- | Create a temporary directory with a unique name.+createTempDir :: Integer -> FilePath -> IO FilePath+createTempDir num baseName = do+ sysTempDir <- getTemporaryDirectory+ let dirName = sysTempDir </> baseName <.> show num+ liftIO $ catch (createDirectory dirName >> return dirName) $+ \e -> if isAlreadyExistsError e+ then createTempDir (num + 1) baseName+ else ioError e #endif
src/Text/CSL/Pickle.hs view
@@ -22,6 +22,9 @@ import Data.List ( elemIndex ) import Data.Maybe import System.Directory ( doesFileExist )+import qualified Data.ByteString as B+import Data.ByteString.UTF8 ( toString )+import Control.Monad ( liftM ) import Text.XML.Light @@ -387,7 +390,7 @@ readXmlFile :: Show a => PU a -> String -> IO a readXmlFile xp f = do flip unless (error $ f ++ " file does not exist") =<< doesFileExist f- readXmlString xp `fmap` readFile f+ readXmlString xp `fmap` liftM toString (B.readFile f) getStyleVersion :: [Content] -> String getStyleVersion c