Skip to content

aram356/defconst

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Defconst

This package provides defconst macro for defining a single constant and defenum macro for defining a list of enumerated constant values. The defined constants and enumerated constants are referencable in any expression as well as in guards statements.

Installation

Defconst can be installed by adding defconst to your list of dependencies in mix.exs:

def deps do
  [
    {:defconst, "~> 0.2.2"}
  ]
end

Usage

defconst

Define ConstType1 module with constants

defmodule ConstType1 do
  use Defconst

  defconst :one, 1
  defconst :two, 2
end

Use ConstType1 module

defmodule ConstUse1 do
  require ConstType1

  def const_value(x) do
    case x do
      ConstType1.one -> "one"
      ConstType1.two -> "two"
    end
  end

  def const_guard(x) when x == ConstType1.two do
    "two"
  end
end

defenum

Define EnumType1 module with default values

defmodule EnumType1 do
  use Defconst

  defenum [
    :zero,
    :one,
    :two
  ]
end

Use EnumType1 module

defmodule EnumUse1 do
  require EnumType1

  def enum_value(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

Define EnumType2 with specific values

defmodule EnumType2 do
  use Defconst

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

Define EnumType3 using EnumGenerator3

defmodule EnumGenerator3 do
  @behaviour Defconst.Enum.Generator

  def next_value(_constant_name, previous_value) do
    previous_value <> previous_value
  end
end
defmodule TestEnumType3 do
  use Defconst

  defenum [
            {:one, "one"},
            {:nine, "nine"},
            :ten
          ],
          EnumGenerator3
end

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages