Method: Sprockets::Manifest#find

Defined in:
lib/sprockets/manifest.rb

#find(*args) ⇒ Object

Public: Find all assets matching pattern set in environment.

Returns Enumerator of Assets.



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# File 'lib/sprockets/manifest.rb', line 117

def find(*args)
  unless environment
    raise Error, "manifest requires environment for compilation"
  end

  return to_enum(__method__, *args) unless block_given?

  paths, filters = args.flatten.partition { |arg| self.class.simple_logical_path?(arg) }
  filters = filters.map { |arg| self.class.compile_match_filter(arg) }

  environment = self.environment.cached

  paths.each do |path|
    environment.find_all_linked_assets(path) do |asset|
      yield asset
    end
  end

  if filters.any?
    environment.logical_paths do |logical_path, filename|
      if filters.any? { |f| f.call(logical_path, filename) }
        environment.find_all_linked_assets(filename) do |asset|
          yield asset
        end
      end
    end
  end

  nil
end