class ROM::Configurable::Config

Constants

WRITER_REGEXP

Attributes

settings[R]

@!attribute [r] settings

@return [Hash] A hash with defined settings

Public Class Methods

new(settings = {}) click to toggle source

@api private

# File lib/rom/support/configurable.rb, line 17
def initialize(settings = {})
  @settings = settings
end

Public Instance Methods

[](name) click to toggle source

Return a setting

@return [Mixed]

@api public

# File lib/rom/support/configurable.rb, line 26
def [](name)
  public_send(name)
end
dup() click to toggle source

@api private

# File lib/rom/support/configurable.rb, line 45
def dup
  self.class.new(dup_settings(settings))
end
key?(name) click to toggle source

@api private

# File lib/rom/support/configurable.rb, line 31
def key?(name)
  settings.key?(name)
end
respond_to_missing?(_name, _include_private = false) click to toggle source

@api private

# File lib/rom/support/configurable.rb, line 40
def respond_to_missing?(_name, _include_private = false)
  true
end
to_hash() click to toggle source
# File lib/rom/support/configurable.rb, line 35
def to_hash
  settings
end

Private Instance Methods

dup_settings(settings) click to toggle source
# File lib/rom/support/configurable.rb, line 51
def dup_settings(settings)
  settings.each_with_object({}) do |(key, value), new_settings|
    if value.is_a?(self.class)
      new_settings[key] = value.dup
    else
      new_settings[key] = value
    end
  end
end
method_missing(meth, *args, &_block) click to toggle source

@api private

# File lib/rom/support/configurable.rb, line 62
def method_missing(meth, *args, &_block)
  return settings.fetch(meth, nil) if frozen?

  name = meth.to_s
  key = name.gsub(WRITER_REGEXP, '').to_sym

  if writer?(name)
    settings[key] = args.first
  else
    settings.fetch(key) { settings[key] = self.class.new }
  end
end
writer?(name) click to toggle source

@api private

# File lib/rom/support/configurable.rb, line 76
def writer?(name)
  !WRITER_REGEXP.match(name).nil?
end