Sha256: e901dc0af168931c41e6d49df9e790de8ac06d1daefea3a134bfd9d978dc22a2
Contents?: true
Size: 1.49 KB
Versions: 1
Compression:
Stored size: 1.49 KB
Contents
module Chanko class ActiveIf class << self def define(label, &block) definitions[label] = block end def find(label) definitions[label] end def definitions @definitions ||= {} end def clear definitions.clear end end attr_reader :conditions, :options def initialize(*conditions, &block) @options = conditions.extract_options! @conditions = conditions @block = block end def active?(context, options = {}) blocks.all? {|block| block.call(context, options) } end def blocks @blocks ||= begin conditions.map do |condition| Block.new(condition) end << @block end.compact end class Block def initialize(*conditions) @conditions = conditions end def call(context, options) block.call(context, options) end def block condition = @conditions.first condition.is_a?(Block) ? condition : ActiveIf.find(condition) end end class Any < Block def block proc do |context, options| @conditions.any? do |condition| Block.new(condition).call(context, options) end end end end class None < Block def block proc do |context, options| @conditions.none? do |condition| Block.new(condition).call(context, options) end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
chanko-2.0.1 | lib/chanko/active_if.rb |