class IntercomRails::ConfigSingleton

Public Class Methods

config_accessor(*args, &block) click to toggle source
# File lib/intercom-rails/config.rb, line 7
def self.config_accessor(*args, &block)
  config_reader(*args)
  config_writer(*args, &block)
end
config_group(name, &block) click to toggle source
# File lib/intercom-rails/config.rb, line 29
def self.config_group(name, &block)
  camelized_name = name.to_s.classify
  group = self.const_set(camelized_name, Class.new(self))

  meta_class.send(:define_method, name) do
    group
  end

  group.send(:instance_variable_set, :@underscored_class_name, name)
  group.instance_eval(&block)
end
config_reader(name) click to toggle source
# File lib/intercom-rails/config.rb, line 16
def self.config_reader(name)
  meta_class.send(:define_method, name) do
    instance_variable_get("@#{name}")
  end
end
config_writer(name, &block) click to toggle source
# File lib/intercom-rails/config.rb, line 22
def self.config_writer(name, &block)
  meta_class.send(:define_method, "#{name}=") do |value|
    validate(name, value, block)
    instance_variable_set("@#{name}", value)
  end
end
meta_class() click to toggle source
# File lib/intercom-rails/config.rb, line 12
def self.meta_class
  class << self; self end
end

Private Class Methods

underscored_class_name() click to toggle source
# File lib/intercom-rails/config.rb, line 53
def self.underscored_class_name
  @underscored_class_name
end
validate(name, value, block) click to toggle source
# File lib/intercom-rails/config.rb, line 43
def self.validate(name, value, block)
  return unless block
  args = [value]
  if block.arity > 1
    field_name = underscored_class_name ? "#{underscored_class_name}.#{name}" : name
    args << field_name
  end
  block.call(*args)
end