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

   The spine represents a default ordering of items in the manifest.
-}
module Codec.Epub.Data.Spine
   ( Spine (..)
   , SpineItemref (..)
   )
   where

import Codec.Epub.Data.Common


-- | package\/spine\/itemref tag
data SpineItemref = SpineItemref
   { SpineItemref -> MFItemId
siIdRef  :: MFItemId  -- ^ idref attribute. Must reference an item in the manifest
   , SpineItemref -> Maybe Bool
siLinear :: Maybe Bool  -- ^ linear attribute
   }
   deriving (SpineItemref -> SpineItemref -> Bool
(SpineItemref -> SpineItemref -> Bool)
-> (SpineItemref -> SpineItemref -> Bool) -> Eq SpineItemref
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SpineItemref -> SpineItemref -> Bool
== :: SpineItemref -> SpineItemref -> Bool
$c/= :: SpineItemref -> SpineItemref -> Bool
/= :: SpineItemref -> SpineItemref -> Bool
Eq, Int -> SpineItemref -> ShowS
[SpineItemref] -> ShowS
SpineItemref -> MFItemId
(Int -> SpineItemref -> ShowS)
-> (SpineItemref -> MFItemId)
-> ([SpineItemref] -> ShowS)
-> Show SpineItemref
forall a.
(Int -> a -> ShowS) -> (a -> MFItemId) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SpineItemref -> ShowS
showsPrec :: Int -> SpineItemref -> ShowS
$cshow :: SpineItemref -> MFItemId
show :: SpineItemref -> MFItemId
$cshowList :: [SpineItemref] -> ShowS
showList :: [SpineItemref] -> ShowS
Show)


-- | package\/spine tag
data Spine = Spine
   { Spine -> MFItemId
spineToc    :: MFItemId  -- ^ toc attribute. Must reference the NCX in the manifest
   , Spine -> [SpineItemref]
spineItemrefs :: [SpineItemref] -- ^ at least one required
   }
   deriving (Spine -> Spine -> Bool
(Spine -> Spine -> Bool) -> (Spine -> Spine -> Bool) -> Eq Spine
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Spine -> Spine -> Bool
== :: Spine -> Spine -> Bool
$c/= :: Spine -> Spine -> Bool
/= :: Spine -> Spine -> Bool
Eq, Int -> Spine -> ShowS
[Spine] -> ShowS
Spine -> MFItemId
(Int -> Spine -> ShowS)
-> (Spine -> MFItemId) -> ([Spine] -> ShowS) -> Show Spine
forall a.
(Int -> a -> ShowS) -> (a -> MFItemId) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Spine -> ShowS
showsPrec :: Int -> Spine -> ShowS
$cshow :: Spine -> MFItemId
show :: Spine -> MFItemId
$cshowList :: [Spine] -> ShowS
showList :: [Spine] -> ShowS
Show)