1
0
Fork 0
mirror of https://github.com/edgurgel/httparrot synced 2025-04-05 08:12:31 -04:00

Merge pull request #17 from bratsche/fix-group-by-warning-2

Fix group_by_keys/1 for Elixir 1.3
This commit is contained in:
Eduardo Gurgel 2016-06-24 20:22:13 -04:00 committed by GitHub
commit f15dfcc16f
2 changed files with 10 additions and 13 deletions

View file

@ -3,9 +3,9 @@ notifications:
recipients:
- eduardo@gurgel.me
elixir:
- 1.0.2
- 1.3.0
otp_release:
- 17.0
- 17.1
- 18.0
- 18.1
sudo: false
script: mix test --no-start

View file

@ -20,15 +20,12 @@ defmodule HTTParrot.GeneralRequestInfo do
@spec group_by_keys(list) :: map
def group_by_keys([]), do: %{}
def group_by_keys(args) do
groups = Enum.group_by(args, %{}, fn {k, _} -> k end)
for {k1, v1} <- groups, into: %{} do
values = Enum.map(v1, fn {_, v2} -> v2 end)
|> Enum.reverse
|> flatten_if_list_of_one
{k1, values}
end
args
|> Enum.map(fn {k, v} -> %{k => v} end)
|> Enum.reduce(fn m, acc ->
Map.merge(m, acc, fn _k, v1, v2 ->
[v2, v1]
end)
end)
end
defp flatten_if_list_of_one([h]), do: h
defp flatten_if_list_of_one(list), do: list
end