class Amber::Model

Public Class Methods

new() click to toggle source
# File lib/amber/model.rb, line 2
def initialize
  @data = {}
  @data["id"] = Amber::Data::IntegerData.new
end

Public Instance Methods

[](key) click to toggle source
# File lib/amber/model.rb, line 7
def [](key)
  if @data.has_key? key
    return @data[key]
  end
end
[]=(key, value) click to toggle source
# File lib/amber/model.rb, line 17
def []=(key, value)
  if value.is_a? Amber::Data
    @data[key] = value
    self.define_singleton_method key.to_sym do
      @data[key]
    end
  end
end
has_key?(key) click to toggle source
# File lib/amber/model.rb, line 13
def has_key?(key)
  @data.has_key? key
end
keys() click to toggle source
# File lib/amber/model.rb, line 26
def keys
  @data.keys
end
pack(map = nil) click to toggle source
# File lib/amber/model.rb, line 30
def pack(map = nil)
  data = {}
  if map.is_a? Hash
    map.each do |key, value|
      if @data.has_key? key
        data_item = @data[key]
        data[value] = data_item.value
      end
    end
  else
    @data.each do |key, value|
      data[key] = value.value
    end
  end
  data
end
struct(map = nil, name_only = false) click to toggle source
# File lib/amber/model.rb, line 67
def struct(map = nil, name_only = false)
  struct = {}
  if map.is_a? Hash
    map.each do |key, value|
      if @data.has_key? key
        data_item = @data[key]
        if name_only
          struct[value] = data_item.class.to_s.match('\w+$').to_s
          next
        end
        struct[value] = data_item.class.to_s
      end
    end
  else
    @data.each do |key, value|
      if name_only
        struct[key] = value.class.to_s.match('\w+$').to_s
        next
      end
      struct[key] = value.class.to_s
    end
  end
  struct
end
unpack(data, map = nil) click to toggle source
# File lib/amber/model.rb, line 47
def unpack(data, map = nil)
  if data.is_a? Hash
    if map.is_a? Hash
      map.each do |key, value|
        if @data.has_key?(key) && data.has_key?(value)
          data_item = @data[key]
          data_item.value = data[value]
        end
      end
    else
      data.each do |key, value|
        if @data.has_key? key
          data_item = @data[key]
          data_item.value = data[key]
        end
      end
    end
  end
end