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
end

View

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
end

Or directly on your Controller, use:

use Casefy.View, parse: :camel_case
renderer(render(MyView, "index.json", %{snake_case: %{another_nested: %{case_fy: 1}}}))
# returns %{ "snakeCase" => %{ "anotherNested" => %{ "caseFy: 1 } }}

Tests

mix test

Installation

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.4"}
]
end