summaryrefslogtreecommitdiff
path: root/lib/pry/commands/ls/ls_entity.rb
blob: 197070a1b38e2c32f3a56fb34ed732d691e83f83 (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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# frozen_string_literal: true

class Pry
  class Command
    class Ls < Pry::ClassCommand
      class LsEntity
        attr_reader :pry_instance

        def initialize(opts)
          @interrogatee = opts[:interrogatee]
          @no_user_opts = opts[:no_user_opts]
          @opts = opts[:opts]
          @args = opts[:args]
          @grep = Grep.new(Regexp.new(opts[:opts][:G] || '.'))
          @pry_instance = opts.delete(:pry_instance)
        end

        def entities_table
          entities.map(&:write_out).select { |o| o }.join('')
        end

        private

        def grep(entity)
          entity.tap { |o| o.grep = @grep }
        end

        def globals
          grep Globals.new(@opts, pry_instance)
        end

        def constants
          grep Constants.new(@interrogatee, @no_user_opts, @opts, pry_instance)
        end

        def methods
          grep(Methods.new(@interrogatee, @no_user_opts, @opts, pry_instance))
        end

        def self_methods
          grep SelfMethods.new(@interrogatee, @no_user_opts, @opts, pry_instance)
        end

        def instance_vars
          grep InstanceVars.new(@interrogatee, @no_user_opts, @opts, pry_instance)
        end

        def local_names
          grep LocalNames.new(@no_user_opts, @args, pry_instance)
        end

        def local_vars
          LocalVars.new(@opts, pry_instance)
        end

        def entities
          [
            globals, constants, methods, self_methods, instance_vars, local_names,
            local_vars
          ]
        end
      end
    end
  end
end