summaryrefslogtreecommitdiff
path: root/lib/pry/testable/evalable.rb
blob: 458465ffe2d991d9a24ca4b59a6f2603db62bb98 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Pry
  module Testable
    module Evalable
      def pry_tester(*args, &block)
        args.unshift(Pry.toplevel_binding) if args.empty? || args[0].is_a?(Hash)
        Pry::Testable::PryTester.new(*args).tap do |t|
          t.singleton_class.class_eval(&block) if block
        end
      end

      def pry_eval(*eval_strs)
        b =
          if String === eval_strs.first
            Pry.toplevel_binding
          else
            Pry.binding_for(eval_strs.shift)
          end
        pry_tester(b).eval(*eval_strs)
      end
    end
  end
end