{-# LANGUAGE FlexibleContexts #-}

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

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


formatSubline :: String -> Maybe String -> String
formatSubline :: String -> Maybe String -> String
formatSubline String
_   Maybe String
Nothing = String
""
formatSubline String
key (Just String
value) = String -> String -> String -> String
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 = Seq a -> m ()
forall w (m :: * -> *). MonadWriter w m => w -> m ()
tell (Seq a -> m ()) -> ([a] -> Seq a) -> [a] -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> Seq a
forall a. [a] -> Seq a
fromList