Class: Roadie::ProviderList
- Inherits:
-
Object
- Object
- Roadie::ProviderList
- 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
-
.empty ⇒ Object
Returns a new empty list.
-
.wrap(*providers) ⇒ Object
Wrap a single provider, or a list of providers into a ProviderList.
Instance Method Summary collapse
- #<< ⇒ Object
- #each ⇒ Object
- #empty? ⇒ Object
- #find_stylesheet(name) ⇒ Stylesheet?
-
#find_stylesheet!(name) ⇒ Stylesheet
Tries to find the given stylesheet and raises an ProvidersFailed error if no provider could find the asset.
-
#initialize(providers) ⇒ ProviderList
constructor
A new instance of ProviderList.
- #last ⇒ Object
- #pop ⇒ Object
- #push ⇒ Object
- #shift ⇒ Object
- #size ⇒ Object
-
#to_ary ⇒ Object
ProviderList can be coerced to an array.
- #to_s ⇒ Object
- #unshift ⇒ Object
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
.empty ⇒ Object
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.
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
95 |
# File 'lib/roadie/provider_list.rb', line 95 def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last |
#each ⇒ Object
95 |
# File 'lib/roadie/provider_list.rb', line 95 def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last |
#empty? ⇒ Object
95 |
# File 'lib/roadie/provider_list.rb', line 95 def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last |
#find_stylesheet(name) ⇒ Stylesheet?
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.
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 |
#last ⇒ Object
95 |
# File 'lib/roadie/provider_list.rb', line 95 def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last |
#pop ⇒ Object
95 |
# File 'lib/roadie/provider_list.rb', line 95 def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last |
#push ⇒ Object
95 |
# File 'lib/roadie/provider_list.rb', line 95 def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last |
#shift ⇒ Object
95 |
# File 'lib/roadie/provider_list.rb', line 95 def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last |
#size ⇒ Object
95 |
# File 'lib/roadie/provider_list.rb', line 95 def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last |
#to_ary ⇒ Object
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_s ⇒ Object
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 |
#unshift ⇒ Object
95 |
# File 'lib/roadie/provider_list.rb', line 95 def_delegators :@providers, :each, :size, :empty?, :push, :<<, :pop, :unshift, :shift, :last |