rbr-0.8.3: RBR/TextFormat.lhs
\begin{code}
-- todo: support uneven column lengths
module RBR.TextFormat where
import Data.List
columns :: String -> [[String]] -> [String]
columns delim = map (concat . intersperse delim) . transpose . extend
extend :: [[String]] -> [[String]]
extend cs = zipWith pad (sizes cs) cs
-- mkrow rsizes = concat . intersperse "^" . zipWith pad rsizes
pad :: Int -> [String] -> [String]
pad n = map (pad1 n)
where pad1 o text = text ++ take (o - length text) (repeat ' ')
sizes :: [[String]] -> [Int]
sizes = map (maximum . map length)
\end{code}