diff options
author | Guillermo Ramos | 2020-02-13 11:44:18 +0100 |
---|---|---|
committer | Guillermo Ramos | 2020-02-13 11:44:18 +0100 |
commit | 1392df6e6d89dc1922a80722941060a1431f685b (patch) | |
tree | 5c153207de809a9b25e0d00282a6573f8a429e63 /lib/waev_web | |
parent | 31f6eac1a6d81e217095e8e6aa4935bfd43c98b2 (diff) | |
download | waev-1392df6e6d89dc1922a80722941060a1431f685b.tar.gz |
Fix logic of process_messages
Diffstat (limited to 'lib/waev_web')
-rw-r--r-- | lib/waev_web/views/exports_view.ex | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/lib/waev_web/views/exports_view.ex b/lib/waev_web/views/exports_view.ex index bbdc2c7..62eefc1 100644 --- a/lib/waev_web/views/exports_view.ex +++ b/lib/waev_web/views/exports_view.ex @@ -1,9 +1,7 @@ defmodule WaevWeb.ExportsView do use WaevWeb, :view - defp consolidate_block({side, messages}), do: {side, Enum.reverse(messages)} - - defp consolidate_day({datestr, blocks}) do + defp pp_date(datestr) do # TODO use timex to pretty-print dates (translations??) [d, m, y] = String.split(datestr, "/") |> Enum.map(&String.to_integer/1) y = 2000 + y @@ -27,8 +25,7 @@ defmodule WaevWeb.ExportsView do m - 1 ) - date = "#{d} de #{m} de #{y}" - {date, Enum.reverse(blocks)} + "#{d} de #{m} de #{y}" end # Organize messages to make them easier to display @@ -37,7 +34,7 @@ defmodule WaevWeb.ExportsView do def process_messages(messages) do messages |> Enum.reduce([], fn message, days -> - [datestr, timestr] = String.split(message.date, " ") + [datestr, _timestr] = String.split(message.date, " ") side = message.side case days do @@ -49,21 +46,31 @@ defmodule WaevWeb.ExportsView do # Old block must be reversed to keep messages in the correct order [{^datestr, [{old_side, old_block} | old_blocks]} | old_days] -> [ - {datestr, [{side, [message]}, consolidate_block({old_side, old_block}) | old_blocks]} + {datestr, [{side, [message]}, {old_side, old_block} | old_blocks]} | old_days ] # Insert message on new date # Old blocks must be reversed to keep days in the correct order [{old_datestr, old_blocks} | old_days] -> - [{datestr, [{side, [message]}]}, consolidate_day({old_datestr, old_blocks}) | old_days] + [{datestr, [{side, [message]}]}, {old_datestr, old_blocks} | old_days] # Ez. [] -> [{datestr, [{side, [message]}]}] end end) - |> Enum.reverse() + # Reverse messages, blocks and days, as they were appended in the list head + # Enum.reduce is used to avoid double iteration with map + reverse + |> Enum.reduce([], fn {date, blocks}, days -> + blocks = + Enum.reduce(blocks, [], fn {side, messages}, blocks -> + [{side, Enum.reverse(messages)} | blocks] + end) + + # Reverse days + [{pp_date(date), blocks} | days] + end) end def party_peek(assigns, party) do |