Casefy
Usage
camel_case
Casefy.camel_case(%{camel_case: 1, nested_case: %{ another_case: 1 }})
# returns %{ "camelCase" => 1, "nestedCase" => %{ "anotherCase" => 1 } }snake_case
Casefy.snake_case(%{snakeCase: 1, nestedCase: %{anotherCase: 1}})
# returns %{ "snake_case" => 1, "nested_case" => %{ "another_case" => 1 } }Plug
On your Router, use:
pipeline :api do
plug :accepts, ["json"]
...
plug Casefy.Plug, fields: [:query_params, :params, :body_params] # parses all camelCase input to snake_case inside your controller
endView
On your View, use:
use Casefy.View, parse: :camel_case
def render("index.json", %{snake_case: snake_case}) do
renderer(%{data: snake_case}) # by default, applies deep camel_case parsing
endOr directly on your Controller, use:
use Casefy.View, parse: :camel_case
renderer(render(MyView, "index.json", %{snakeCase: %{anotherNested: %{caseFy: 1}}}), :snake_case)
# returns %{ "snake_case" => %{ "another_nested" => %{ "case_fy: 1 } }}Tests
mix testInstallation
Available on Hex, the package can be installed
by adding casefy to your list of dependencies in mix.exs:
def deps do
[
{:casefy, "~> 0.1.5"}
]
end