Module: Musa::Series::Serie::WithSources

Included in:
Constructors::QueueSerie
Defined in:
lib/musa-dsl/series/base-series.rb

Overview

Mixin for series with multiple source dependencies.

Provides sources and sources= accessors for series that depend on multiple upstream series (as Array or Hash).

Examples:

Usage with Array

class MergeSerie
  include Serie::Base
  include Serie::WithSources

  def initialize(*series)
    self.sources = series
    init
  end
end

Usage with Hash

class NamedSourcesSerie
  include Serie::Base
  include Serie::WithSources

  def initialize(melody:, rhythm:)
    self.sources = { melody: melody, rhythm: rhythm }
    init
  end
end

See Also:

Instance Method Summary collapse

Instance Method Details

#sourcesArray<Serie>, ...

Returns upstream source series.

Returns:



1232
1233
1234
# File 'lib/musa-dsl/series/base-series.rb', line 1232

def sources
  @sources
end

#sources=(series) ⇒ Object

Sets the sources series.

Parameters:

Raises:

  • (ArgumentError)

    if series is not a Hash or Array



1240
1241
1242
1243
1244
1245
1246
# File 'lib/musa-dsl/series/base-series.rb', line 1240

def sources=(series)
  unless series.is_a?(Hash) || series.is_a?(Array)
    raise ArgumentError, "New series for sources should be a Hash or an Array instead of a #{series.class.name}"
  end
  @sources = series
  send(:try_to_resolve_undefined_state_if_needed)
end