Module: ReflectionUtils

Defined in:
lib/reflection_utils.rb,
lib/reflection_utils/version.rb,
lib/reflection_utils/create_class_methods_upon_include.rb

Defined Under Namespace

Modules: CreateClassMethodsUponInclude

Constant Summary collapse

VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.assert_parameters(proc, parameters) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/reflection_utils.rb', line 25

def self.assert_parameters(proc, parameters)
  parameters.each_with_index do |parameter, index|
    raise ArgumentError, "Argument #{parameter} not found for #{proc} at #{index} index." unless has_parameter?(proc, index, parameter)
  end

  true
end

.call(callback, params = nil) ⇒ Object



13
14
15
# File 'lib/reflection_utils.rb', line 13

def self.call(callback, params = nil)
  params.nil? ? callback.call : callback.call(params)
end

.get_bound_instance_method(instance:, method_name:) ⇒ Object



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

def self.get_bound_instance_method(instance:, method_name:)
  get_class_constant(instance: instance).instance_method(method_name).bind(instance)
end

.get_class_constant(instance:) ⇒ Object



9
10
11
# File 'lib/reflection_utils.rb', line 9

def self.get_class_constant(instance:)
  Object.const_get(instance.class.name)
end

.has_parameter?(proc, parameter_index, parameter) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/reflection_utils.rb', line 33

def self.has_parameter?(proc, parameter_index, parameter)
  proc.parameters[parameter_index] == parameter
end

.has_parameters?(proc, parameters) ⇒ Boolean

Returns:

  • (Boolean)


17
18
19
20
21
22
23
# File 'lib/reflection_utils.rb', line 17

def self.has_parameters?(proc, parameters)
  parameters.each_with_index do |parameter, index|
    return false unless has_parameter?(proc, index, parameter)
  end

  true
end

.non_default_class_methods(clazz) ⇒ Object



41
42
43
# File 'lib/reflection_utils.rb', line 41

def self.non_default_class_methods(clazz)
  clazz.methods - Object.methods
end

.non_default_instance_methods(instance) ⇒ Object



45
46
47
# File 'lib/reflection_utils.rb', line 45

def self.non_default_instance_methods(instance)
  instance.methods - Object.new.methods
end

.non_default_methods(class_or_instance) ⇒ Object



37
38
39
# File 'lib/reflection_utils.rb', line 37

def self.non_default_methods(class_or_instance)
  class_or_instance.is_a?(Module) ? non_default_class_methods(class_or_instance) : non_default_instance_methods(class_or_instance)
end