class Pry::Command::WatchExpression
Public Instance Methods
options(opt)
click to toggle source
# File lib/pry/commands/watch_expression.rb, line 29 def options(opt) opt.on :d, :delete, "Delete the watch expression with the given index. If no index is given; clear all watch expressions.", :optional_argument => true, :as => Integer opt.on :l, :list, "Show all current watch expressions and their values. Calling watch with no expressions or options will also show the watch expressions." end
process()
click to toggle source
# File lib/pry/commands/watch_expression.rb, line 37 def process case when opts.present?(:delete) delete opts[:delete] when opts.present?(:list) || args.empty? list else add_hook add_expression(args) end end
Private Instance Methods
add_expression(arguments)
click to toggle source
# File lib/pry/commands/watch_expression.rb, line 89 def add_expression(arguments) expressions << Expression.new(_pry_, target, arg_string) output.puts "Watching #{Code.new(arg_string).highlighted}" end
add_hook()
click to toggle source
# File lib/pry/commands/watch_expression.rb, line 94 def add_hook hook = [:after_eval, :watch_expression] unless _pry_.hooks.hook_exists?(*hook) _pry_.hooks.add_hook(*hook) do |_, _pry_| eval_and_print_changed _pry_.output end end end
delete(index)
click to toggle source
# File lib/pry/commands/watch_expression.rb, line 55 def delete(index) if index output.puts "Deleting watch expression ##{index}: #{expressions[index-1]}" expressions.delete_at(index-1) else output.puts "Deleting all watched expressions" expressions.clear end end
eval_and_print_changed(output)
click to toggle source
# File lib/pry/commands/watch_expression.rb, line 80 def eval_and_print_changed(output) expressions.each do |expr| expr.eval! if expr.changed? output.puts "#{text.blue "watch"}: #{expr.to_s}" end end end
expressions()
click to toggle source
# File lib/pry/commands/watch_expression.rb, line 51 def expressions _pry_.config.watch_expressions ||= [] end
list()
click to toggle source
# File lib/pry/commands/watch_expression.rb, line 65 def list if expressions.empty? output.puts "No watched expressions" else _pry_.pager.open do |pager| pager.puts "Listing all watched expressions:" pager.puts "" expressions.each_with_index do |expr, index| pager.print text.with_line_numbers(expr.to_s, index+1) end pager.puts "" end end end