{- | Data types for working with the metadata of epub documents

   This contains the manifest information from an epub document.
-}
module Codec.Epub.Data.Manifest
   ( Manifest (..)
   , ManifestItem (..)
   )
   where

import Codec.Epub.Data.Common


-- | manifest attribute values
type MFItemHref = String
type MFItemMediaType = String


-- | package\/manifest\/item tag
data ManifestItem = ManifestItem
   { ManifestItem -> MFItemId
mfiId :: MFItemId  -- ^ id attribute
   , ManifestItem -> MFItemId
mfiHref :: MFItemHref  -- ^ href attribute
   , ManifestItem -> MFItemId
mfiMediaType :: MFItemMediaType  -- ^ media-type attribute
   }
   deriving (ManifestItem -> ManifestItem -> Bool
(ManifestItem -> ManifestItem -> Bool)
-> (ManifestItem -> ManifestItem -> Bool) -> Eq ManifestItem
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ManifestItem -> ManifestItem -> Bool
== :: ManifestItem -> ManifestItem -> Bool
$c/= :: ManifestItem -> ManifestItem -> Bool
/= :: ManifestItem -> ManifestItem -> Bool
Eq, Int -> ManifestItem -> ShowS
[ManifestItem] -> ShowS
ManifestItem -> MFItemId
(Int -> ManifestItem -> ShowS)
-> (ManifestItem -> MFItemId)
-> ([ManifestItem] -> ShowS)
-> Show ManifestItem
forall a.
(Int -> a -> ShowS) -> (a -> MFItemId) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ManifestItem -> ShowS
showsPrec :: Int -> ManifestItem -> ShowS
$cshow :: ManifestItem -> MFItemId
show :: ManifestItem -> MFItemId
$cshowList :: [ManifestItem] -> ShowS
showList :: [ManifestItem] -> ShowS
Show)


newtype Manifest = Manifest [ManifestItem]
   deriving (Manifest -> Manifest -> Bool
(Manifest -> Manifest -> Bool)
-> (Manifest -> Manifest -> Bool) -> Eq Manifest
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Manifest -> Manifest -> Bool
== :: Manifest -> Manifest -> Bool
$c/= :: Manifest -> Manifest -> Bool
/= :: Manifest -> Manifest -> Bool
Eq, Int -> Manifest -> ShowS
[Manifest] -> ShowS
Manifest -> MFItemId
(Int -> Manifest -> ShowS)
-> (Manifest -> MFItemId) -> ([Manifest] -> ShowS) -> Show Manifest
forall a.
(Int -> a -> ShowS) -> (a -> MFItemId) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Manifest -> ShowS
showsPrec :: Int -> Manifest -> ShowS
$cshow :: Manifest -> MFItemId
show :: Manifest -> MFItemId
$cshowList :: [Manifest] -> ShowS
showList :: [Manifest] -> ShowS
Show)