Popularity
1.2
Stable
Activity
0.0
Stable
6
1
0

Monthly Downloads: 10
Programming language: Elixir
License: MIT License

mason alternatives and similar packages

Based on the "Algorithms and Data structures" category

Do you think we are missing an alternative of mason or a related project?

Add another 'Algorithms and Data structures' Package

README

Mason Build Status

Mason uses superpowers to coerce maps into structs. This is helpful e.g. when you interface a REST API and want to create a struct from the response.

defmodule User do
  defstruct [ :user_id, :created_at ]

  def masonstruct do
    %{
      createdAt: &({ :created_at, elem(DateTime.from_unix(&1), 1) }),
      userId: &({ :user_id, &1 })
    }
  end
end

response = %{ "userId" => 123, createdAt: 1456749030 }
Mason.struct User, response # %User{created_at: #DateTime<2016-02-29 12:30:30Z>, user_id: 123}

Features

  • coerce to Elixir's built-in types from strings
  • dynamically coerce values (e.g. timestamps to DateTimes)
  • map keys (e.g. createdAt to created_at)
  • convert string keys to atoms (e.g. ..., "age" => 29, ... to ..., age: 29, ...)
  • convert lists

Installation

The package can be installed by adding mason to your list of dependencies in mix.exs:

def deps do
  [
    {:mason, "~> 0.1.0"}
  ]
end

The docs can be found at https://hexdocs.pm/mason.

Contributing