module Pry::Config::Behavior

def self.included(klass)

def self.included(klass)
  unless defined?(RESERVED_KEYS)
    const_set :RESERVED_KEYS, instance_methods(false).map(&:to_s).freeze
  end
  klass.extend(Builder)
end

def ==(other)

def ==(other)
  @lookup == try_convert_to_hash(other)
end

def [](key)

def [](key)
  @lookup[key.to_s]
end

def []=(key, value)

def []=(key, value)
  key = key.to_s
  if RESERVED_KEYS.include?(key)
    raise ArgumentError, "few things are reserved by pry, but using '#{key}' as a configuration key is."
  end
  @lookup[key] = value
end

def _clip_inspect(obj)

def _clip_inspect(obj)
  "#{obj.class}:0x%x" % obj.object_id << 1
end

def _dup(value)

def _dup(value)
  if NODUP.any? { |klass| klass === value }
    value
  else
    value.dup
  end
end

def clear

def clear
  @lookup.clear
  true
end

def default

Returns:
  • (Pry::Config::Behavior) -
def default
  @default
end

def forget(key)

def forget(key)
  @lookup.delete(key.to_s)
end

def initialize(default = Pry.config)

def initialize(default = Pry.config)
  @default = default
  @lookup = {}
end

def inspect

def inspect
  key_str = keys.map { |key| "'#{key}'" }.join(",")
  "#<#{_clip_inspect(self)} local_keys=[#{key_str}] default=#{@default.inspect}>"
end

def key?(key)

def key?(key)
  key = key.to_s
  @lookup.key?(key)
end

def keys

def keys
  @lookup.keys
end

def merge!(other)

def merge!(other)
  other = try_convert_to_hash(other)
  raise TypeError, "unable to convert argument into a Hash" unless other
  other.each do |key, value|
    self[key] = value
  end
end

def method_missing(name, *args, &block)

def method_missing(name, *args, &block)
  key = name.to_s
  if key[-1] == ASSIGNMENT
    short_key = key[0..-2]
    self[short_key] = args[0]
  elsif key?(key)
    self[key]
  elsif @default.respond_to?(name)
    value = @default.public_send(name, *args, &block)
    # FIXME: refactor Pry::Hook so that it stores config on the config object,
    # so that we can use the normal strategy.
    self[key] = value = value.dup if key == 'hooks'
    value
  else
    nil
  end
end

def pretty_print(q)

def pretty_print(q)
  q.text inspect[1..-1].gsub(INSPECT_REGEXP, "default=<")
end

def respond_to_missing?(key, include_private=false)

def respond_to_missing?(key, include_private=false)
  key?(key) or @default.respond_to?(key) or super(key, include_private)
end

def to_hash

def to_hash
  @lookup.dup
end

def try_convert_to_hash(obj)

def try_convert_to_hash(obj)
  if Hash === obj
    obj
  elsif obj.respond_to?(:to_h)
    obj.to_h
  elsif obj.respond_to?(:to_hash)
    obj.to_hash
  else
    nil
  end
end