class Restforce::Configuration::Option

def self.define(*args)

def self.define(*args)
  new(*args).define
end

def define

def define
  write_attribute
  define_method if default_provided?
  self
end

def define_method

def define_method
  our_default = default
  our_name    = name
  configuration.send :define_method, our_name do
    instance_variable_get(:"@#{our_name}") ||
      instance_variable_set(:"@#{our_name}", our_default.respond_to?(:call) ? our_default.call : our_default)
  end
end

def initialize(configuration, name, options = {})

def initialize(configuration, name, options = {})
  @configuration, @name, @options = configuration, name, options
  @default = options.fetch(:default, nil)
end

def write_attribute

def write_attribute
  configuration.send :attr_accessor, name
end