Improve method layout

This commit is contained in:
Greg Brockman 2012-06-19 23:09:42 -07:00
parent 020177faa5
commit 6031cbf7b1
3 changed files with 39 additions and 19 deletions

View File

@ -2,14 +2,15 @@ module Stripe
class APIResource < StripeObject
def self.url
if self == APIResource
raise NotImplementedError.new("APIResource is an abstract class. You should perform actions on its subclasses (Charge, Customer, etc.)")
raise NotImplementedError.new('APIResource is an abstract class. You should perform actions on its subclasses (Charge, Customer, etc.)')
end
shortname = self.name.split('::')[-1]
"/#{CGI.escape(shortname.downcase)}s"
end
def url
id = self['id']
raise InvalidRequestError.new("Could not determine which URL to request: #{self.class} instance has invalid ID: #{id.inspect}", 'id') unless id
unless id = self['id']
raise InvalidRequestError.new("Could not determine which URL to request: #{self.class} instance has invalid ID: #{id.inspect}", 'id')
end
"#{self.class.url}/#{CGI.escape(id)}"
end
@ -24,7 +25,5 @@ module Stripe
instance.refresh
instance
end
protected
end
end
end

View File

@ -26,7 +26,9 @@ module Stripe
obj
end
def to_s(*args); Stripe::JSON.dump(@values, :pretty => true); end
def to_s(*args)
Stripe::JSON.dump(@values, :pretty => true)
end
def inspect()
id_string = (self.respond_to?(:id) && !self.id.nil?) ? " id=#{self.id}" : ""
@ -62,15 +64,34 @@ module Stripe
k = k.to_sym if k.kind_of?(String)
@values[k]
end
def []=(k, v)
send(:"#{k}=", v)
end
def keys; @values.keys; end
def values; @values.values; end
def to_json(*a); Stripe::JSON.dump(@values); end
def as_json(*a); @values.as_json(*a); end
def to_hash; @values; end
def each(&blk); @values.each(&blk); end
def keys
@values.keys
end
def values
@values.values
end
def to_json(*a)
Stripe::JSON.dump(@values)
end
def as_json(*a)
@values.as_json(*a)
end
def to_hash
@values
end
def each(&blk)
@values.each(&blk)
end
protected

View File

@ -71,13 +71,13 @@ module Stripe
URI.escape(key.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
end
def self.flatten_params(params, parent_key = nil)
def self.flatten_params(params, parent_key=nil)
result = []
params.each do |key, value|
calculated_key = parent_key ? "#{parent_key}[#{encode_key(key)}]" : encode_key(key)
if value.is_a? Hash
if value.is_a?(Hash)
result += flatten_params(value, calculated_key)
elsif value.is_a? Array
elsif value.is_a?(Array)
result += flatten_params_array(value, calculated_key)
else
result << [calculated_key, value]
@ -86,12 +86,12 @@ module Stripe
result
end
def self.flatten_params_array value, calculated_key
def self.flatten_params_array(value, calculated_key)
result = []
value.each do |elem|
if elem.is_a? Hash
if elem.is_a?(Hash)
result += flatten_params(elem, calculated_key)
elsif elem.is_a? Array
elsif elem.is_a?(Array)
result += flatten_params_array(elem, calculated_key)
else
result << ["#{calculated_key}[]", elem]