module Erebos.TextFormat ( FormattedText, plainText, renderPlainText, formattedTextLength, ) where import Data.Text (Text) import Data.Text qualified as T import Erebos.TextFormat.Types plainText :: Text -> FormattedText plainText = PlainText renderPlainText :: FormattedText -> Text renderPlainText = \case PlainText text -> text ConcatenatedText ftexts -> mconcat $ map renderPlainText ftexts FormattedText _ ftext -> renderPlainText ftext formattedTextLength :: FormattedText -> Int formattedTextLength = \case PlainText text -> T.length text ConcatenatedText ftexts -> sum $ map formattedTextLength ftexts FormattedText _ ftext -> formattedTextLength ftext