packages feed

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 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