Mapáil Build StatusHex VersionHex docs

Convert maps with string keys to an elixir struct.

Features

Examples

Example (1)

user = %{
        "FirstName" => "John",
        "Username" => "john",
        "password" => "pass",
        "age" => 30
        }

defmodule User, do: defstruct [:first_name, :username, :password]

Mapail.map_to_struct(user, User)

{:ok, %User{
  first_name: "John",
  username: "john",
  password: "pass"
  }
}

Example (2)

user = %{
        "FirstName" => "John",
        "Username" => "john",
        "password" => "pass",
        "age" => 30
        }

defmodule User, do: defstruct [:first_name, :username, :password]

Mapail.map_to_struct(user, User, transformations: [])

{:ok, %User{
  first_name: nil,
  password: "pass",
  username: nil
  }
}

Example (3)

user = %{
        "FirstName" => "John",
        "Username" => "john",
        "password" => "pass",
        "age" => 30
        }

defmodule User, do: defstruct [:first_name, :username, :password]

Mapail.map_to_struct(user, User, transformations: [], rest: :true)

{:ok, %User{
  first_name: nil,
  password: "pass",
  username: nil
  },
  %{
  "FirstName" => "John",
  "Username" => "john",
  "age" => 30
  }
}

Example (4)

user = %{
        "FirstName" => "John",
        "Username" => "john",
        "password" => "pass",
        "age" => 30
        }

defmodule User, do: defstruct [:first_name, :username, :password]

Mapail.map_to_struct(user, User, rest: :merge)

{:ok, %{
    __struct__: User,
    first_name: "John",
    password: "pass",
    username: "john",
    mapail: %{
      "FirstName" => "John",
      "Username" => "john",
      "age" => 30
    }
  }
}

Example (5)

user = %{
        "FirstName" => "John",
        "Username" => "john",
        "password" => "pass",
        "age" => 30
        }

defmodule User, do: defstruct [:first_name, :username, :password]

Mapail.map_to_struct(user, User, transformations: [], rest: :merge)

{:ok, %{
    __struct__: User,
    first_name: nil,
    password: "pass",
    username: nil,
    mapail: %{
      "FirstName" => "John",
      "Username" => "john",
      "age" => 30
    },
  }
}

Documentation

Installation

The package can be installed as follows:

  1. Add mapail to your list of dependencies in mix.exs:
def deps do
  [{:mapail, "~> 0.2"}]
end
  1. Ensure mapail is started before your application:
def application do
  [applications: [:mapail]]
end

The package can be found in hex.

Credit

This library has a dependency on the following libraries:

Licence

MIT Licence