Current section
Files
Jump to
Current section
Files
lib/reporters/output_utils.ex
defmodule Doctor.Reporters.OutputUtils do
@moduledoc """
This module provides convenience functions for use when generating
reports
"""
@doc """
Generate a line in a table with the given width and padding. Expects a
list with either a 2 or 3 element tuple.
"""
def generate_table_line(line_data) do
line_data
|> Enum.reduce("", fn
{value, width}, acc ->
"#{acc}#{gen_fixed_width_string(value, width)}"
{value, width, padding}, acc ->
"#{acc}#{gen_fixed_width_string(value, width, padding)}"
end)
end
defp gen_fixed_width_string(value, width, padding \\ 2)
defp gen_fixed_width_string(value, width, padding) when is_integer(value) do
value
|> Integer.to_string()
|> gen_fixed_width_string(width, padding)
end
defp gen_fixed_width_string(value, width, padding) do
sub_string_length = width - (padding + 1)
value
|> String.slice(0..sub_string_length)
|> String.pad_trailing(width)
end
end