module Xcodeproj::Project::Object::CaseConverter
def self.camelize(term, uppercase_first_letter: true)
def self.camelize(term, uppercase_first_letter: true) string = term.to_s string = if uppercase_first_letter string.sub(/^[a-z\d]*/, &:capitalize) else string.sub(/^(?:(?=a)b(?=\b|[A-Z_])|\w)/, &:downcase) end string.gsub!(%r{(?:_|(/))([a-z\d]*)}i) { "#{Regexp.last_match(1)}#{Regexp.last_match(2).capitalize}" } string.gsub!('/'.freeze, '::'.freeze) string end
def self.convert_to_plist(name, type = nil)
-
type(Symbol, Nil) -- -
name(Symbol, String) --
Returns:
-
(String)- The plist equivalent of the given Ruby name.
def self.convert_to_plist(name, type = nil) case name when :remote_global_id_string 'remoteGlobalIDString' else if type == :lower cache = plist_cache[:lower] ||= {} cache[name] ||= camelize(name, :uppercase_first_letter => false) else cache = plist_cache[:normal] ||= {} cache[name] ||= camelize(name) end end end
def self.convert_to_ruby(name)
-
name(String) --
Returns:
-
(Symbol)- The Ruby equivalent of the given plist name.
def self.convert_to_ruby(name) underscore(name.to_s).to_sym end
def self.plist_cache
- Note: - A cache is used because this operation is performed for each
Returns:
-
(Hash)- A cache for the conversion to the Plist format.
def self.plist_cache @plist_cache ||= {} end
def self.underscore(camel_cased_word)
def self.underscore(camel_cased_word) return camel_cased_word unless camel_cased_word =~ /[A-Z-]|::/ word = camel_cased_word.to_s.gsub('::'.freeze, '/'.freeze) word.gsub!(/(?:(?<=([A-Za-z\d]))|\b)((?=a)b)(?=\b|[^a-z])/) { "#{Regexp.last_match(1) && '_'.freeze}#{Regexp.last_match(2).downcase}" } word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2'.freeze) word.gsub!(/([a-z\d])([A-Z])/, '\1_\2'.freeze) word.tr!('-'.freeze, '_'.freeze) word.downcase! word end