{- | 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
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SpineItemref -> SpineItemref -> Bool
$c/= :: SpineItemref -> SpineItemref -> Bool
== :: SpineItemref -> SpineItemref -> Bool
$c== :: SpineItemref -> SpineItemref -> Bool
Eq, Int -> SpineItemref -> ShowS
[SpineItemref] -> ShowS
SpineItemref -> MFItemId
forall a.
(Int -> a -> ShowS) -> (a -> MFItemId) -> ([a] -> ShowS) -> Show a
showList :: [SpineItemref] -> ShowS
$cshowList :: [SpineItemref] -> ShowS
show :: SpineItemref -> MFItemId
$cshow :: SpineItemref -> MFItemId
showsPrec :: Int -> SpineItemref -> ShowS
$cshowsPrec :: Int -> 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
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Spine -> Spine -> Bool
$c/= :: Spine -> Spine -> Bool
== :: Spine -> Spine -> Bool
$c== :: Spine -> Spine -> Bool
Eq, Int -> Spine -> ShowS
[Spine] -> ShowS
Spine -> MFItemId
forall a.
(Int -> a -> ShowS) -> (a -> MFItemId) -> ([a] -> ShowS) -> Show a
showList :: [Spine] -> ShowS
$cshowList :: [Spine] -> ShowS
show :: Spine -> MFItemId
$cshow :: Spine -> MFItemId
showsPrec :: Int -> Spine -> ShowS
$cshowsPrec :: Int -> Spine -> ShowS
Show)