Sha256: 2791320903ebc737fd77d30f12f84ed7e4a489c54cdac3cd6bcf1e72c3e8f7ff
Contents?: true
Size: 724 Bytes
Versions: 8
Compression:
Stored size: 724 Bytes
Contents
module Workflow class EventCollection < Hash def [](name) super name.to_sym # Normalize to symbol end def push(name, event) key = name.to_sym self[key] ||= [] self[key] << event end def flat self.values.flatten.uniq do |event| [:name, :transitions_to, :meta, :action].map { |m| event.send(m) } end end def include?(name_or_obj) case name_or_obj when Event flat.include? name_or_obj else !(self[name_or_obj].nil?) end end def first_applicable(name, object_context) (self[name] || []).detect do |event| event.condition_applicable?(object_context) && event end end end end
Version data entries
8 entries across 8 versions & 2 rubygems