Skip to content

Instantly share code, notes, and snippets.

@tiagopog
Created November 13, 2016 05:03
Show Gist options
  • Save tiagopog/ef30d32be38c3daa632e3f006d6c1f51 to your computer and use it in GitHub Desktop.
Save tiagopog/ef30d32be38c3daa632e3f006d6c1f51 to your computer and use it in GitHub Desktop.
Elixir - Sample of struct + API
defmodule User do
defstruct name: nil, gender: nil, roles: [:normal]
defmodule NameError do
defexception message: "Name is too short"
end
def add_name(%User{} = user, name) when is_binary(name) do
try do
validate!(name: name)
%{user | name: name}
catch
kind, %User.NameError{message: message} ->
{kind, message}
end
end
def validate!(name: name) do
unless String.length(name) > 1, do: raise NameError
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment