mirror of
https://github.com/pry/pry.git
synced 2022-11-09 12:35:05 -05:00
Assign default value to :listing
option
When you create a class command, there is a problem with `:listing` option, which doesn't carry the correct default value. Consider the example: class MakeMeHappy < Pry::ClassCommand match 'woot' end `MakeMeHappy` command matches against 'woot' String, but its `:listing` option is set to the "nil" String, which is incorrect. We can fix it by setting `:listing` explicitly: command_options :listing => 'woot' It's a repetitive task, so we can automate it. Holy smoke, this why we all use computers, after all! With help of this commit there is no need to set `:listing` manually. Pry will handle it for you. Signed-off-by: Kyrylo Silin <kyrylosilin@gmail.com>
This commit is contained in:
parent
1dda70c695
commit
ad5bb4c399
2 changed files with 62 additions and 16 deletions
|
@ -25,7 +25,11 @@ class Pry
|
||||||
attr_writer :match
|
attr_writer :match
|
||||||
|
|
||||||
def match(arg=nil)
|
def match(arg=nil)
|
||||||
@match = arg if arg
|
if arg
|
||||||
|
@command_options ||= default_options(arg)
|
||||||
|
@command_options[:listing] = arg.is_a?(String) ? arg : arg.inspect
|
||||||
|
@match = arg
|
||||||
|
end
|
||||||
@match
|
@match
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -733,29 +733,71 @@ describe "Pry::Command" do
|
||||||
Pry.commands.delete 'my-test'
|
Pry.commands.delete 'my-test'
|
||||||
end
|
end
|
||||||
|
|
||||||
it "allows creation of custom sub-classes of Pry::Command" do
|
it "allows creation of custom subclasses of Pry::Command" do
|
||||||
pry_eval('my---test').should =~ /my-testmy-test/
|
pry_eval('my---test').should =~ /my-testmy-test/
|
||||||
end
|
end
|
||||||
|
|
||||||
it "never loses its command options" do
|
|
||||||
options_hash = {
|
|
||||||
:requires_gem => [],
|
|
||||||
:keep_retval => false,
|
|
||||||
:argument_required => false,
|
|
||||||
:interpolate => true,
|
|
||||||
:shellwords => false,
|
|
||||||
:listing => 'my-test',
|
|
||||||
:use_prefix => true,
|
|
||||||
:takes_block => false
|
|
||||||
}
|
|
||||||
MyTestCommand.options.should == options_hash
|
|
||||||
end
|
|
||||||
|
|
||||||
if !mri18_and_no_real_source_location?
|
if !mri18_and_no_real_source_location?
|
||||||
it "shows the source of the process method" do
|
it "shows the source of the process method" do
|
||||||
pry_eval('show-source my-test').should =~ /output.puts command_name/
|
pry_eval('show-source my-test').should =~ /output.puts command_name/
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "command options hash" do
|
||||||
|
it "is always present" do
|
||||||
|
options_hash = {
|
||||||
|
:requires_gem => [],
|
||||||
|
:keep_retval => false,
|
||||||
|
:argument_required => false,
|
||||||
|
:interpolate => true,
|
||||||
|
:shellwords => false,
|
||||||
|
:listing => 'my-test',
|
||||||
|
:use_prefix => true,
|
||||||
|
:takes_block => false
|
||||||
|
}
|
||||||
|
MyTestCommand.options.should == options_hash
|
||||||
|
end
|
||||||
|
|
||||||
|
describe ":listing option" do
|
||||||
|
it "defaults to :match if not set explicitly" do
|
||||||
|
class HappyNewYear < Pry::ClassCommand
|
||||||
|
match 'happy-new-year'
|
||||||
|
description 'Happy New Year 2013'
|
||||||
|
end
|
||||||
|
Pry.commands.add_command HappyNewYear
|
||||||
|
|
||||||
|
HappyNewYear.options[:listing].should == 'happy-new-year'
|
||||||
|
|
||||||
|
Pry.commands.delete 'happy-new-year'
|
||||||
|
end
|
||||||
|
|
||||||
|
it "can be set explicitly" do
|
||||||
|
class MerryChristmas < Pry::ClassCommand
|
||||||
|
match 'merry-christmas'
|
||||||
|
description 'Merry Christmas!'
|
||||||
|
command_options :listing => 'happy-holidays'
|
||||||
|
end
|
||||||
|
Pry.commands.add_command MerryChristmas
|
||||||
|
|
||||||
|
MerryChristmas.options[:listing].should == 'happy-holidays'
|
||||||
|
|
||||||
|
Pry.commands.delete 'merry-christmas'
|
||||||
|
end
|
||||||
|
|
||||||
|
it "equals to :match option's inspect, if :match is Regexp" do
|
||||||
|
class CoolWinter < Pry::ClassCommand
|
||||||
|
match /.*winter/
|
||||||
|
description 'Is winter cool or cool?'
|
||||||
|
end
|
||||||
|
Pry.commands.add_command CoolWinter
|
||||||
|
|
||||||
|
CoolWinter.options[:listing].should == '/.*winter/'
|
||||||
|
|
||||||
|
Pry.commands.delete /.*winter/
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "commands can save state" do
|
describe "commands can save state" do
|
||||||
|
|
Loading…
Reference in a new issue