Class: Amber::Model

Inherits:
Object
  • Object
show all
Defined in:
lib/amber/model.rb

Instance Method Summary collapse

Constructor Details

#initializeModel

Returns a new instance of Model.



2
3
4
5
# File 'lib/amber/model.rb', line 2

def initialize
  @data = {}
  @data["id"] = Amber::Data::IntegerData.new
end

Instance Method Details

#[](key) ⇒ Object



7
8
9
10
11
# File 'lib/amber/model.rb', line 7

def [](key)
  if @data.has_key? key
    return @data[key]
  end
end

#[]=(key, value) ⇒ Object



17
18
19
20
21
22
23
24
# 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) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/amber/model.rb', line 13

def has_key?(key)
  @data.has_key? key
end

#keysObject



26
27
28
# File 'lib/amber/model.rb', line 26

def keys
  @data.keys
end

#pack(map = nil) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 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) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# 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) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# 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