Sha256: 00d98e16ee8485a35457b681c5423a8e4619af6e210cc48b26bdca37f84e18bf

Contents?: true

Size: 773 Bytes

Versions: 16

Compression:

Stored size: 773 Bytes

Contents

module Tamber
  class TamberObject

    def initialize(values={})
      values.each do |k,v|
        val = self.class.curvert(v)
        self.instance_variable_set("@#{k}", val)
        self.singleton_class.send(:attr_accessor, k)
      end
    end

    def self.construct_from(values)
      values = Tamber::Util.symbolize_names(values)
      self.new(values)
    end

    def self.curvert(values={})
      case values
      when Hash
        if values.has_key?(:object)
          Tamber::Util.object_classes.fetch(values[:object],TamberObject).new(values)
        else
          values.each do |k,v|
            values[k] = curvert(v)
          end
        end
      when Array
        values.map { |i| curvert(i) }
      else
        values
      end
    end

  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
tamber-0.2.2 lib/tamber/tamber_object.rb
tamber-0.2.1 lib/tamber/tamber_object.rb
tamber-0.2.0 lib/tamber/tamber_object.rb
tamber-0.1.14 lib/tamber/tamber_object.rb
tamber-0.1.13 lib/tamber/tamber_object.rb
tamber-0.1.12 lib/tamber/tamber_object.rb
tamber-0.1.11 lib/tamber/tamber_object.rb
tamber-0.1.10 lib/tamber/tamber_object.rb
tamber-0.1.9 lib/tamber/tamber_object.rb
tamber-0.1.8 lib/tamber/tamber_object.rb
tamber-0.1.7 lib/tamber/tamber_object.rb
tamber-0.1.4 lib/tamber/tamber_object.rb
tamber-0.1.3 lib/tamber/tamber_object.rb
tamber-0.1.2 lib/tamber/tamber_object.rb
tamber-0.1.1 lib/tamber/tamber_object.rb
tamber-0.1.0 lib/tamber/tamber_object.rb