module Pry::Config::Behavior
Constants
- ASSIGNMENT
- INSPECT_REGEXP
- NODUP
Public Class Methods
included(klass)
click to toggle source
# File lib/pry/config/behavior.rb, line 14 def self.included(klass) unless defined?(RESERVED_KEYS) const_set :RESERVED_KEYS, instance_methods(false).map(&:to_s).freeze end klass.extend(Builder) end
new(default = Pry.config)
click to toggle source
# File lib/pry/config/behavior.rb, line 21 def initialize(default = Pry.config) @default = default @lookup = {} end
Public Instance Methods
==(other)
click to toggle source
# File lib/pry/config/behavior.rb, line 72 def ==(other) @lookup == try_convert_to_hash(other) end
Also aliased as: eql?
[](key)
click to toggle source
# File lib/pry/config/behavior.rb, line 34 def [](key) @lookup[key.to_s] end
[]=(key, value)
click to toggle source
# File lib/pry/config/behavior.rb, line 38 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
clear()
click to toggle source
# File lib/pry/config/behavior.rb, line 86 def clear @lookup.clear true end
Also aliased as: refresh
default()
click to toggle source
@return [Pry::Config::Behavior]
returns the default used if a matching value for a key isn't found in self
# File lib/pry/config/behavior.rb, line 30 def default @default end
forget(key)
click to toggle source
# File lib/pry/config/behavior.rb, line 92 def forget(key) @lookup.delete(key.to_s) end
inspect()
click to toggle source
# File lib/pry/config/behavior.rb, line 106 def inspect key_str = keys.map { |key| "'#{key}'" }.join(",") "#<#{_clip_inspect(self)} local_keys=[#{key_str}] default=#{@default.inspect}>" end
key?(key)
click to toggle source
# File lib/pry/config/behavior.rb, line 81 def key?(key) key = key.to_s @lookup.key?(key) end
keys()
click to toggle source
# File lib/pry/config/behavior.rb, line 96 def keys @lookup.keys end
merge!(other)
click to toggle source
# File lib/pry/config/behavior.rb, line 64 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
method_missing(name, *args, &block)
click to toggle source
# File lib/pry/config/behavior.rb, line 46 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
pretty_print(q)
click to toggle source
# File lib/pry/config/behavior.rb, line 111 def pretty_print(q) q.text inspect[1..-1].gsub(INSPECT_REGEXP, "default=<") end
respond_to_missing?(key, include_private=false)
click to toggle source
Calls superclass method
# File lib/pry/config/behavior.rb, line 77 def respond_to_missing?(key, include_private=false) key?(key) or @default.respond_to?(key) or super(key, include_private) end
to_hash()
click to toggle source
# File lib/pry/config/behavior.rb, line 100 def to_hash @lookup.dup end
Also aliased as: to_h
Private Instance Methods
_clip_inspect(obj)
click to toggle source
# File lib/pry/config/behavior.rb, line 116 def _clip_inspect(obj) "#{obj.class}:0x%x" % obj.object_id << 1 end
_dup(value)
click to toggle source
# File lib/pry/config/behavior.rb, line 120 def _dup(value) if NODUP.any? { |klass| klass === value } value else value.dup end end
try_convert_to_hash(obj)
click to toggle source
# File lib/pry/config/behavior.rb, line 128 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