Packages
An Elixir library that converts keys in maps between `snake_case` and `camel_case`. Useful as a plug in Phoenix for converting incoming params from JavaScript's `camelCase` to Elixir's `snake_case`
Current section
Files
Jump to
Current section
Files
lib/proper_case.ex
defmodule ProperCase do
@moduledoc """
A helpful plug that converts your incoming parameters to
Elixir's `snake_case`
Plug it into your `router.ex` connection pipeline like so:
pipeline :api do
plug :accepts, ["json"]
plug ProperCase.snake_case_params
end
Enjoy :)
"""
@doc """
The initial `snake_case_params` function that is called
when by an incoming request (Phoenix)
"""
def snake_case_params(%{params: params} = conn, _opts) do
%{conn | params: snake_case_params(params)}
end
def snake_case_params(%{} = params) do
for {key, val} <- params,
into: %{},
do: {snake_case(key), snake_case_params(val)}
end
def snake_case_params(other_types), do: other_types
defp snake_case(val) when is_atom(val) do
val
|> Atom.to_string
|> Mix.Utils.underscore
end
defp snake_case(val) do
val |> Mix.Utils.underscore
end
end