README.md

# UnionType

Define union types in Elixir!

## Example

```elixir
defmodule UserEnum do
  use UnionType

  union_type do
    customer(name)
    admin(name)
    contractor(name, company)
    guest()
  end
end

defmodule App do
  require UserEnum

  def greet(UserEnum.guest()) do
    "howdy guest!"
  end

  def greet(UserEnum.customer(name)) do
    "howdy #{name}!"
  end
  
  def greet(UserEnum.admin(name)) do
    "howdy #{name}! You are an admin!"
  end

  def greet(UserEnum.contractor(name, company)) do
    "howdy #{name}! You are a contractor for #{company}"
  end
end

iex(18)> require UserEnum
UserEnum

iex(20)> App.greet(UserEnum.guest())
"howdy guest!"

iex(21)> App.greet(UserEnum.customer("John"))
"howdy John!"

iex(22)> App.greet(UserEnum.admin("Linda"))
"howdy Linda! You are an admin!"

iex(23)> App.greet(UserEnum.contractor("Erin", "MainTech"))
"howdy Erin! You are a contractor for MainTech"
```