class Tosuto::Resource

Public Class Methods

attr_collections(hash) click to toggle source
# File lib/tosuto/resource.rb, line 18
def self.attr_collections(hash)
  hash.each do |name, klass|
    attr_reader(name)
    define_method("#{name}=") { |ary|
      instance_variable_set("@#{name}", parse_collection(ary, klass))
    }
  end
end
attr_objects(hash) click to toggle source
# File lib/tosuto/resource.rb, line 9
def self.attr_objects(hash)
  hash.each do |name, klass|
    attr_reader(name)
    define_method("#{name}=") { |obj|
      instance_variable_set("@#{name}", parse_object(obj, klass))
    }
  end
end
encode_form_data(body) click to toggle source
# File lib/tosuto/resource.rb, line 5
def self.encode_form_data(body)
  body.map { |key, value| "#{key}=#{CGI.escape(value)}" }.join("&")
end

Public Instance Methods

inspect() click to toggle source
# File lib/tosuto/resource.rb, line 63
def inspect
  "#<#{self.class} #{[@guid, @name || @display_name].join(" ")}>"
end
parse_collection(ary, klass) click to toggle source
# File lib/tosuto/resource.rb, line 49
def parse_collection(ary, klass)
  ary.map { |obj|
    parse_object(obj, klass)
  }
end
parse_object(obj, klass) click to toggle source
# File lib/tosuto/resource.rb, line 55
def parse_object(obj, klass)
  if obj.is_a?(klass)
    obj
  else
    klass.new(obj)
  end
end
set_attribute(key, value) click to toggle source
# File lib/tosuto/resource.rb, line 36
def set_attribute(key, value)
  setter = "#{underscore(key)}="
  send(setter, value) if respond_to?(setter)
end
set_attributes(hash) click to toggle source
# File lib/tosuto/resource.rb, line 41
def set_attributes(hash)
  return unless hash.is_a?(Hash)

  hash.each do |key, value|
    set_attribute(key, value)
  end
end
underscore(value) click to toggle source
# File lib/tosuto/resource.rb, line 27
def underscore(value)
  return value unless /[A-Z-]/.match?(value)
  word = value.to_s.gsub(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
  word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
  word.tr!("-", "_")
  word.downcase!
  word
end