View Source WorkflowMetal.Utils.ETS (workflow_metal v0.2.1)

Some ETS helpers.

Link to this section Summary

Functions

Make an :and condition from conditions.

Make an :or condition from conditions.

Link to this section Types

Specs

condition() :: tuple()

Link to this section Functions

Specs

make_and([condition()]) :: condition()

Make an :and condition from conditions.

example

Example:

iex> WorkflowMetal.Utils.ETS.make_and([])
nil

iex> WorkflowMetal.Utils.ETS.make_and([{:"=:=", :"$1", 1}])
{:"=:=", :"$1", 1}

iex> WorkflowMetal.Utils.ETS.make_and([{:"=:=", :"$1", 1}, {:"=:=", :"$1", 2}])
{:andalso, {:"=:=", :"$1", 1}, {:"=:=", :"$1", 2}}
Link to this function

make_condition(list, variable, arg3)

View Source

Specs

make_condition(any(), atom(), atom()) :: condition()

Make the condition.

example

Example:

in

:in

iex> WorkflowMetal.Utils.ETS.make_condition(nil, :"$1", :in)
nil

iex> WorkflowMetal.Utils.ETS.make_condition([], :"$1", :in)
nil

iex> WorkflowMetal.Utils.ETS.make_condition([1], :"$1", :in)
{:"=:=", :"$1", 1}

iex> WorkflowMetal.Utils.ETS.make_condition([1, 2], :"$1", :in)
{:orelse, {:"=:=", :"$1", 1}, {:"=:=", :"$1", 2}}

iex> WorkflowMetal.Utils.ETS.make_condition([1, 2, 3], :"$1", :in)
{:orelse, {:orelse, {:"=:=", :"$1", 1}, {:"=:=", :"$1", 2}}, {:"=:=", :"$1", 3}}

:"=:="

iex> WorkflowMetal.Utils.ETS.make_condition(1, :"$1", :"=:=")
{:"=:=", :"$1", 1}

Specs

make_or([condition()]) :: condition()

Make an :or condition from conditions.

example

Example:

iex> WorkflowMetal.Utils.ETS.make_or([])
nil

iex> WorkflowMetal.Utils.ETS.make_or([{:"=:=", :"$1", 1}])
{:"=:=", :"$1", 1}

iex> WorkflowMetal.Utils.ETS.make_or([{:"=:=", :"$1", 1}, {:"=:=", :"$1", 2}])
{:orelse, {:"=:=", :"$1", 1}, {:"=:=", :"$1", 2}}