Current section
Files
Jump to
Current section
Files
lib/scribe.ex
defmodule Scribe do
def print(_results, opts \\ nil)
def print([], _opts), do: :ok
def print(results, opts) do
structs = Enum.map(results, fn(x) -> mapper(x) end)
keys = fetch_keys(structs, opts)
[keys] ++ Enum.map(structs, fn(row) ->
Enum.map(keys, fn(key) ->
row[key]
end)
end)
|> Scribe.Table.format(Enum.count(results), Enum.count(keys))
|> IO.puts
end
defp mapper(%{__struct__: _struct} = x), do: Map.from_struct(x)
defp mapper(%{} = map), do: map
defp fetch_keys([first|_rest], opts) do
case opts do
nil -> fetch_keys(first)
opts -> opts
end
end
defp fetch_keys(map) do
map
|> Map.delete(:__meta__)
|> Map.delete(:__struct__)
|> Map.keys()
end
end