class Pry::Command::WatchExpression::Expression

Attributes

previous_value[R]
pry_instance[R]
source[R]
target[R]
value[R]

Public Class Methods

new(pry_instance, target, source) click to toggle source
# File lib/pry/commands/watch_expression/expression.rb, line 9
def initialize(pry_instance, target, source)
  @pry_instance = pry_instance
  @target = target
  @source = Code.new(source).strip
end

Public Instance Methods

changed?() click to toggle source

Has the value of the expression changed?

We use the pretty-printed string represenation to detect differences as this avoids problems with dup (causes too many differences) and == (causes too few)

# File lib/pry/commands/watch_expression/expression.rb, line 29
def changed?
  (value != previous_value)
end
eval!() click to toggle source
# File lib/pry/commands/watch_expression/expression.rb, line 15
def eval!
  @previous_value = value
  @value = Pry::ColorPrinter.pp(target_eval(target, source), ''.dup)
end
to_s() click to toggle source
# File lib/pry/commands/watch_expression/expression.rb, line 20
def to_s
  "#{Code.new(source).highlighted.strip} => #{value}"
end

Private Instance Methods

target_eval(target, source) click to toggle source
# File lib/pry/commands/watch_expression/expression.rb, line 35
def target_eval(target, source)
  target.eval(source)
rescue StandardError => e
  e
end