Module: Where

Defined in:
lib/where_is.rb,
lib/where_is/version.rb

Constant Summary collapse

VERSION =
'0.3.2'.freeze

Class Method Summary collapse

Class Method Details

.are(klass, method = nil) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/where_is.rb', line 9

def are(klass, method = nil)
  if method
    begin
      Where.are_instance_methods(klass, method)
    rescue NameError
      Where.are_methods(klass, method)
    end
  else
    Where.is_class(klass)
  end
end

.are_instance_methods(klass, method_name) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
# File 'lib/where_is.rb', line 45

def are_instance_methods(klass, method_name)
  ensured_class = ensure_class(klass)
  methods = are_via_extractor(:instance_method, ensured_class, method_name)
  source_locations = group_and_combine_source_locations(methods)

  if source_locations.empty?
    raise NameError, "#{ensured_class} has no methods called #{method_name}"
  end

  source_locations
end

.are_methods(klass, method_name) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
# File 'lib/where_is.rb', line 33

def are_methods(klass, method_name)
  ensured_class = ensure_class(klass)
  methods = are_via_extractor(:method, ensured_class, method_name)
  source_locations = group_and_combine_source_locations(methods)

  if source_locations.empty?
    raise NameError, "#{ensured_class} has no methods called #{method_name}"
  end

  source_locations
end

.is(klass, method = nil) ⇒ Object



5
6
7
# File 'lib/where_is.rb', line 5

def is(klass, method = nil)
  are(klass, method)[0]
end

.is_class(klass) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/where_is.rb', line 61

def is_class(klass)
  ensured_class = ensure_class(klass)
  methods = defined_methods(ensured_class)
  source_locations = group_and_combine_source_locations(methods)

  if source_locations.empty?
    raise NameError, "#{ensured_class} has no methods" if methods.empty?
    raise NameError, "#{ensured_class} only has built-in methods " \
                         "(#{methods.size} in total)"
  end

  source_locations
end

.is_class_primarily(klass) ⇒ Object



57
58
59
# File 'lib/where_is.rb', line 57

def is_class_primarily(klass)
  is_class(klass)[0]
end

.is_instance_method(klass, method_name) ⇒ Object



29
30
31
# File 'lib/where_is.rb', line 29

def is_instance_method(klass, method_name)
  are_instance_methods(klass, method_name)[0]
end

.is_method(klass, method_name) ⇒ Object



25
26
27
# File 'lib/where_is.rb', line 25

def is_method(klass, method_name)
  are_methods(klass, method_name)[0]
end

.is_proc(proc) ⇒ Object



21
22
23
# File 'lib/where_is.rb', line 21

def is_proc(proc)
  source_location(proc)
end