Class: Roadie::ProviderList

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Enumerable
Defined in:
lib/roadie/provider_list.rb

Overview

An asset provider that just composes a list of other asset providers.

Give it a list of providers and they will all be tried in order.

ProviderList behaves like an Array, and an asset provider, and can be coerced into an array.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(providers) ⇒ ProviderList

Returns a new instance of ProviderList.



36
37
38
# File 'lib/roadie/provider_list.rb', line 36

def initialize(providers)
  @providers = providers
end

Class Method Details

.emptyObject

Returns a new empty list.



34
# File 'lib/roadie/provider_list.rb', line 34

def self.empty() new([]) end

.wrap(provider_list) ⇒ Object .wrap(provider) ⇒ Object .wrap(provider1, provider2, ...) ⇒ Object

Wrap a single provider, or a list of providers into a Roadie::ProviderList.

Overloads:

  • .wrap(provider_list) ⇒ Object

    Returns The passed in provider_list.

    Parameters:

    Returns:

    • The passed in provider_list

  • .wrap(provider) ⇒ Object

    Returns a new Roadie::ProviderList with just the passed provider in it.

    Parameters:

    • provider (asset provider)

    Returns:

  • .wrap(provider1, provider2, ...) ⇒ Object

    Returns a new Roadie::ProviderList with all the passed providers in it.

    Returns:



25
26
27
28
29
30
31
# File 'lib/roadie/provider_list.rb', line 25

def self.wrap(*providers)
  if providers.size == 1 && providers.first.class == self
    providers.first
  else
    new(providers.flatten)
  end
end

Instance Method Details

#<<Object

See Also:

  • Array#<<


95
# File 'lib/roadie/provider_list.rb', line 95

def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last

#eachObject

See Also:

  • Array#each


95
# File 'lib/roadie/provider_list.rb', line 95

def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last

#empty?Object

See Also:

  • Array#empty?


95
# File 'lib/roadie/provider_list.rb', line 95

def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last

#find_stylesheet(name) ⇒ Stylesheet?

Returns:



41
42
43
44
45
46
47
# File 'lib/roadie/provider_list.rb', line 41

def find_stylesheet(name)
  @providers.each do |provider|
    css = provider.find_stylesheet(name)
    return css if css
  end
  nil
end

#find_stylesheet!(name) ⇒ Stylesheet

Tries to find the given stylesheet and raises an Roadie::ProvidersFailed error if no provider could find the asset.

Returns:

Raises:



53
54
55
56
57
58
59
60
61
62
63
# File 'lib/roadie/provider_list.rb', line 53

def find_stylesheet!(name)
  errors = []
  @providers.each do |provider|
    begin
      return provider.find_stylesheet!(name)
    rescue CssNotFound => error
      errors << error
    end
  end
  raise ProvidersFailed.new(name, self, errors)
end

#lastObject

See Also:

  • Array#last


95
# File 'lib/roadie/provider_list.rb', line 95

def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last

#popObject

See Also:

  • Array#pop


95
# File 'lib/roadie/provider_list.rb', line 95

def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last

#pushObject

See Also:

  • Array#push


95
# File 'lib/roadie/provider_list.rb', line 95

def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last

#shiftObject

See Also:

  • Array#shift


95
# File 'lib/roadie/provider_list.rb', line 95

def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last

#sizeObject

See Also:

  • Array#size


95
# File 'lib/roadie/provider_list.rb', line 95

def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last

#to_aryObject

ProviderList can be coerced to an array. This makes Array#flatten work with it, among other things.



75
# File 'lib/roadie/provider_list.rb', line 75

def to_ary() to_a end

#to_sObject



65
66
67
68
69
70
71
# File 'lib/roadie/provider_list.rb', line 65

def to_s
  list = @providers.map { |provider|
    # Indent every line one level
    provider.to_s.split("\n").join("\n\t")
  }
  "ProviderList: [\n\t#{list.join(",\n\t")}\n]"
end

#unshiftObject

See Also:

  • Array#unshift


95
# File 'lib/roadie/provider_list.rb', line 95

def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last