Class: Etna::Cwl::MapLoader
Instance Method Summary collapse
-
#initialize(items, idKey = nil, valueKey = nil) ⇒ MapLoader
constructor
A new instance of MapLoader.
- #load(val) ⇒ Object
Methods inherited from Loader
#as_array, #as_mapped_array, #map, #optional, #or
Constructor Details
#initialize(items, idKey = nil, valueKey = nil) ⇒ MapLoader
Returns a new instance of MapLoader.
162 163 164 165 166 |
# File 'lib/etna/cwl.rb', line 162 def initialize(items, idKey = nil, valueKey = nil) @items = items @idKey = idKey @valueKey = valueKey end |
Instance Method Details
#load(val) ⇒ Object
168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 |
# File 'lib/etna/cwl.rb', line 168 def load(val) if val.is_a?(Hash) val = [].tap do |result| errors = {} val.keys.sort.each do |k| begin v = val[k] if v.is_a?(Hash) v[@idKey] = k else v = {@idKey => k, @valueKey => v} end result << v rescue => e errors[k] = e.to_s end end unless errors.empty? raise errors.map { |k, v| "#{k}: #{v}" }.join("\n") end end end @items.load(val) end |