Skip to content

Instantly share code, notes, and snippets.

@bryansray
Created September 24, 2016 19:03
Show Gist options
  • Save bryansray/c8405a31c28a598590ba425c52b51d19 to your computer and use it in GitHub Desktop.
Save bryansray/c8405a31c28a598590ba425c52b51d19 to your computer and use it in GitHub Desktop.
Mapping map keys from one to the other ...
defmodule Mapper do
def map(from, mapping) do
find_keys = Map.keys(mapping)
result = Map.new(find_keys, fn(key) ->
new_key = Map.get(mapping, key) || key
{ new_key, Map.get(from, key) }
end)
Map.drop(from, find_keys) |> Map.merge(result)
end
end
start = %{ achievementPoints: 1000, lastModified: 1231231, testing: 123 }
mapping = %{ achievementPoints: :achievement_points, lastModified: :last_modified }
# result = %{achievement_points: 1000, last_modified: 1231231, testing: 123}
result = Mapper.map(start, mapping)
IO.puts("start = #{inspect(start)}")
IO.puts("result = #{inspect(result)}")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment