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.
7
8
9
10
|
# File 'lib/packer/dataobject.rb', line 7
def initialize
self.data = {}
self.required = []
end
|
Instance Attribute Details
#data ⇒ Object
Returns the value of attribute data.
4
5
6
|
# File 'lib/packer/dataobject.rb', line 4
def data
@data
end
|
#required ⇒ Object
Returns the value of attribute required.
5
6
7
|
# File 'lib/packer/dataobject.rb', line 5
def required
@required
end
|
Instance Method Details
#__add_array_of_array_of_strings(key, values, exclusives = []) ⇒ Object
62
63
64
65
66
67
68
69
70
|
# File 'lib/packer/dataobject.rb', line 62
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(&:to_s))
end
end
|
#__add_array_of_hashes(key, values, exclusives = []) ⇒ Object
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/packer/dataobject.rb', line 72
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
56
57
58
59
60
|
# File 'lib/packer/dataobject.rb', line 56
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(&:to_s)
end
|
#__add_boolean(key, bool, exclusives = []) ⇒ Object
95
96
97
98
99
100
101
102
|
# File 'lib/packer/dataobject.rb', line 95
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
104
105
106
107
108
109
110
111
|
# File 'lib/packer/dataobject.rb', line 104
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
90
91
92
93
|
# File 'lib/packer/dataobject.rb', line 90
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
85
86
87
88
|
# File 'lib/packer/dataobject.rb', line 85
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
47
48
49
50
51
52
53
54
|
# File 'lib/packer/dataobject.rb', line 47
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
34
35
36
37
38
|
# File 'lib/packer/dataobject.rb', line 34
def add_required(*keys)
keys.each do |k|
self.required.push(k)
end
end
|
#deep_copy ⇒ Object
40
41
42
|
# File 'lib/packer/dataobject.rb', line 40
def deep_copy
Marshal.load(Marshal.dump(self.data))
end
|
#validate ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/packer/dataobject.rb', line 15
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
|