module Subtype::ClassMethods
Add a single method to retrieve the subtype name
Public Instance Methods
subtype_name(name_case: :snake)
click to toggle source
Get a unique string identify this subclass amongst sibling classes @return [String]
# 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
Private Instance Methods
name_array(cls)
click to toggle source
Convert camel case class names to an array @return [Array<String>]
# File lib/nose/util.rb, line 152 def name_array(cls) frozen_name = cls.name.dup frozen_name.gsub!(/^.*::/, '') frozen_name.gsub!('ID', 'Id') frozen_name.freeze frozen_name.split(/(?=[A-Z]+)/).map(&:freeze) \ .map! do |s| s.downcase.freeze end end