Class: Tailmix::Definition::Builders::ReactorBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/tailmix/definition/builders/reactor_builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(watched_state) ⇒ ReactorBuilder

Returns a new instance of ReactorBuilder.



8
9
10
11
# File 'lib/tailmix/definition/builders/reactor_builder.rb', line 8

def initialize(watched_state)
  @watched_state = watched_state
  @rules = []
end

Instance Method Details

#build_rulesObject



37
38
39
# File 'lib/tailmix/definition/builders/reactor_builder.rb', line 37

def build_rules
  @rules.map(&:build_rule)
end

#run(action_name, with: nil) ⇒ Object

Unconditional effect (always triggers on change)



29
30
31
32
33
34
35
# File 'lib/tailmix/definition/builders/reactor_builder.rb', line 29

def run(action_name, with: nil)
  # We create an "empty" rule with a condition that is always true.
  rule_builder = RuleBuilder.new(nil)
  rule_builder.instance_variable_set(:@rule, { condition: { type: :always_true } })
  rule_builder.run(action_name, with: with)
  @rules << rule_builder
end

#state(state_key) ⇒ Object

Alternative startup method: r.state(:zip_code)



22
23
24
25
26
# File 'lib/tailmix/definition/builders/reactor_builder.rb', line 22

def state(state_key)
  rule_builder = RuleBuilder.new(state_key)
  @rules << rule_builder
  rule_builder
end

#value(expected_value) ⇒ Object

Start a method for the rule chain: r.value(“commercial”)



14
15
16
17
18
19
# File 'lib/tailmix/definition/builders/reactor_builder.rb', line 14

def value(expected_value)
  rule_builder = RuleBuilder.new(@watched_state)
  rule_builder.value(expected_value)
  @rules << rule_builder
  rule_builder
end