class BlockParty::Configuration

Public Instance Methods

configure() { |self| ... } click to toggle source

INTERFACE

# File lib/block_party/configuration.rb, line 12
def configure
  yield(self) if block_given?
  self
end
instance_variables() click to toggle source
Calls superclass method
# File lib/block_party/configuration.rb, line 28
def instance_variables
  super.reject do |var|
    [:"@__hash_representation__", :"@__hash_representation__="].include? var
  end
end
method_missing(setting, *args, &block) click to toggle source
# File lib/block_party/configuration.rb, line 17
def method_missing(setting, *args, &block)
  setter, getter = derive_setting_names(setting)
  create_accessors setter, getter
  if setter? setting
    set setter, *args, &block
  else
    set_nested_configuration setter, *args, &block
  end
end
settings() click to toggle source
# File lib/block_party/configuration.rb, line 34
def settings
  instance_variables.map do |var|
    var.to_s.gsub('@', '').to_sym
  end
end
unset(setting) click to toggle source
# File lib/block_party/configuration.rb, line 40
def unset(setting)
  setting = setting.to_sym
  setting = :"@#{setting}" unless setting.to_s =~ /^@/
  remove_instance_variable setting
end

Protected Instance Methods

create_accessors(setter, getter) click to toggle source
# File lib/block_party/configuration.rb, line 63
def create_accessors(setter, getter)
  create_setter(setter)
  create_getter(getter)
end
create_getter(getter) click to toggle source
# File lib/block_party/configuration.rb, line 74
def create_getter(getter)
  define_singleton_method getter do
    instance_variable_get :"@#{getter}"
  end
end
create_setter(setter) click to toggle source
# File lib/block_party/configuration.rb, line 68
def create_setter(setter)
  define_singleton_method setter do |value|
    instance_variable_set :"@#{setter_to_getter(setter)}", value
  end
end
derive_setting_names(setting_name) click to toggle source

IMPLEMENTATION

# File lib/block_party/configuration.rb, line 51
def derive_setting_names(setting_name)
  if setter? setting_name
    [ setting_name, setter_to_getter(setting_name) ]
  else
    [ getter_to_setter(setting_name), setting_name ]
  end
end
getter_to_setter(getter) click to toggle source
# File lib/block_party/configuration.rb, line 84
def getter_to_setter(getter)
  :"#{getter}="
end
set(setter, *args, &block) click to toggle source
# File lib/block_party/configuration.rb, line 88
def set(setter, *args, &block)
  if block_given?
    send setter, *args, &block
  else
    send setter, *args
  end
end
set_nested_configuration(setter, *args) { |configuration| ... } click to toggle source
# File lib/block_party/configuration.rb, line 96
def set_nested_configuration(setter, *args, &block)
  configuration = send setter, Configuration.new
  yield(configuration) if block_given?
  configuration
end
setter?(setting) click to toggle source
# File lib/block_party/configuration.rb, line 59
def setter?(setting)
  setting =~ /=$/
end
setter_to_getter(setter) click to toggle source
# File lib/block_party/configuration.rb, line 80
def setter_to_getter(setter)
  :"#{setter.to_s.gsub('=','')}"
end