class Onuro::Event

Attributes

event_strategy[RW]
name[R]
ruleset_stage[R]

Public Class Methods

new(name, ruleset_stage: [], event_strategy: DefaultEventStrategy.new) click to toggle source
# File lib/onuro/event.rb, line 17
def initialize(name, ruleset_stage: [], event_strategy: DefaultEventStrategy.new)
  self.name = name
  self.event_strategy = event_strategy
  @ruleset_stage = ruleset_stage
end

Public Instance Methods

add_rule_stage(rule_stage) click to toggle source
# File lib/onuro/event.rb, line 27
def add_rule_stage(rule_stage)
  ruleset_stage << rule_stage
end
add_ruleset_stage(ruleset_stage) click to toggle source
# File lib/onuro/event.rb, line 23
def add_ruleset_stage(ruleset_stage)
  @ruleset_stage += ruleset_stage
end
execute(context = {}) click to toggle source
# File lib/onuro/event.rb, line 31
def execute(context = {})
  result = execution_flow(context)
  execution_result(SUCCESSFUL, result[:processed], result[:failed])
end
name=(name) click to toggle source
# File lib/onuro/event.rb, line 11
def name=(name)
  raise InvalidEventNameException if name.empty?

  @name = name.downcase.to_sym
end

Private Instance Methods

execution_flow(context = {}) click to toggle source
# File lib/onuro/event.rb, line 47
def execution_flow(context = {})
  result = Hash.new(0)
  ruleset_stage.each do |rule_stage|
    proc_exec = event_strategy.before_rule_exec(rule_stage, context)
    next unless proc_exec

    result_status = rule_stage.rule.new.execute(context)
    event_strategy.after_rule_exec(rule_stage, context, result)

    result[:processed] += 1 if result_status == SUCCESSFUL
    result[:failed] += 1 if result_status == FAILURE
  end
  result
end
execution_result(status, processed, failed) click to toggle source
# File lib/onuro/event.rb, line 38
def execution_result(status, processed, failed)
  result = Hash.new(0)
  result[:status] = status
  result[:event_name] = name
  result[:processed_rules] = processed
  result[:failed_rules] = failed
  result
end