module ReadyTalk::Util

Public Class Methods

camelize(key) click to toggle source
# File lib/readytalk/util.rb, line 38
def self.camelize(key)
  str = key.to_s
  return str unless str.include?('_')

  str.downcase.gsub!(/(?:_|(\/))([a-z\d]*)/) { $2.capitalize }
end
camelize_hash(hash) click to toggle source
# File lib/readytalk/util.rb, line 19
def self.camelize_hash(hash)
  return {} if hash.nil?

  Hash[hash.map { |k, v| [camelize(k), v] }]
end
create_helper_object(name, *args) click to toggle source
# File lib/readytalk/util.rb, line 45
def self.create_helper_object(name, *args)
  klass = Class.new(ReadyTalkObject)
  Object.const_set(name, klass)
  klass.send(:new, *args)
end
format_hash(hash) click to toggle source
# File lib/readytalk/util.rb, line 4
def self.format_hash(hash)
  return {} if hash.nil?
  rv = {}
  hash.each do |k, v|
    if v.is_a?(Hash)
      nested = format_hash(v)
      nested.each { |kn, vn| rv["#{camelize(k)}.#{kn}"] = vn }
    else
      rv[camelize(k)] = v
    end
  end

  return rv
end
new_helper_object(data, object_key) click to toggle source
# File lib/readytalk/util.rb, line 51
def self.new_helper_object(data, object_key)
  klass = get_object_class(object_key)
  klass.send(:new, data, object_key)
end
new_list_object(data, list_key, *data_keys) click to toggle source
# File lib/readytalk/util.rb, line 56
def self.new_list_object(data, list_key, *data_keys)
  klass = get_object_class(list_key)
  ReadyTalkList.new(data, list_key, klass, data_keys)
end
parameterize(key) click to toggle source
# File lib/readytalk/util.rb, line 31
def self.parameterize(key)
  str = key.to_s
  return str if str.include?('_')

  str.gsub(/([A-Z])/) { "_#{$1.downcase}" }
end
parameterize_hash(hash) click to toggle source
# File lib/readytalk/util.rb, line 25
def self.parameterize_hash(hash)
  return {} if hash.nil?

  Hash[hash.map { |k, v| [parameterize(k), v] }]
end

Private Class Methods

create_object_class(key) click to toggle source
# File lib/readytalk/util.rb, line 76
def self.create_object_class(key)
  name = camelize(key)
  name = "#{name[0].upcase}#{name[1..-1]}"
  klass = Class.new(ReadyTalkObject)

  ReadyTalk.const_set(name, klass)
  return klass
end
get_object_class(key) click to toggle source
# File lib/readytalk/util.rb, line 62
def self.get_object_class(key)
  @@object_classes ||= {
    recording: Recording,
    meeting: Meeting
  }
  klass = @@object_classes[key]
  if klass.nil?
    klass = create_object_class(key)
    @@object_classes[key] = klass
  end

  return klass
end