module Mit.Stanza
( Stanza,
renderStanzas,
putStanzas,
)
where
import Data.List qualified as List
import Data.Text.IO qualified as Text
import Data.Text.Lazy.Builder qualified as Text (Builder)
import Mit.Builder qualified as Builder
import Mit.Prelude
type Stanza =
Maybe Text.Builder
renderStanzas :: [Stanza] -> Stanza
renderStanzas stanzas =
case catMaybes stanzas of
[] -> Nothing
stanzas' -> Just (mconcat (List.intersperse (Builder.newline <> Builder.newline) stanzas'))
putStanzas :: [Stanza] -> IO ()
putStanzas stanzas =
whenJust (renderStanzas stanzas) \s ->
Text.putStr (Builder.build (Builder.newline <> s <> Builder.newline <> Builder.newline))