Module: Bade::Where
- Defined in:
- lib/bade/runtime/utils/where.rb
Class Method Summary collapse
- .are_instance_methods(klass, method_name) ⇒ Object
- .are_methods(klass, method_name) ⇒ Object
- .is_class(klass) ⇒ [String, Integer], String
-
.is_class_primarily(klass) ⇒ Object
Raises ArgumentError if klass does not have any Ruby methods defined in it.
- .is_instance_method(klass, method_name) ⇒ [String, Integer], String
- .is_method(klass, method_name) ⇒ [String, Integer], String
- .is_proc(proc) ⇒ [String, Integer], String
Class Method Details
.are_instance_methods(klass, method_name) ⇒ Object
32 33 34 |
# File 'lib/bade/runtime/utils/where.rb', line 32 def are_instance_methods(klass, method_name) are_via_extractor(:method, klass, method_name) end |
.are_methods(klass, method_name) ⇒ Object
28 29 30 |
# File 'lib/bade/runtime/utils/where.rb', line 28 def are_methods(klass, method_name) are_via_extractor(:method, klass, method_name) end |
.is_class(klass) ⇒ [String, Integer], String
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/bade/runtime/utils/where.rb', line 38 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.
57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/bade/runtime/utils/where.rb', line 57 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) ⇒ [String, Integer], String
24 25 26 |
# File 'lib/bade/runtime/utils/where.rb', line 24 def is_instance_method(klass, method_name) source_location(klass.instance_method(method_name)) end |