View Source MapGrid (MapGrid v1.1.0)

This module has a singular public function, called convert. This convert function can be used to convert an array of maps, like you would get from an Ecto query, and convert them into a tabular data structure, or a grid.

Summary

Functions

Function to convert from an array of maps to a tabular data structure. Function expects all maps to be equal, like a struct would be, but it is not limited to structs.

Functions

Link to this function

convert(maps, opts \\ [])

View Source
@spec convert(
  [map()],
  keyword()
) :: list()

Function to convert from an array of maps to a tabular data structure. Function expects all maps to be equal, like a struct would be, but it is not limited to structs.

Example

iex > MapGrid.convert([%{name: "john", age: 99}, %{name: "doe", age: 100}])
[[:name", :age], ["john", 99], ["doe", 100]]

Options

Item function

This option allows you to define a function with an arity of one to be executed on each item. The value is an array.

iex > function = fn Map.put(&1, :batch, 3) end
iex > MapGrid.convert([%{name: "john", age: 99}, %{name: "doe", age: 100}], item_function: function)
[[:name, :batch, :age], ["john", 3, 99], ["doe", "some description", 3, 100]]

Keys

This option expects an array of atoms and defines the order of the tabular structure. This is important to be able to ignore certain keys and include keys added via the item_function.

iex > function = fn Map.put(&1, :batch, 3) end
iex > MapGrid.convert([%{name: "john", age: 99}, %{name: "doe", age: 100}], item_function: function)
[[:name, :batch, :age], ["john", 3, 99], ["doe", "some description", 3, 100]]