defmodule IO.ANSI.Table.Spec.ColumnWidths do @moduledoc """ Derives the column widths of a table. """ alias IO.ANSI.Table.Spec.Rows alias IO.ANSI.Table.{Column, Spec} @spec derive(Spec.t()) :: Spec.t() def derive(%Spec{headings: headings, rows: rows, max_width: max} = spec) do widths = [headings | rows] |> Rows.transpose() |> Column.widths(max) put_in(spec.column_widths, widths) end end