def class_name(name, separator = '::', want_array = false)
    components = []

    case name
    when String, Symbol
      components = name.to_s.split(separator)
    when Array
      components = name.flatten
    end

    components.collect! do |value|
      value    = value.to_s.strip
      value[0] = value.capitalize[0] if value =~ /^[a-z]/
      value
    end

    if want_array
      return components
    end
    components.join(separator)
  end
def class_name(name, separator = '::', want_array = false)
    components = []

    case name
    when String, Symbol
      components = name.to_s.split(separator)
    when Array
      components = name.flatten
    end

    components.collect! do |value|
      value    = value.to_s.strip
      value[0] = value.capitalize[0] if value =~ /^[a-z]/
      value
    end

    if want_array
      return components
    end
    components.join(separator)
  end
*****************************************************************************
 Utilities
 Return a fully formed class name as a string

 * *Parameters*
   - [String, Symbol, Array] *name*  Class name components
   - [String, Symbol] *separator*  Class component separator (default '::')
   - [Boolean] *want_array*  Whether or not to return array of final components or string version

 * *Returns*
   - [String]  Returns fully rendered class name as string unless want_array is true
   - [Array]  Returns array of final class components if want_array is true

 * *Errors*