Class: Etna::Cwl::ArrayLoader

Inherits:
Loader
  • Object
show all
Defined in:
lib/etna/cwl.rb

Instance Method Summary collapse

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