Module: Bade::Where

Defined in:
lib/bade/runtime/utils/where.rb

Class Method Summary collapse

Class Method Details

.are_instance_methods(klass, method_name) ⇒ Object



24
25
26
# File 'lib/bade/runtime/utils/where.rb', line 24

def are_instance_methods(klass, method_name)
  are_via_extractor(:method, klass, method_name)
end

.are_methods(klass, method_name) ⇒ Object



20
21
22
# File 'lib/bade/runtime/utils/where.rb', line 20

def are_methods(klass, method_name)
  are_via_extractor(:method, klass, method_name)
end

.is_class(klass) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/bade/runtime/utils/where.rb', line 28

def is_class(klass)
  defined_methods(klass)
    .group_by { |sl| sl[0] }
    .map do |file, sls|
      lines = sls.map { |sl| sl[1] }
      count = lines.size
      line = lines.min

      {
        file: file,
        count: count,
        line: line
      }
    end
    .sort_by { |fc| fc[:count] }
    .map { |fc| [fc[:file], fc[:line]] }
end

.is_class_primarily(klass) ⇒ Object

Raises ArgumentError if klass does not have any Ruby methods defined in it.



47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/bade/runtime/utils/where.rb', line 47

def is_class_primarily(klass)
  source_locations = is_class(klass)
  if source_locations.empty?
    methods = defined_methods(klass)
    msg = if methods.empty?
            "#{klass} has no methods"
          else
            "#{klass} only has built-in methods (#{methods.size} in total)"
          end

    raise ::ArgumentError, msg
  end
  source_locations[0]
end

.is_instance_method(klass, method_name) ⇒ Object



16
17
18
# File 'lib/bade/runtime/utils/where.rb', line 16

def is_instance_method(klass, method_name)
  source_location(klass.instance_method(method_name))
end

.is_method(klass, method_name) ⇒ Object



12
13
14
# File 'lib/bade/runtime/utils/where.rb', line 12

def is_method(klass, method_name)
  source_location(klass.method(method_name))
end

.is_proc(proc) ⇒ Object



8
9
10
# File 'lib/bade/runtime/utils/where.rb', line 8

def is_proc(proc)
  source_location(proc)
end