lib/tablex/formatter/align.ex
defmodule Tablex.Formatter.Align do
def align_columns(lines) do
lines
|> Stream.zip()
|> Stream.map(fn columns ->
columns = Tuple.to_list(columns)
max_len =
columns
|> Stream.map(&String.length/1)
|> Enum.max()
columns
|> Enum.map(&String.pad_trailing(&1, max_len))
end)
|> Stream.zip()
|> Enum.map(fn line ->
line
|> Tuple.to_list()
|> Enum.join(" ")
|> String.trim_trailing()
end)
end
end