Class: Packer::DataObject
- Inherits:
-
Object
- Object
- Packer::DataObject
show all
- Defined in:
- lib/packer/dataobject.rb
Defined Under Namespace
Classes: DataValidationError, ExclusiveKeyError
Instance Attribute Summary collapse
Instance Method Summary
collapse
-
#__add_array_of_array_of_strings(key, values, exclusives = []) ⇒ Object
-
#__add_array_of_hashes(key, values, exclusives = []) ⇒ Object
-
#__add_array_of_strings(key, values, exclusives = []) ⇒ Object
-
#__add_boolean(key, bool, exclusives = []) ⇒ Object
-
#__add_hash(key, data, exclusives = []) ⇒ Object
-
#__add_integer(key, data, exclusives = []) ⇒ Object
-
#__add_string(key, data, exclusives = []) ⇒ Object
-
#__exclusive_key_error(key, exclusives) ⇒ Object
-
#add_required(*keys) ⇒ Object
-
#deep_copy ⇒ Object
-
#initialize ⇒ DataObject
constructor
A new instance of DataObject.
-
#validate ⇒ Object
Constructor Details
Returns a new instance of DataObject.
22
23
24
25
|
# File 'lib/packer/dataobject.rb', line 22
def initialize
self.data = {}
self.required = []
end
|
Instance Attribute Details
#data ⇒ Object
Returns the value of attribute data.
19
20
21
|
# File 'lib/packer/dataobject.rb', line 19
def data
@data
end
|
#required ⇒ Object
Returns the value of attribute required.
20
21
22
|
# File 'lib/packer/dataobject.rb', line 20
def required
@required
end
|
Instance Method Details
#__add_array_of_array_of_strings(key, values, exclusives = []) ⇒ Object
77
78
79
80
81
82
83
84
85
|
# File 'lib/packer/dataobject.rb', line 77
def __add_array_of_array_of_strings(key, values, exclusives = [])
self.__exclusive_key_error(key, exclusives)
raise TypeError.new() unless Array.try_convert(values)
self.data[key.to_s] = []
values.each do |v|
raise TypeError.new() unless Array.try_convert(v)
self.data[key.to_s].push(v.to_ary.map{ |c| c.to_s })
end
end
|
#__add_array_of_hashes(key, values, exclusives = []) ⇒ Object
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/packer/dataobject.rb', line 87
def __add_array_of_hashes(key, values, exclusives = [])
self.__exclusive_key_error(key, exclusives)
raise TypeError.new() unless Array.try_convert(values)
self.data[key.to_s] = []
values.each do |v|
raise TypeError.new() unless v.is_a?(Hash)
self.data[key.to_s].push({})
v.keys.each do |k|
self.data[key.to_s][-1][k] = v[k].to_s
end
end
end
|
#__add_array_of_strings(key, values, exclusives = []) ⇒ Object
71
72
73
74
75
|
# File 'lib/packer/dataobject.rb', line 71
def __add_array_of_strings(key, values, exclusives = [])
self.__exclusive_key_error(key, exclusives)
raise TypeError.new() unless Array.try_convert(values)
self.data[key.to_s] = values.to_ary.map{ |c| c.to_s }
end
|
#__add_boolean(key, bool, exclusives = []) ⇒ Object
110
111
112
113
114
115
116
117
|
# File 'lib/packer/dataobject.rb', line 110
def __add_boolean(key, bool, exclusives = [])
self.__exclusive_key_error(key, exclusives)
if bool
self.data[key.to_s] = true
else
self.data[key.to_s] = false
end
end
|
#__add_hash(key, data, exclusives = []) ⇒ Object
119
120
121
122
123
124
125
126
|
# File 'lib/packer/dataobject.rb', line 119
def __add_hash(key, data, exclusives = [])
self.__exclusive_key_error(key, exclusives)
raise TypeError.new() unless data.is_a?(Hash)
self.data[key.to_s] = {}
data.keys.each do |k|
self.data[key.to_s][k] = data[k].to_s
end
end
|
#__add_integer(key, data, exclusives = []) ⇒ Object
105
106
107
108
|
# File 'lib/packer/dataobject.rb', line 105
def __add_integer(key, data, exclusives = [])
self.__exclusive_key_error(key, exclusives)
self.data[key.to_s] = data.to_i
end
|
#__add_string(key, data, exclusives = []) ⇒ Object
100
101
102
103
|
# File 'lib/packer/dataobject.rb', line 100
def __add_string(key, data, exclusives = [])
self.__exclusive_key_error(key, exclusives)
self.data[key.to_s] = data.to_s
end
|
#__exclusive_key_error(key, exclusives) ⇒ Object
62
63
64
65
66
67
68
69
|
# File 'lib/packer/dataobject.rb', line 62
def __exclusive_key_error(key, exclusives)
exclusives.each do |e|
if self.data.has_key? e
raise ExclusiveKeyError.new("Only one of #{exclusives} can be used at a time")
end
end
true
end
|
#add_required(*keys) ⇒ Object
49
50
51
52
53
|
# File 'lib/packer/dataobject.rb', line 49
def add_required(*keys)
keys.each do |k|
self.required.push(k)
end
end
|
#deep_copy ⇒ Object
55
56
57
|
# File 'lib/packer/dataobject.rb', line 55
def deep_copy
Marshal.load(Marshal.dump(self.data))
end
|
#validate ⇒ Object
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/packer/dataobject.rb', line 30
def validate
self.required.each do |r|
if (r.is_a? Array) && (r.length > 0)
if r.length - (r - self.data.keys).length == 0
raise DataValidationError.new("Missing one required setting from the set #{r}")
end
if r.length - (r - self.data.keys).length > 1
raise DataValidationError.new("Found more than one exclusive setting in data from set #{r}")
end
else
if ! self.data.keys.include? r
raise DataValidationError.new("Missing required setting #{r}")
end
end
end
true
end
|