module Intercom::Utils

Public Class Methods

camelize(snake_cased_word) click to toggle source
# File lib/intercom/utils.rb, line 28
def camelize(snake_cased_word)
  snake_cased_word.split(/_/).map(&:capitalize).join
end
constantize(camel_cased_word) click to toggle source

the constantize method that exists in rails to allow for ruby 1.9 to get namespaced constants

# File lib/intercom/utils.rb, line 17
def constantize(camel_cased_word)
  names = camel_cased_word.split('::')
  names.shift if names.empty? || names.first.empty?

  constant = Object
  names.each do |name|
    constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
  end
  constant
end
constantize_resource_name(resource_name) click to toggle source
# File lib/intercom/utils.rb, line 46
def constantize_resource_name(resource_name)
  class_name = camelize Utils.singularize(resource_name.capitalize)
  define_lightweight_class(class_name) unless Intercom.const_defined?(class_name, false)
  namespaced_class_name = "Intercom::#{class_name}"
  constantize namespaced_class_name
end
constantize_singular_resource_name(resource_name) click to toggle source
# File lib/intercom/utils.rb, line 53
def constantize_singular_resource_name(resource_name)
  class_name = resource_name.split('_').map(&:capitalize).join
  define_lightweight_class(class_name) unless Intercom.const_defined?(class_name, false)
  namespaced_class_name = "Intercom::#{class_name}"
  constantize namespaced_class_name
end
define_lightweight_class(class_name) click to toggle source
# File lib/intercom/utils.rb, line 60
def define_lightweight_class(class_name)
  new_class_definition = Class.new(Object) do
    include Traits::ApiResource
  end
  Intercom.const_set(class_name, new_class_definition)
end
entity_key_from_type(type) click to toggle source
# File lib/intercom/utils.rb, line 67
def entity_key_from_type(type)
  return 'data' if type == 'list'

  is_list = type.split('.')[1] == 'list'
  entity_name = type.split('.')[0]
  return Utils.pluralize(entity_name) if entity_name == 'event'
  is_list ? Utils.pluralize(entity_name) : entity_name
end
maybe_underscore_name(resource_name) click to toggle source
# File lib/intercom/utils.rb, line 38
def maybe_underscore_name(resource_name)
  resource_name.gsub!(/(.)([A-Z])/, '\1_\2') || resource_name
end
pluralize(str) click to toggle source
# File lib/intercom/utils.rb, line 10
def pluralize(str)
  return str.gsub(/y$/, 'ies') if str =~ /y$/

  "#{str}s"
end
resource_class_to_collection_name(resource_class) click to toggle source
# File lib/intercom/utils.rb, line 42
def resource_class_to_collection_name(resource_class)
  Utils.pluralize(resource_class_to_singular_name(resource_class))
end
resource_class_to_singular_name(resource_class) click to toggle source
# File lib/intercom/utils.rb, line 32
def resource_class_to_singular_name(resource_class)
  resource_name = resource_class.to_s.split('::')[-1]
  resource_name = maybe_underscore_name(resource_name)
  resource_name.downcase
end
singularize(str) click to toggle source
# File lib/intercom/utils.rb, line 6
def singularize(str)
  str.gsub(/ies$/, 'y').gsub(/s$/, '')
end