class Seahorse::Client::Configuration


#=> raises an ArgumentError, :price was not added as an option
configuration.build!(price: 100)
configuration.add_option(:category)
configuration.add_option(:size)
configuration.add_option(:color)
configuration = Configuration.new
option, an ‘ArgumentError` is raised.
If you try to {#build!} a {Configuration} object with an unknown
## Accepted Options
cfg2.color #=> ’blue’
cfg2 = configuration.build!(color: ‘blue’)
# supplied color
cfg1.color #=> ‘red’
cfg1 = configuration.build!
# default
configuration.add_option(:color, ‘red’)
configuration = Configuration.new
on top of any default options.
a read-only (frozen) struct. Options passed to {#build!} are merged
Calling {#build!} on a {Configuration} object causes it to return
## Building Configuration Objects
#=> #<struct max_retires=3 use_ssl=true>
cfg = configuration.build!
configuration.add_option(:use_ssl, true)
configuration.add_option(:max_retries, 3)
configuration = Configuration.new
when building configuration objects.
Add configuration options with optional default values. These are used
## Adding Configuration Options
then build read-only structures with user-supplied data.
Configuration is used to define possible configuration options and

def add_option(name, default = nil, &block)

Returns:
  • (self) -

Parameters:
  • default () -- The default value for this option. You can specify
  • name (Symbol) -- The name of the configuration option. This will
def add_option(name, default = nil, &block)
  default = DynamicDefault.new(Proc.new) if block_given?
  @defaults[name.to_sym] << default
  self
end

def apply_defaults(struct, options)

def apply_defaults(struct, options)
  @defaults.each do |opt_name, defaults|
    unless options.key?(opt_name)
      struct[opt_name] = defaults
    end
  end
  DefaultResolver.new(struct).resolve
end

def apply_options(struct, options)

def apply_options(struct, options)
  options.each do |opt, value|
    begin
      struct[opt] = value
    rescue NameError
      msg = "invalid configuration option `#{opt.inspect}'"
      raise ArgumentError, msg
    end
  end
end

def build!(options = {})

Returns:
  • (Struct) - Returns a frozen configuration `Struct`.

Parameters:
  • options (Hash) -- ({}) A hash of configuration options.
def build!(options = {})
  struct = empty_struct
  apply_options(struct, options)
  apply_defaults(struct, options)
  struct
end

def empty_struct

def empty_struct
  Struct.new(*@defaults.keys.sort).new
end

def initialize

Other tags:
    Api: - private
def initialize
  @defaults = Hash.new { |h,k| h[k] = Defaults.new }
end