Transformation: Format the Table

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

 
def​ process({user, project, count}) ​do
 
Issues.GithubIssues.fetch(user, project)
 
|> decode_response
 
|> convert_to_list_of_hashdicts
 
|> 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.

project/4/issues/lib/issues/table_formatter.ex
 
defmodule​ Issues.TableFormatter ​do
 
 
import​ Enum, only: [ each: 2, map: 2, map_join: 3, ...

Get Programming Elixir 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.