mirror of
https://github.com/pry/pry.git
synced 2022-11-09 12:35:05 -05:00
Share default options
This commit is contained in:
parent
5539f3bebb
commit
c34ae28711
2 changed files with 42 additions and 19 deletions
|
@ -82,29 +82,38 @@ class Pry
|
||||||
# # pry(main)> help number
|
# # pry(main)> help number
|
||||||
# # number-N regex command
|
# # number-N regex command
|
||||||
def command(name, description="No description.", options={}, &block)
|
def command(name, description="No description.", options={}, &block)
|
||||||
options = {
|
options = default_options(name).merge!(options)
|
||||||
:requires_gem => [],
|
|
||||||
:keep_retval => false,
|
|
||||||
:argument_required => false,
|
|
||||||
:interpolate => true,
|
|
||||||
:shellwords => true,
|
|
||||||
:listing => name,
|
|
||||||
:use_prefix => true
|
|
||||||
}.merge!(options)
|
|
||||||
|
|
||||||
commands[name] = Pry::BlockCommand.subclass(name, description, options, helper_module, &block)
|
commands[name] = Pry::BlockCommand.subclass(name, description, options, helper_module, &block)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Defines a new Pry command class.
|
||||||
|
#
|
||||||
|
# @param [String, Regexp] name The name of the command. Can be
|
||||||
|
# Regexp as well as String.
|
||||||
|
# @param [String] description A description of the command.
|
||||||
|
# @param [Hash] options The optional configuration parameters, see {#command}
|
||||||
|
# @param &Block The class body's definition.
|
||||||
|
#
|
||||||
|
# @example
|
||||||
|
# Pry::Commands.command_class "echo", "echo's the input", :shellwords => false do
|
||||||
|
# def options(opt)
|
||||||
|
# opt.banner "Usage: echo [-u | -d] <string to echo>"
|
||||||
|
# opt.on :u, :upcase, "ensure the output is all upper-case"
|
||||||
|
# opt.on :d, :downcase, "ensure the output is all lower-case"
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# def process
|
||||||
|
# raise Pry::CommandError, "-u and -d makes no sense" if opts.present?(:u) && opts.present?(:d)
|
||||||
|
# result = args.join(" ")
|
||||||
|
# result.downcase! if opts.present?(:downcase)
|
||||||
|
# result.upcase! if opts.present?(:upcase)
|
||||||
|
# output.puts result
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
#
|
||||||
def command_class(name, description="No description.", options={}, &block)
|
def command_class(name, description="No description.", options={}, &block)
|
||||||
options = {
|
options = default_options(name).merge!(options)
|
||||||
:requires_gem => [],
|
|
||||||
:keep_retval => false,
|
|
||||||
:argument_required => false,
|
|
||||||
:interpolate => true,
|
|
||||||
:shellwords => true,
|
|
||||||
:listing => name,
|
|
||||||
:use_prefix => true
|
|
||||||
}.merge!(options)
|
|
||||||
|
|
||||||
commands[name] = Pry::ClassCommand.subclass(name, description, options, helper_module)
|
commands[name] = Pry::ClassCommand.subclass(name, description, options, helper_module)
|
||||||
commands[name].class_eval(&block)
|
commands[name].class_eval(&block)
|
||||||
|
@ -264,12 +273,26 @@ class Pry
|
||||||
commands.keys
|
commands.keys
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# @nodoc used for testing
|
||||||
def run_command(context, name, *args)
|
def run_command(context, name, *args)
|
||||||
command = commands[name] or raise NoCommandError.new(name, self)
|
command = commands[name] or raise NoCommandError.new(name, self)
|
||||||
command.new(context).call_safely(*args)
|
command.new(context).call_safely(*args)
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def default_options(name)
|
||||||
|
{
|
||||||
|
:requires_gem => [],
|
||||||
|
:keep_retval => false,
|
||||||
|
:argument_required => false,
|
||||||
|
:interpolate => true,
|
||||||
|
:shellwords => true,
|
||||||
|
:listing => name,
|
||||||
|
:use_prefix => true
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
def define_default_commands
|
def define_default_commands
|
||||||
|
|
||||||
command "help", "This menu." do |cmd|
|
command "help", "This menu." do |cmd|
|
||||||
|
|
|
@ -85,7 +85,7 @@ USAGE
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def run
|
def process
|
||||||
if opts.present?(:in)
|
if opts.present?(:in)
|
||||||
in_option
|
in_option
|
||||||
elsif opts.present?(:file)
|
elsif opts.present?(:file)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue