Ruler.Engine (Ruler v0.1.0) View Source

Link to this section Summary

Link to this section Types

Specs

action() :: Ruler.Action.t()

Specs

activation() :: Ruler.Activation.t()

Specs

activation_event() :: Ruler.State.activation_event()

Specs

fact() :: Ruler.Fact.t()

Specs

instruction() ::
  {:add_fact, fact()} | {:remove_fact, fact()} | {:add_rule, rule()}

Specs

log_event() ::
  {:instruction, instruction()}
  | {:add_fact_source, fact(), Ruler.State.FactInfo.source()}
  | {:remove_fact_source, fact(), Ruler.State.FactInfo.source()}
  | {:fact_was_added, fact()}
  | {:fact_was_removed, fact()}
  | {:activation_event, activation_event()}

Specs

rule() :: Ruler.Rule.t()

Specs

state() :: Ruler.State.t()

Specs

t() :: %Ruler.Engine{
  instruction_queue: :queue.queue(instruction()),
  log: [log_event()],
  state: state()
}

Link to this section Functions

Link to this function

add_facts(engine, facts)

View Source

Specs

add_facts(t(), [fact()]) :: t()
Link to this function

add_instruction(engine, instruction)

View Source

Specs

add_instruction(t(), instruction()) :: t()
Link to this function

add_instructions(engine, instructions)

View Source

Specs

add_instructions(t(), [instruction()]) :: t()
Link to this function

add_log_event(engine, log_event)

View Source

Specs

add_log_event(t(), log_event()) :: t()
Link to this function

add_rules(engine, rules)

View Source

Specs

add_rules(t(), [rule()]) :: t()
Link to this function

choose_from_conflict_set(engine)

View Source

Specs

choose_from_conflict_set(t()) :: activation_event() | nil
Link to this function

commit_activation_event(engine, arg)

View Source

Specs

commit_activation_event(t(), activation_event()) :: t()

Specs

done?(t()) :: boolean()

Specs

new() :: t()
Link to this function

process_activation_event(engine, event)

View Source

Specs

process_activation_event(t(), activation_event()) :: t()
Link to this function

process_instruction(engine, arg)

View Source

Specs

process_instruction(t(), instruction()) :: t()
Link to this function

process_next_instruction_from_queue(engine)

View Source

Specs

process_next_instruction_from_queue(t()) :: {:ok, t()} | :done

Specs

Link to this function

remove_facts(engine, facts)

View Source

Specs

remove_facts(t(), [fact()]) :: t()

Specs

run_until_done(t()) :: t()

Specs

step(t()) :: {:ok, t()} | :done