module XeroRuby::StringSerialization

Public Instance Methods

camelize(word, first_upper = true) click to toggle source
# File lib/xero-ruby/string_serialization.rb, line 25
def camelize(word, first_upper = true)
  if first_upper
    str = word.to_s
    str = gsubbed(str, /(?:^|_)([^_\s]+)/)
    str = gsubbed(str, %r{/([^/]*)}, "::")
    str
  else
    parts = word.split("_", 2)
    parts[0] << camelize(parts[1]) if parts.size > 1
    parts[0] || ""
  end
end
camelize_key(key, first_upper = true) click to toggle source
# File lib/xero-ruby/string_serialization.rb, line 15
def camelize_key(key, first_upper = true)
  if key.is_a? Symbol
    camelize(key.to_s, first_upper).to_sym
  elsif key.is_a? String
    camelize(key, first_upper)
  else
    key # can't camelize anything except strings and symbols
  end
end
capitalize_first(word) click to toggle source
# File lib/xero-ruby/string_serialization.rb, line 46
def capitalize_first(word)
  split = word.split('')
  "#{split[0].capitalize}#{split[1..-1].join}"
end
gsubbed(str, pattern, extra = "") click to toggle source
# File lib/xero-ruby/string_serialization.rb, line 38
def gsubbed(str, pattern, extra = "")
  key_map_scronyms = {}
  str = str.gsub(pattern) do
    extra + (key_map_scronyms[Regexp.last_match(1)] || capitalize_first(Regexp.last_match(1)))
  end
  str
end
to_camel_keys(value = self) click to toggle source

START - Re-serializes snake_cased params to PascalCase required by XeroAPI

# File lib/xero-ruby/string_serialization.rb, line 4
def to_camel_keys(value = self)
  case value
  when Array
    value.map { |v| to_camel_keys(v) }
  when Hash
    Hash[value.map { |k, v| [camelize_key(k), to_camel_keys(v)] }]
  else
    value
  end
end