Transformation: Format the Table

All that’s left from our design is to create the formatted table. The following would be a nice interface:

 def​ process({user, project, count}) ​do
  Issues.GithubIssues.fetch(user, project)
  |> decode_response
  |> sort_into_ascending_order
  |> Enum.take(count)
» |> print_table_for_columns([​"​​number"​, ​"​​created_at"​, ​"​​title"​])
 end

We pass the formatter the list of columns to include in the table, and it writes the table to standard output.

The formatter doesn’t add any new project- or design-related techniques, so we’ll just list it.

 defmodule​ Issues.TableFormatter ​do
 
 import​ Enum, ​only:​ [ ​each:​ 2, ​map:​ 2, ​map_join:​ 3, ​max:​ 1 ...

Get Programming Elixir 1.3 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.