* use a plain old Slop instance instead of `Options`;
* remove `ClassCommand::Options` and its tests;
* add clearer subcommand example (for `Command#subcommand` method);
* refactor `ClassCommand#slop`;
* refactor `ClassCommand#complete`.
Slop v3.4.0 has introduced full-featured subcommands. There is no need
in Pry specific code anymore.
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>
* removed most historicla junk from lib/pry/test/helper.rb
* relocated recalcitrant junk to the local spec/helper.rb (this isn't exposed to 3rd parties)
A few things were missing. I had to add a new method and slightly adjust
ClassCommand#slop method. Without these changes subcommands doesn't work
properly.
Add some unit tests for subcommands.
Signed-off-by: Kyrylo Silin <kyrylosilin@gmail.com>
Create `ClassCommand::Options` class, which ties up sub commands and
default options together.
Let's consider the command `food make --tea`. `food` is a command,
`make` is a sub command and `--tea` is an option of `make` sub command.
We can access `--tea` via `opts[:make][:tea].
Also, we can check the freshness of our food like so: `food --freshness`.
`--freshness` is a default option. We can access it like so:
`opts.freshness?` or `opts[:freshness]`.
Add unit tests for `ClassCommand::Option` and some other tests that
reflect the additions.
Finally, document everything and fix different typos in the existing
documentation.
Signed-off-by: Kyrylo Silin <kyrylosilin@gmail.com>