Defconst v0.1.0 Defconst View Source

Define constants and enum with use in guards

Define a contant

defmodule ConstType do

use Defconst

defconst :one, 1
defconst :two, 2

end

Define an enum with default values

defmodule EnumType1 do
use Defconst

defenum [
  :zero,
  :one,
  :two
]

end

Define an enum with explicit values

defmodule EnumType2 do

use Defconst

defenum [
  {:one, 1},
  {:nine, 9},
  :ten
]

end

Link to this section Summary

Link to this section Functions

Link to this macro defconst(name, value) View Source (macro)

Define constant

Examples:

iex> defmodule ConstType do …> use Defconst …> …> defconst :one, 1 …> defconst :two, 2 …> end iex> defmodule ConstUse do …> require ConstType …> …> def constvalue(x) do …> case x do …> ConstType.one -> “one” …> ConstType.two -> “two” …> -> “unknown” …> end …> end …> …> def const_guard(x) when x == ConstType.two do …> “two” …> end …> end iex> ConstUse.const_value(1) “one” iex> ConstUse.const_guard(2) “two”

Link to this macro defenum(constant, quoted_generator \\ quote() do Defconst.Enum.DefaultGenerator end) View Source (macro)

Define enum

Examples:

iex> defmodule EnumType1 do …> use Defconst …> …> defenum [ …> :zero, …> :one, …> :two …> ] …> end iex> defmodule EnumUse1 do …> require EnumType1 …> …> def enumvalue(x) do …> case x do …> EnumType1.zero -> “zero” …> EnumType1.one -> “one” …> EnumType1.two -> “two” …> -> “unknown” …> end …> end …> …> def enum_guard(x) when x == EnumType1.two do …> “two” …> end …> end iex> EnumUse1.enum_value(1) “one” iex> EnumUse1.enum_guard(2) “two”

iex> defmodule EnumType2 do …> use Defconst …> …> defenum [ …> {:zero, “zero”}, …> {:one, 1}, …> {:nine, 9}, …> :ten …> ] …> end iex> defmodule EnumUse2 do …> require EnumType2 …> …> def enumvalue(x) do …> case x do …> EnumType2.zero -> “zero” …> EnumType2.one -> “one” …> EnumType2.nine -> “nine” …> EnumType2.ten -> “ten” …> -> “unknown” …> end …> end …> …> def enum_guard(x) when x == EnumType2.ten do …> “ten” …> end …> end iex> EnumUse2.enum_value(1) “one” iex> EnumUse2.enum_guard(10) “ten”