class TZInfo::Timezone

def friendly_identifier(skip_first_part = false)

Returns:
  • (String) - the modified identifier.

Parameters:
  • skip_first_part (Boolean) -- whether the first part of the identifier
def friendly_identifier(skip_first_part = false)
  id = identifier
  id = id.encode(Encoding::UTF_8) unless id.encoding.ascii_compatible?
  parts = id.split('/')
  if parts.empty?
    # shouldn't happen
    identifier
  elsif parts.length == 1
    parts[0]
  else
    prefix = skip_first_part ? nil : "#{parts[0]} - "
    parts = parts.drop(1).map do |part|
      part.gsub!(/_/, ' ')
      if part.index(/[a-z]/)
        # Missing a space if a lower case followed by an upper case and the
        # name isn't McXxxx.
        part.gsub!(/([^M][a-z])([A-Z])/, '\1 \2')
        part.gsub!(/([M][a-bd-z])([A-Z])/, '\1 \2')
        # Missing an apostrophe if two consecutive upper case characters.
        part.gsub!(/([A-Z])([A-Z])/, '\1\'\2')
      end
      part
    end
    "#{prefix}#{parts.reverse.join(', ')}"
  end
end