Module: Subtype::ClassMethods

Defined in:
lib/nose/util.rb

Overview

Add a single method to retrieve the subtype name

Instance Method Summary collapse

Instance Method Details

#subtype_name(name_case: :snake) ⇒ String

Get a unique string identify this subclass amongst sibling classes

Returns:

  • (String)


130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# File 'lib/nose/util.rb', line 130

def subtype_name(name_case: :snake)
  super_name = name_array superclass
  self_name = name_array self
  self_name = self_name.reverse.drop_while do |part|
    super_name.include? part
  end.reverse

  if name_case == :snake
    name = self_name.join('_').freeze
  elsif name_case == :camel
    name = self_name.map do |part|
      part[0].upcase + part[1..-1]
    end.join('').freeze
  end

  name
end