Sha256: f9a1639ba500a17e8d2d444475fc6de7bf1b2a2b6174bb67f402ad0d38cf95ef

Contents?: true

Size: 1.25 KB

Versions: 10

Compression:

Stored size: 1.25 KB

Contents

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]
      end
      puts "There's no method called #{m} #{args} here -- please try again."
      puts @values
    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

10 entries across 10 versions & 1 rubygems

Version Path
chargebee-1.3.9 lib/chargebee/models/model.rb
chargebee-1.3.8 lib/chargebee/models/model.rb
chargebee-1.3.7 lib/chargebee/models/model.rb
chargebee-1.3.6 lib/chargebee/models/model.rb
chargebee-1.3.5 lib/chargebee/models/model.rb
chargebee-1.3.4 lib/chargebee/models/model.rb
chargebee-1.3.3 lib/chargebee/models/model.rb
chargebee-1.3.2 lib/chargebee/models/model.rb
chargebee-1.3.1 lib/chargebee/models/model.rb
chargebee-1.3.0 lib/chargebee/models/model.rb