mirror of
https://github.com/pry/pry.git
synced 2022-11-09 12:35:05 -05:00
5db725eca6
maybe best explained with an example: [1] pry(main)> Pry.config.hi = "hi" => "hi" [2] pry(main)> _pry_.config.hi => "hi" [3] pry(main)> _pry_.config.x = 1 => 1 [4] pry(main)> Pry.config.x => nil [5] pry(main)> 'Pry.config' is an instance of Pry::Config::Default. it defines the initial default configuration values an instance of 'Pry' is going to have. an instance of 'Pry' uses an instance of Pry::Config who relies on Pry.config as a default or fallback for keys it cannot find locally. for example 'Pry.config.color = true' is seen by _all_ pry REPLs who are active but _pry_.config.color = false is seen only by the REPL session being interacted with. a number of "config shortcircuts" are still available, for example it is possible to say `_pry_.input = StringIO.new` or `Pry.input = StringIO.new`. the shortcuts are maintained for the Pry class and instances of the Pry class through Pry::Config.shortcuts. Pry::Config::Convenience adds a method called 'config_shortcuts' which can be used to setup shortcut access to 'some_obj.config.blah' as 'some_obj.blah' a lot of tests still fail, so work in progress. this should help solve #1055.
27 lines
653 B
Ruby
27 lines
653 B
Ruby
module Pry::Config::Convenience
|
|
SHORTCUTS = [
|
|
:input,
|
|
:output,
|
|
:commands,
|
|
:prompt,
|
|
:print,
|
|
:exception_handler,
|
|
:quiet?,
|
|
:hooks,
|
|
:color,
|
|
:pager,
|
|
:editor,
|
|
:memory_size,
|
|
:extra_sticky_locals
|
|
]
|
|
|
|
|
|
def config_shortcut(*names)
|
|
names.each do |name|
|
|
reader = name
|
|
setter = "#{name}="
|
|
define_method(reader) { config.public_send(name) }
|
|
define_method(setter) { |value| config.public_send(setter, value) }
|
|
end
|
|
end
|
|
end
|