summaryrefslogtreecommitdiff
path: root/lib/pry/helpers/options_helpers.rb
blob: bdd007f13b4f0e2210e6036d8435011359002205 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Pry
  module Helpers
    module OptionsHelpers
      module_function

      # Add method options to the Pry::Slop instance
      def method_options(opt)
        @method_target = target
        opt.on :M, "instance-methods", "Operate on instance methods."
        opt.on :m, :methods, "Operate on methods."
        opt.on :s, :super, "Select the 'super' method. Can be repeated to traverse the ancestors.", as: :count
        opt.on :c, :context, "Select object context to run under.", argument: true do |context|
          @method_target = Pry.binding_for(target.eval(context))
        end
      end

      # Get the method object parsed by the slop instance
      def method_object
        @method_object ||= get_method_or_raise(args.empty? ? nil : args.join(" "), @method_target,
                            super: opts[:super],
                            instance: opts.present?(:'instance-methods') && !opts.present?(:'methods'),
                            methods: opts.present?(:'methods') && !opts.present?(:'instance-methods')
                           )
      end
    end
  end
end