1
0
Fork 0
mirror of https://github.com/pry/pry.git synced 2022-11-09 12:35:05 -05:00
pry--pry/lib/pry/commands/play.rb
Kyrylo Silin 256f35422a Prettify command descriptions, switches and stuff
Wrap command descriptions to 80 characters. Convert some string options
to symbols (where possible). Align options in code. Remove dots in the
end of switch descriptions.

Signed-off-by: Kyrylo Silin <kyrylosilin@gmail.com>
2013-01-09 22:23:19 +02:00

65 lines
1.8 KiB
Ruby

class Pry
class Command::Play < Pry::ClassCommand
match 'play'
group 'Editing'
description 'Playback a string variable or a method or a file as input.'
banner <<-'BANNER'
Usage: play [OPTIONS] [--help]
The play command enables you to replay code from files and methods as if they
were entered directly in the Pry REPL. Default action (no options) is to play
the provided string variable.
play --lines 149..153
play -i 20 --lines 1..3
play Pry#repl --lines 1..-1
play Rakefile --lines 5
https://github.com/pry/pry/wiki/User-Input#wiki-Play
BANNER
def options(opt)
CodeCollector.inject_options(opt)
opt.on :open, 'When used with the -m switch, it plays the entire method except' \
' the last line, leaving the method definition "open". `amend-line`' \
' can then be used to modify the method.'
end
def process
@cc = CodeCollector.new(args, opts, _pry_)
perform_play
run "show-input" unless Pry::Code.complete_expression?(eval_string)
end
def perform_play
eval_string << (opts.present?(:open) ? restrict_to_lines(content, (0..-2)) : content)
end
def content
if args.first
@cc.content
else
file_content
end
end
# The file to play from when no code object is specified.
# e.g `play --lines 4..10`
def default_file
target.eval("__FILE__") && File.expand_path(target.eval("__FILE__"))
end
def file_content
if default_file && File.exists?(default_file)
@cc.restrict_to_lines(File.read(default_file), @cc.line_range)
else
raise CommandError, "File does not exist! File was: #{default_file.inspect}"
end
end
end
Pry::Commands.add_command(Pry::Command::Play)
end