{-# LANGUAGE FlexibleContexts #-}
module Codec.Epub.Format.Package
( formatPackage
)
where
import Control.Monad.Writer.Lazy
import Data.Foldable ( toList )
import Codec.Epub.Data.Package
import Codec.Epub.Format.Util
tellPackage :: MonadWriter (Seq Char) m => (String, String) -> m ()
tellPackage :: forall (m :: * -> *).
MonadWriter (Seq Char) m =>
(String, String) -> m ()
tellPackage (String
version, String
uniqueId) = do
forall a (m :: * -> *). MonadWriter (Seq a) m => [a] -> m ()
tellSeq String
"package\n"
forall a (m :: * -> *). MonadWriter (Seq a) m => [a] -> m ()
tellSeq forall a b. (a -> b) -> a -> b
$ String -> Maybe String -> String
formatSubline String
"version" (forall a. a -> Maybe a
Just String
version)
forall a (m :: * -> *). MonadWriter (Seq a) m => [a] -> m ()
tellSeq forall a b. (a -> b) -> a -> b
$ String -> Maybe String -> String
formatSubline String
"unique-identifier" (forall a. a -> Maybe a
Just String
uniqueId)
formatPackage :: Package -> String
formatPackage :: Package -> String
formatPackage (Package String
v String
u) = forall (t :: * -> *) a. Foldable t => t a -> [a]
toList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall w a. Writer w a -> w
execWriter
forall a b. (a -> b) -> a -> b
$ forall (m :: * -> *).
MonadWriter (Seq Char) m =>
(String, String) -> m ()
tellPackage (String
v, String
u)