class BluePrint::Context
Public Class Methods
action!()
click to toggle source
# File lib/blue_print/context.rb, line 61 def self.action! return if @acted casting.each_pair do |klass, roles| roles.each do |role| klass.send(:prepend, role) end end @acted = true end
activate!()
click to toggle source
# File lib/blue_print/context.rb, line 41 def self.activate! BluePrint.env[context_name] = true end
active?()
click to toggle source
# File lib/blue_print/context.rb, line 29 def self.active? BluePrint.env.fetch(context_name) do !!active_ifs.inject(active_ifs.first.try(:active?)) do |memo, active_if| memo && active_if.active? end end end
active_if(*names, &logic)
click to toggle source
# File lib/blue_print/context.rb, line 18 def self.active_if(*names, &logic) active_ifs.concat( names.map { |name| BluePrint::ActiveIf.resolve(name) }.reject(&:nil?) ) active_ifs.push(BluePrint::ActiveIf.new(&logic)) if logic end
active_ifs()
click to toggle source
# File lib/blue_print/context.rb, line 14 def self.active_ifs @active_ifs ||= [] end
cast(actor, as: [])
click to toggle source
# File lib/blue_print/context.rb, line 53 def self.cast(actor, as: []) as = [as] unless as.kind_of?(Array) as.map! { |role| role.is_a?(Module) ? role : role.to_s.safe_constantize } casting[actor] = casting[actor] | as reaction! end
casting()
click to toggle source
# File lib/blue_print/context.rb, line 49 def self.casting @casting ||= Hash.new { |casting, klass| casting[klass] = [] } end
context_name()
click to toggle source
# File lib/blue_print/context.rb, line 25 def self.context_name @context_name ||= name.to_s.underscore.to_sym end
deactivate!()
click to toggle source
# File lib/blue_print/context.rb, line 45 def self.deactivate! BluePrint.env[context_name] = false end
deactive?()
click to toggle source
# File lib/blue_print/context.rb, line 37 def self.deactive? !active? end
reaction!()
click to toggle source
# File lib/blue_print/context.rb, line 73 def self.reaction! @acted = false action! end
resolve(name)
click to toggle source
# File lib/blue_print/context.rb, line 6 def self.resolve(name) if name.respond_to?(:active?) return name else name.to_s.classify.sub(/(Context)?$/, 'Context').safe_constantize end end