Sha256: 4cce327fc342a5df5f16814f6a8ce1444abfc54a4b95fdf0250822895739af09
Contents?: true
Size: 1.62 KB
Versions: 9
Compression:
Stored size: 1.62 KB
Contents
require 'uri' module ChargeBee class Model def initialize(values, sub_types={}) @values = values @sub_types = sub_types end def to_s(*args) JSON.pretty_generate(@values) end def inspect() "#<#{self.class}:0x#{self.object_id.to_s(16)} > JSON: " + JSON.pretty_generate(@values) end def load(values) instance_eval do values.each do |k, v| set_val = nil case v when Hash set_val = (@sub_types[k] != nil) ? @sub_types[k].construct(v) : v when Array if(@sub_types[k] != nil) set_val = v.map { |item| @sub_types[k].construct(item)} else set_val = v end else set_val = v end instance_variable_set("@#{k}", set_val) end end end def method_missing(m, *args, &block) if(@values.has_key?(m)) return @values[m] elsif(m[0,3] == "cf_") # All the custom fields start with prefix cf_. return nil end puts "There's no method called #{m} #{args} here -- please try again." puts @values end def self.uri_path(*paths) url = "" for path in paths if(path.nil? || path.strip.length < 1) raise "Id is empty or nil" end url = "#{url}/#{URI.encode(path.strip)}" end return url end def self.construct(values, sub_types = {}) if(values != nil) obj = self.new(values, sub_types) obj.load(values) obj end end end end
Version data entries
9 entries across 9 versions & 1 rubygems