Module: Supertype::ClassMethods

Defined in:
lib/nose/util.rb

Overview

Add a single method to get a class given the subtype name

Instance Method Summary collapse

Instance Method Details

#subtype_class(name) ⇒ Class

Get the class given the name of a subtype

Returns:

  • (Class)

    the concrete class with the given subtype name



92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/nose/util.rb', line 92

def subtype_class(name)
  class_name = self.name.split('::')[0..-2]
  class_name << name.split('_').map do |name_part|
    name_part = name_part[0].upcase + name_part[1..-1]
    name_part.sub 'Id', 'ID'
  end.join
  class_name[-1] = class_name[-1] + self.name.split('::').last

  class_name.reduce(Object) do |mod, name_part|
    mod.const_get(name_part)
  end
end