Sha256: da370bdc69fcb51cfe8647cca38c8677f3615e434dc32c4c2bb7471496252b94

Contents?: true

Size: 1.46 KB

Versions: 23

Compression:

Stored size: 1.46 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) 
      "/#{paths.map{|path| "#{URI.encode(path)}"}.join('/')}"
    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

23 entries across 23 versions & 1 rubygems

Version Path
chargebee-1.6.6 lib/chargebee/models/model.rb
chargebee-1.6.5 lib/chargebee/models/model.rb
chargebee-1.6.4 lib/chargebee/models/model.rb
chargebee-1.6.3 lib/chargebee/models/model.rb
chargebee-1.6.2 lib/chargebee/models/model.rb
chargebee-1.6.1 lib/chargebee/models/model.rb
chargebee-1.6.0 lib/chargebee/models/model.rb
chargebee-1.5.9 lib/chargebee/models/model.rb
chargebee-1.5.8 lib/chargebee/models/model.rb
chargebee-1.5.7 lib/chargebee/models/model.rb
chargebee-1.5.6 lib/chargebee/models/model.rb
chargebee-1.5.5 lib/chargebee/models/model.rb
chargebee-1.5.4 lib/chargebee/models/model.rb
chargebee-1.5.3 lib/chargebee/models/model.rb
chargebee-1.5.2 lib/chargebee/models/model.rb
chargebee-1.5.1 lib/chargebee/models/model.rb
chargebee-1.5.0 lib/chargebee/models/model.rb
chargebee-1.4.9 lib/chargebee/models/model.rb
chargebee-1.4.8 lib/chargebee/models/model.rb
chargebee-1.4.7 lib/chargebee/models/model.rb