class Recruitee::Resource

Attributes

client[R]
properties[R]

Public Class Methods

new(client, properties) click to toggle source
# File lib/recruitee/resource.rb, line 7
def initialize(client, properties)
  @client = client
  @properties = deep_symbolize_keys(properties)
end

Public Instance Methods

[](key) click to toggle source
# File lib/recruitee/resource.rb, line 12
def [](key)
  @properties[key.to_sym]
end
[]=(key, value) click to toggle source
# File lib/recruitee/resource.rb, line 16
def []=(key, value)
  send(:"#{key}=", value)
end
method_missing(name, *args) click to toggle source
Calls superclass method
# File lib/recruitee/resource.rb, line 20
def method_missing(name, *args)
  if name.to_s.end_with?('=')
    attr = name.to_s[0...-1].to_sym
    @properties[attr] = args.first
  elsif @properties.key?(name)
    @properties[name]
  else
    super
  end
end
respond_to_missing?(name, include_private = false) click to toggle source
Calls superclass method
# File lib/recruitee/resource.rb, line 31
def respond_to_missing?(name, include_private = false)
  attr = name.to_s.end_with?('=') ? name.to_s[0...-1].to_sym : name
  @properties.key?(attr) || super
end
to_s() click to toggle source
# File lib/recruitee/resource.rb, line 36
def to_s
  values = @properties.map { |k, v| "#{k}: #{v}" }.join(' ')
  "<#{self.class.name} #{values}>"
end

Private Instance Methods

deep_symbolize_keys(object) click to toggle source
# File lib/recruitee/resource.rb, line 45
def deep_symbolize_keys(object)
  deep_transform_keys(object) do |key|
    begin
      key.to_sym
    rescue StandardError
      key
    end
  end
end
deep_transform_keys(object) { |key| ... } click to toggle source
# File lib/recruitee/resource.rb, line 55
def deep_transform_keys(object, &block)
  case object
  when Hash
    object.each_with_object({}) do |(key, value), result|
      result[yield(key)] = deep_transform_keys(value, &block)
    end
  when Array
    object.map { |e| deep_transform_keys(e, &block) }
  else
    object
  end
end