epub-metadata 4.3 → 4.4
raw patch · 12 files changed
+124/−95 lines, 12 filesdep +epub-metadatanew-component:exe:epub-metadata-examplePVP ok
version bump matches the API change (PVP)
Dependencies added: epub-metadata
API changes (from Hackage documentation)
- Codec.Epub.Data.Guide: grHref :: GuideRef -> MFItemId
- Codec.Epub.Data.Guide: grTitle :: GuideRef -> Maybe String
- Codec.Epub.Data.Guide: grType :: GuideRef -> String
- Codec.Epub.Data.Guide: instance Eq GuideRef
- Codec.Epub.Data.Guide: instance Show GuideRef
- Codec.Epub.Data.Manifest: instance Eq Manifest
- Codec.Epub.Data.Manifest: instance Eq ManifestItem
- Codec.Epub.Data.Manifest: instance Show Manifest
- Codec.Epub.Data.Manifest: instance Show ManifestItem
- Codec.Epub.Data.Manifest: mfiHref :: ManifestItem -> MFItemHref
- Codec.Epub.Data.Manifest: mfiId :: ManifestItem -> MFItemId
- Codec.Epub.Data.Manifest: mfiMediaType :: ManifestItem -> MFItemMediaType
- Codec.Epub.Data.Metadata: creatorFileAs :: Creator -> Maybe String
- Codec.Epub.Data.Metadata: creatorRole :: Creator -> Maybe String
- Codec.Epub.Data.Metadata: creatorSeq :: Creator -> Maybe Int
- Codec.Epub.Data.Metadata: creatorText :: Creator -> String
- Codec.Epub.Data.Metadata: idId :: Identifier -> Maybe String
- Codec.Epub.Data.Metadata: idScheme :: Identifier -> Maybe String
- Codec.Epub.Data.Metadata: idText :: Identifier -> String
- Codec.Epub.Data.Metadata: idType :: Identifier -> Maybe String
- Codec.Epub.Data.Metadata: instance Eq Creator
- Codec.Epub.Data.Metadata: instance Eq Date
- Codec.Epub.Data.Metadata: instance Eq Description
- Codec.Epub.Data.Metadata: instance Eq Identifier
- Codec.Epub.Data.Metadata: instance Eq Metadata
- Codec.Epub.Data.Metadata: instance Eq Title
- Codec.Epub.Data.Metadata: instance Show Creator
- Codec.Epub.Data.Metadata: instance Show Date
- Codec.Epub.Data.Metadata: instance Show Description
- Codec.Epub.Data.Metadata: instance Show Identifier
- Codec.Epub.Data.Metadata: instance Show Metadata
- Codec.Epub.Data.Metadata: instance Show Title
- Codec.Epub.Data.Metadata: metaContributors :: Metadata -> [Creator]
- Codec.Epub.Data.Metadata: metaCoverages :: Metadata -> [String]
- Codec.Epub.Data.Metadata: metaCreators :: Metadata -> [Creator]
- Codec.Epub.Data.Metadata: metaDates :: Metadata -> [Date]
- Codec.Epub.Data.Metadata: metaDescriptions :: Metadata -> [Description]
- Codec.Epub.Data.Metadata: metaFormats :: Metadata -> [String]
- Codec.Epub.Data.Metadata: metaIds :: Metadata -> [Identifier]
- Codec.Epub.Data.Metadata: metaLangs :: Metadata -> [String]
- Codec.Epub.Data.Metadata: metaModified :: Metadata -> Maybe String
- Codec.Epub.Data.Metadata: metaPublishers :: Metadata -> [String]
- Codec.Epub.Data.Metadata: metaRelations :: Metadata -> [String]
- Codec.Epub.Data.Metadata: metaRights :: Metadata -> [String]
- Codec.Epub.Data.Metadata: metaSource :: Metadata -> Maybe String
- Codec.Epub.Data.Metadata: metaSubjects :: Metadata -> [String]
- Codec.Epub.Data.Metadata: metaTitles :: Metadata -> [Title]
- Codec.Epub.Data.Metadata: metaType :: Metadata -> Maybe String
- Codec.Epub.Data.Metadata: refId :: Refinement -> String
- Codec.Epub.Data.Metadata: refProp :: Refinement -> String
- Codec.Epub.Data.Metadata: refScheme :: Refinement -> String
- Codec.Epub.Data.Metadata: refText :: Refinement -> String
- Codec.Epub.Data.Metadata: titleLang :: Title -> Maybe String
- Codec.Epub.Data.Metadata: titleSeq :: Title -> Maybe Int
- Codec.Epub.Data.Metadata: titleText :: Title -> String
- Codec.Epub.Data.Metadata: titleType :: Title -> Maybe String
- Codec.Epub.Data.Package: instance Eq Package
- Codec.Epub.Data.Package: instance Show Package
- Codec.Epub.Data.Package: pkgUniqueId :: Package -> String
- Codec.Epub.Data.Package: pkgVersion :: Package -> String
- Codec.Epub.Data.Spine: instance Eq Spine
- Codec.Epub.Data.Spine: instance Eq SpineItemref
- Codec.Epub.Data.Spine: instance Show Spine
- Codec.Epub.Data.Spine: instance Show SpineItemref
- Codec.Epub.Data.Spine: siIdRef :: SpineItemref -> MFItemId
- Codec.Epub.Data.Spine: siLinear :: SpineItemref -> Maybe Bool
- Codec.Epub.Data.Spine: spineItemrefs :: Spine -> [SpineItemref]
- Codec.Epub.Data.Spine: spineToc :: Spine -> MFItemId
- Codec.Epub.Format: instance Formattable Manifest
- Codec.Epub.Format: instance Formattable Metadata
- Codec.Epub.Format: instance Formattable Package
- Codec.Epub.Format: instance Formattable Spine
- Codec.Epub.Format: instance Formattable [GuideRef]
+ Codec.Epub.Data.Guide: [grHref] :: GuideRef -> MFItemId
+ Codec.Epub.Data.Guide: [grTitle] :: GuideRef -> Maybe String
+ Codec.Epub.Data.Guide: [grType] :: GuideRef -> String
+ Codec.Epub.Data.Guide: instance GHC.Classes.Eq Codec.Epub.Data.Guide.GuideRef
+ Codec.Epub.Data.Guide: instance GHC.Show.Show Codec.Epub.Data.Guide.GuideRef
+ Codec.Epub.Data.Manifest: [mfiHref] :: ManifestItem -> MFItemHref
+ Codec.Epub.Data.Manifest: [mfiId] :: ManifestItem -> MFItemId
+ Codec.Epub.Data.Manifest: [mfiMediaType] :: ManifestItem -> MFItemMediaType
+ Codec.Epub.Data.Manifest: instance GHC.Classes.Eq Codec.Epub.Data.Manifest.Manifest
+ Codec.Epub.Data.Manifest: instance GHC.Classes.Eq Codec.Epub.Data.Manifest.ManifestItem
+ Codec.Epub.Data.Manifest: instance GHC.Show.Show Codec.Epub.Data.Manifest.Manifest
+ Codec.Epub.Data.Manifest: instance GHC.Show.Show Codec.Epub.Data.Manifest.ManifestItem
+ Codec.Epub.Data.Metadata: [creatorFileAs] :: Creator -> Maybe String
+ Codec.Epub.Data.Metadata: [creatorRole] :: Creator -> Maybe String
+ Codec.Epub.Data.Metadata: [creatorSeq] :: Creator -> Maybe Int
+ Codec.Epub.Data.Metadata: [creatorText] :: Creator -> String
+ Codec.Epub.Data.Metadata: [idId] :: Identifier -> Maybe String
+ Codec.Epub.Data.Metadata: [idScheme] :: Identifier -> Maybe String
+ Codec.Epub.Data.Metadata: [idText] :: Identifier -> String
+ Codec.Epub.Data.Metadata: [idType] :: Identifier -> Maybe String
+ Codec.Epub.Data.Metadata: [metaContributors] :: Metadata -> [Creator]
+ Codec.Epub.Data.Metadata: [metaCoverages] :: Metadata -> [String]
+ Codec.Epub.Data.Metadata: [metaCreators] :: Metadata -> [Creator]
+ Codec.Epub.Data.Metadata: [metaDates] :: Metadata -> [Date]
+ Codec.Epub.Data.Metadata: [metaDescriptions] :: Metadata -> [Description]
+ Codec.Epub.Data.Metadata: [metaFormats] :: Metadata -> [String]
+ Codec.Epub.Data.Metadata: [metaIds] :: Metadata -> [Identifier]
+ Codec.Epub.Data.Metadata: [metaLangs] :: Metadata -> [String]
+ Codec.Epub.Data.Metadata: [metaModified] :: Metadata -> Maybe String
+ Codec.Epub.Data.Metadata: [metaPublishers] :: Metadata -> [String]
+ Codec.Epub.Data.Metadata: [metaRelations] :: Metadata -> [String]
+ Codec.Epub.Data.Metadata: [metaRights] :: Metadata -> [String]
+ Codec.Epub.Data.Metadata: [metaSource] :: Metadata -> Maybe String
+ Codec.Epub.Data.Metadata: [metaSubjects] :: Metadata -> [String]
+ Codec.Epub.Data.Metadata: [metaTitles] :: Metadata -> [Title]
+ Codec.Epub.Data.Metadata: [metaType] :: Metadata -> Maybe String
+ Codec.Epub.Data.Metadata: [refId] :: Refinement -> String
+ Codec.Epub.Data.Metadata: [refProp] :: Refinement -> String
+ Codec.Epub.Data.Metadata: [refScheme] :: Refinement -> String
+ Codec.Epub.Data.Metadata: [refText] :: Refinement -> String
+ Codec.Epub.Data.Metadata: [titleLang] :: Title -> Maybe String
+ Codec.Epub.Data.Metadata: [titleSeq] :: Title -> Maybe Int
+ Codec.Epub.Data.Metadata: [titleText] :: Title -> String
+ Codec.Epub.Data.Metadata: [titleType] :: Title -> Maybe String
+ Codec.Epub.Data.Metadata: instance GHC.Classes.Eq Codec.Epub.Data.Metadata.Creator
+ Codec.Epub.Data.Metadata: instance GHC.Classes.Eq Codec.Epub.Data.Metadata.Date
+ Codec.Epub.Data.Metadata: instance GHC.Classes.Eq Codec.Epub.Data.Metadata.Description
+ Codec.Epub.Data.Metadata: instance GHC.Classes.Eq Codec.Epub.Data.Metadata.Identifier
+ Codec.Epub.Data.Metadata: instance GHC.Classes.Eq Codec.Epub.Data.Metadata.Metadata
+ Codec.Epub.Data.Metadata: instance GHC.Classes.Eq Codec.Epub.Data.Metadata.Title
+ Codec.Epub.Data.Metadata: instance GHC.Show.Show Codec.Epub.Data.Metadata.Creator
+ Codec.Epub.Data.Metadata: instance GHC.Show.Show Codec.Epub.Data.Metadata.Date
+ Codec.Epub.Data.Metadata: instance GHC.Show.Show Codec.Epub.Data.Metadata.Description
+ Codec.Epub.Data.Metadata: instance GHC.Show.Show Codec.Epub.Data.Metadata.Identifier
+ Codec.Epub.Data.Metadata: instance GHC.Show.Show Codec.Epub.Data.Metadata.Metadata
+ Codec.Epub.Data.Metadata: instance GHC.Show.Show Codec.Epub.Data.Metadata.Title
+ Codec.Epub.Data.Package: [pkgUniqueId] :: Package -> String
+ Codec.Epub.Data.Package: [pkgVersion] :: Package -> String
+ Codec.Epub.Data.Package: instance GHC.Classes.Eq Codec.Epub.Data.Package.Package
+ Codec.Epub.Data.Package: instance GHC.Show.Show Codec.Epub.Data.Package.Package
+ Codec.Epub.Data.Spine: [siIdRef] :: SpineItemref -> MFItemId
+ Codec.Epub.Data.Spine: [siLinear] :: SpineItemref -> Maybe Bool
+ Codec.Epub.Data.Spine: [spineItemrefs] :: Spine -> [SpineItemref]
+ Codec.Epub.Data.Spine: [spineToc] :: Spine -> MFItemId
+ Codec.Epub.Data.Spine: instance GHC.Classes.Eq Codec.Epub.Data.Spine.Spine
+ Codec.Epub.Data.Spine: instance GHC.Classes.Eq Codec.Epub.Data.Spine.SpineItemref
+ Codec.Epub.Data.Spine: instance GHC.Show.Show Codec.Epub.Data.Spine.Spine
+ Codec.Epub.Data.Spine: instance GHC.Show.Show Codec.Epub.Data.Spine.SpineItemref
+ Codec.Epub.Format: instance Codec.Epub.Format.Formattable Codec.Epub.Data.Manifest.Manifest
+ Codec.Epub.Format: instance Codec.Epub.Format.Formattable Codec.Epub.Data.Metadata.Metadata
+ Codec.Epub.Format: instance Codec.Epub.Format.Formattable Codec.Epub.Data.Package.Package
+ Codec.Epub.Format: instance Codec.Epub.Format.Formattable Codec.Epub.Data.Spine.Spine
+ Codec.Epub.Format: instance Codec.Epub.Format.Formattable [Codec.Epub.Data.Guide.GuideRef]
- Codec.Epub.Parse.Guide: guideP :: ArrowXml a => a (NTree XNode) [GuideRef]
+ Codec.Epub.Parse.Guide: guideP :: (ArrowXml a) => a (NTree XNode) [GuideRef]
- Codec.Epub.Parse.Manifest: manifestP :: ArrowXml a => a (NTree XNode) Manifest
+ Codec.Epub.Parse.Manifest: manifestP :: (ArrowXml a) => a (NTree XNode) Manifest
- Codec.Epub.Parse.Metadata: metadataP :: ArrowXml a => [Refinement] -> a (NTree XNode) Metadata
+ Codec.Epub.Parse.Metadata: metadataP :: (ArrowXml a) => [Refinement] -> a (NTree XNode) Metadata
- Codec.Epub.Parse.Package: packageP :: ArrowXml a => a (NTree XNode) Package
+ Codec.Epub.Parse.Package: packageP :: (ArrowXml a) => a (NTree XNode) Package
- Codec.Epub.Parse.Refinements: refinementsP :: ArrowXml a => a (NTree XNode) [Refinement]
+ Codec.Epub.Parse.Refinements: refinementsP :: (ArrowXml a) => a (NTree XNode) [Refinement]
- Codec.Epub.Parse.Spine: spineP :: ArrowXml a => a (NTree XNode) Spine
+ Codec.Epub.Parse.Spine: spineP :: (ArrowXml a) => a (NTree XNode) Spine
- Codec.Epub.Parse.Util: atQTag :: ArrowXml a => QName -> a (NTree XNode) XmlTree
+ Codec.Epub.Parse.Util: atQTag :: (ArrowXml a) => QName -> a (NTree XNode) XmlTree
- Codec.Epub.Parse.Util: mbGetAttrValue :: ArrowXml a => String -> a XmlTree (Maybe String)
+ Codec.Epub.Parse.Util: mbGetAttrValue :: (ArrowXml a) => String -> a XmlTree (Maybe String)
- Codec.Epub.Parse.Util: mbGetQAttrValue :: ArrowXml a => QName -> a XmlTree (Maybe String)
+ Codec.Epub.Parse.Util: mbGetQAttrValue :: (ArrowXml a) => QName -> a XmlTree (Maybe String)
- Codec.Epub.Parse.Util: mbQTagText :: ArrowXml a => QName -> a (NTree XNode) (Maybe String)
+ Codec.Epub.Parse.Util: mbQTagText :: (ArrowXml a) => QName -> a (NTree XNode) (Maybe String)
- Codec.Epub.Parse.Util: notNullA :: ArrowList a => a [b] [b]
+ Codec.Epub.Parse.Util: notNullA :: (ArrowList a) => a [b] [b]
- Codec.Epub.Parse.Util: text :: ArrowXml a => a (NTree XNode) String
+ Codec.Epub.Parse.Util: text :: (ArrowXml a) => a (NTree XNode) String
Files
- LICENSE +1/−1
- README.md +5/−12
- app/epub-metadata-example.hs +50/−0
- changelog.md +11/−0
- doc/examples/README +0/−3
- doc/examples/Setup.hs +0/−6
- doc/examples/epub-metadata-example.cabal +0/−11
- doc/examples/epub-metadata-example.hs +0/−45
- epub-metadata.cabal +41/−10
- stack.yaml +3/−0
- testsuite/Archive.hs +7/−2
- util/prefs/boring +6/−5
LICENSE view
@@ -1,4 +1,4 @@-Copyright Dino Morelli 2010-2015+Copyright Dino Morelli 2010-2016 All rights reserved.
README.md view
@@ -73,23 +73,16 @@ ## Getting source - Download the cabalized source package [from Hackage](http://hackage.haskell.org/package/epub-metadata)-- Get the source with cabal-install: `$ cabal get epub-metadata` - Get the source with darcs: `$ darcs get http://hub.darcs.net/dino/epub-metadata`+- Get the source with cabal-install: `$ cabal get epub-metadata`+- Get the source with stack: `$ stack unpack epub-metadata` - If you're just looking, [browse the source](http://hub.darcs.net/dino/epub-metadata) And once you have it, building the usual way: - $ cabal configure --enable-tests- $ cabal build- $ cabal test- $ cabal haddock- $ cabal install---## Installing--Build and install with cabal-install:- `$ cabal update ; cabal install epub-metadata`+ $ stack build+ $ stack test+ $ stack haddock ## Contact
+ app/epub-metadata-example.hs view
@@ -0,0 +1,50 @@+{-+ This is a small app for maintaining the example code that+ goes into the Haddock docs for Codec.Epub+-}++import Codec.Epub+import Codec.Epub.Data.Package+import Control.Monad.Except+++main :: IO ()+main = do+ -- epub-metadata actions are in MonadIO and MonadError, so we're+ -- using ErrorT here++ result <- runExceptT $ do++ -- Use the getPkgXmlFromZip action to extract the Package+ -- Document as an XML string. There are also other actions+ -- for reading from ByteStringS and directories.+ --+ -- See Codec.Epub.IO++ xmlString <- getPkgXmlFromZip "/path/to/book.epub"++ -- Now the sections of meta-information about the book can+ -- be extracted from that XML using functions like getPackage,+ -- getMetadata, etc.+ --+ -- See Codec.Epub.Parse++ pkg <- getPackage xmlString -- :: Codec.Epub.Data.Package+ meta <- getMetadata xmlString -- :: Codec.Epub.Data.Metadata++ -- Parts of these data structures can be used from here+ -- as needed+ --+ -- See Codec.Epub.Data.Package for pkgVersion below+ -- and the others in Codec.Epub.Data.*++ liftIO $ putStrLn $ pkgVersion pkg++ -- There is also pretty-print formatting of these data types+ -- in Codec.Epub.Data through the Formattable typeclass+ --+ -- See Codec.Epub.Format++ liftIO $ putStr $ format meta++ either putStrLn return result
changelog.md view
@@ -1,3 +1,14 @@+4.4 (2016-10-11)++ * Removed defunct cabal stability field+ * Moved copyright dates up to 2016+ * Moved tested-with up to GHC 8.0.1+ * Removed GHC switch simpl-tick-factor+ * Moved cabal-version up to >= 1.10+ * Project now builds with stack+ * Fixed failing damaged zip file unit test++ 4.3 (2015-05-25) * Replaced deprecated Control.Monad.Error with
− doc/examples/README
@@ -1,3 +0,0 @@-This is a small project for maintaining the example code that goes into the Haddock docs for Codec.Epub--To build it, you'll need to install epub-metadata as it's called for by this example code's cabal file.
− doc/examples/Setup.hs
@@ -1,6 +0,0 @@-#! /usr/bin/env runhaskell--import Distribution.Simple---main = defaultMain
− doc/examples/epub-metadata-example.cabal
@@ -1,11 +0,0 @@-name: epub-metadata-example-version: 1.0-cabal-version: >= 1.8-build-type: Simple--executable epub-metadata-example- main-is: epub-metadata-example.hs- build-depends: base >= 3 && < 5,- epub-metadata,- mtl- ghc-options: -Wall
− doc/examples/epub-metadata-example.hs
@@ -1,45 +0,0 @@-import Codec.Epub-import Codec.Epub.Data.Package-import Control.Monad.Error---main :: IO ()-main = do- -- epub-metadata actions are in MonadIO and MonadError, so we're- -- using ErrorT here-- result <- runErrorT $ do-- -- Use the getPkgXmlFromZip action to extract the Package- -- Document as an XML string. There are also other actions- -- for reading from ByteStringS and directories.- --- -- See Codec.Epub.IO-- xmlString <- getPkgXmlFromZip "/path/to/book.epub"-- -- Now the sections of meta-information about the book can- -- be extracted from that XML using functions like getPackage,- -- getMetadata, etc.- --- -- See Codec.Epub.Parse-- pkg <- getPackage xmlString -- :: Codec.Epub.Data.Package- meta <- getMetadata xmlString -- :: Codec.Epub.Data.Metadata-- -- Parts of these data structures can be used from here- -- as needed- --- -- See Codec.Epub.Data.Package for pkgVersion below- -- and the others in Codec.Epub.Data.*-- liftIO $ putStrLn $ pkgVersion pkg-- -- There is also pretty-print formatting of these data types- -- in Codec.Epub.Data through the Formattable typeclass- --- -- See Codec.Epub.Format-- liftIO $ putStr $ format meta-- either putStrLn return result
epub-metadata.cabal view
@@ -1,27 +1,24 @@ name: epub-metadata-version: 4.3-cabal-version: >= 1.8+version: 4.4+cabal-version: >= 1.10 build-type: Simple license: BSD3 license-file: LICENSE-copyright: 2010-2015 Dino Morelli+copyright: 2010-2016 Dino Morelli author: Dino Morelli maintainer: Dino Morelli <dino@ui3.info>-stability: experimental homepage: http://hub.darcs.net/dino/epub-metadata synopsis: Library for parsing epub document metadata description: Library for parsing and manipulating epub document metadata. Supports epub versions 2 and 3. This library was constructed by studying the IDPF specifications for epub documents found here <http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm> and here <http://www.idpf.org/epub/30/spec/epub30-publications.html> category: Codec, Text-tested-with: GHC >= 7.10.1+tested-with: GHC >= 8.0.1 extra-source-files: changelog.md doc/dev/notes- doc/examples/README- doc/examples/*.cabal- doc/examples/*.hs doc/hcar/epubmetadata-De.tex README.md+ stack.yaml testsuite/*.epub testsuite/*.hs testsuite/*.opf@@ -74,7 +71,8 @@ regex-compat, zip-archive hs-source-dirs: src- ghc-options: -Wall -fsimpl-tick-factor=200+ ghc-options: -Wall+ default-language: Haskell2010 test-suite test-epub-metadata type: exitcode-stdio-1.0@@ -89,4 +87,37 @@ regex-compat, zip-archive hs-source-dirs: src testsuite- ghc-options: -Wall -fsimpl-tick-factor=200+ other-modules: Archive+ Codec.Epub.Data.Common+ Codec.Epub.Data.Guide+ Codec.Epub.Data.Manifest+ Codec.Epub.Data.Metadata+ Codec.Epub.Data.Package+ Codec.Epub.Data.Spine+ Codec.Epub.IO+ Codec.Epub.Parse+ Codec.Epub.Parse.Guide+ Codec.Epub.Parse.Manifest+ Codec.Epub.Parse.Metadata+ Codec.Epub.Parse.Package+ Codec.Epub.Parse.Refinements+ Codec.Epub.Parse.Spine+ Codec.Epub.Parse.Util+ Codec.Epub.Util+ Epub2.ParseGuide+ Epub2.ParseMetadata+ Epub3.ParseMetadata+ ParseManifest+ ParsePackage+ ParseSpine+ ghc-options: -Wall+ default-language: Haskell2010++executable epub-metadata-example+ main-is: epub-metadata-example.hs+ build-depends: base >= 3 && < 5,+ epub-metadata,+ mtl+ hs-source-dirs: app+ ghc-options: -Wall+ default-language: Haskell2010
+ stack.yaml view
@@ -0,0 +1,3 @@+resolver: lts-7.3+packages:+- '.'
testsuite/Archive.hs view
@@ -7,6 +7,7 @@ import Codec.Archive.Zip import Control.Monad.Except+import Data.List ( isPrefixOf ) import System.Directory import System.FilePath import Test.HUnit@@ -42,10 +43,14 @@ a fatal exception. -} testDamagedZip :: Test-testDamagedZip = TestLabel "damaged zip" $ TestCase $ do+testDamagedZip = TestCase $ do+ let label = "damaged zip"+ let expectedErrorPrefix = "Data.Binary.Get.runGet at position 138: Did not find end of central directory signature" actual <- runExceptT $ getPkgXmlFromZip $ "testsuite" </> "damagedZipCentralDir.epub"- actual @?= Left "Data.Binary.Get.runGet at position 138: Did not find end of central directory signature"+ case actual of+ Left actualMessage -> assertBool label $ isPrefixOf expectedErrorPrefix actualMessage+ Right _ -> assertFailure label {- Found books coming from Barnes & Noble (for their NOOK reader) to
util/prefs/boring view
@@ -1,7 +1,7 @@ # This file contains a list of extended regular expressions, one per # line. A file path matching any of these expressions will be filtered # out during `darcs add', or when the `--look-for-adds' flag is passed-# to `darcs whatsnew' and `record'. The entries in ~/.darcs/boring (if+# to `darcs whatsnew' and `record'. The entries in ~/.darcs/boring (if # it exists) supplement those in this file. # # Blank lines, and lines beginning with an octothorpe (#) are ignored.@@ -45,11 +45,8 @@ # cabal intermediates \.installed-pkg-config \.setup-config-# cabal sandbox-^\.cabal-sandbox(/|$)-cabal\.sandbox\.config # standard cabal build dir, might not be boring for everybody-^dist(/|$)+# ^dist(/|$) # autotools (^|/)autom4te\.cache($|/) (^|/)config\.(log|status)$@@ -121,3 +118,7 @@ (^|/)\.lock-wscript$ # mac os finder (^|/)\.DS_Store$+# emacs saved sessions (desktops)+(^|.*/)\.emacs\.desktop(\.lock)?$++(^|/).stack-work($|/)