module Sprockets::Processing

def process_bundle_reducers(assets, reducers)

Returns reduced asset metadata Hash.

reducers - Array of [initial, reducer_proc] pairs
assets - Array of Assets

metadata Hash.
Internal: Run bundle reducers on set of Assets producing a reduced
def process_bundle_reducers(assets, reducers)
  initial = {}
  reducers.each do |k, (v, _)|
    initial[k] = v if v
  end
  assets.reduce(initial) do |h, asset|
    reducers.each do |k, (_, block)|
      value = k == :data ? asset.source : asset.metadata[k]
      h[k]  = h.key?(k) ? block.call(h[k], value) : value
    end
    h
  end
end