{-# LANGUAGE FlexibleContexts #-}

-- | Utility functions shared by several formatting modules
module Codec.Epub.Format.Util
   ( formatSubline
   , tellSeq
   , Seq
   )
   where

import Control.Monad.Writer.Lazy
import Data.Sequence ( Seq, fromList )
import Text.Printf


formatSubline :: String -> Maybe String -> String
formatSubline :: String -> Maybe String -> String
formatSubline String
_   Maybe String
Nothing = String
""
formatSubline String
key (Just String
value) = forall r. PrintfType r => String -> r
printf String
"   %s: %s\n" String
key String
value


tellSeq :: MonadWriter (Seq a) m => [a] -> m ()
tellSeq :: forall a (m :: * -> *). MonadWriter (Seq a) m => [a] -> m ()
tellSeq = forall w (m :: * -> *). MonadWriter w m => w -> m ()
tell forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. [a] -> Seq a
fromList