Class: Etna::Cwl::ArrayLoader
Instance Method Summary collapse
-
#initialize(items) ⇒ ArrayLoader
constructor
A new instance of ArrayLoader.
- #load(val) ⇒ Object
Methods inherited from Loader
#as_array, #as_mapped_array, #map, #optional, #or
Constructor Details
#initialize(items) ⇒ ArrayLoader
Returns a new instance of ArrayLoader.
198 199 200 |
# File 'lib/etna/cwl.rb', line 198 def initialize(items) @items = items end |
Instance Method Details
#load(val) ⇒ Object
202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 |
# File 'lib/etna/cwl.rb', line 202 def load(val) unless val.is_a?(Array) raise "Unexpected val #{val.inspect} for array" end [].tap do |result| errors = [] val.each do |item| begin loaded = Cwl.load_item(item, UnionLoader.new(self, @items)) if loaded.is_a?(Array) result.push(*loaded) else result << loaded end rescue => e errors << e.to_s end end unless errors.empty? raise errors.join("\n") end end end |