module WrapIt::Switches

Adds switches functionality

@author Alexey Ovchinnikov <alexiss@cybernetlab.ru>

Public Class Methods

included(base) click to toggle source
# File lib/wrap_it/switches.rb, line 16
def self.included(base)
  base == Base || fail(
    TypeError,
    "#{self.class.name} can be included only into WrapIt::Base"
  )
  base.extend ClassMethods
  base.before_initialize { @switches = {} }
end

Private Class Methods

setter(name, &block) click to toggle source

Makes switch setter block @param name [String] switch name

@return [Proc] switch setter block

# File lib/wrap_it/switches.rb, line 106
def self.setter(name, &block)
  proc do |value|
    opts = self.class.collect_derived(:@switches, {}, :merge)[name]
    cb_return = block.nil? || instance_exec(value == true, &block)
    unless cb_return == false
      @switches[name] = value == true
      if value == true
        opts.key?(:html_class) && html_class << opts[:html_class]
      else
        opts.key?(:html_class) && html_class.delete(*opts[:html_class])
      end
    end
  end
end