defmodule Tablex do @moduledoc """ Tablex implements Decision Table. Its goal is to make domain rules easy to maintain. """ defdelegate decide(table, args), to: Tablex.Decider defdelegate decide(table, args, opts), to: Tablex.Decider @doc """ Create a new table. ## Example Tablex.new(\""" F value || color 1 >90 || red 2 80..90 || orange 3 20..79 || green 4 <20 || blue \""") """ @spec new(String.t(), keyword()) :: Tablex.Table.t() def new(content, opts \\ []) do Tablex.Parser.parse(content, opts) end @doc """ The same as `new/2`. ## Example ~RULES\""" F value || color 1 >90 || red 2 80..90 || orange 3 20..79 || green 4 <20 || blue \""" """ @spec sigil_RULES(String.t(), keyword()) :: Tablex.Table.t() def sigil_RULES(content, opts) do new(content, opts) end end