Sha256: 3cfb4e649df3025f1e1452be46aad8838a09813a716a1aac6735dcb49d8b0520
Contents?: true
Size: 999 Bytes
Versions: 1
Compression:
Stored size: 999 Bytes
Contents
module CanTango::Ability::Executor class Modal < Base def initialize candidate, modes, options = {} super candidate, options modes = [modes].flatten if modes raise ArgumentError, "Modes must be a list of modes to execute!" if modes.blank? @modes = modes execute end def calculate_rules @rules = modes.inject([]) do |result, mode| result = result + modal_rules(mode) result end normalize_rules! end def execute return if executed? clear_rules! calculate_rules rescue Exception => e debug e.message ensure @executed = true rules end def finder @finder ||= CanTango::Ability::Mode::Finder.new self end protected def modal_rules mode mode?(mode) ? executor(mode).execute : [] end def executor mode @executor ||= finder.executor_for(mode) end def mode? mode modes.include?(mode) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cantango-core-0.1.6 | lib/cantango/ability/executor/modal.rb |