packages feed

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 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($|/)