module Sprockets::Transformers

def compose_transformers(transformers, types, preprocessors, postprocessors)

Returns Processor.

types - Array of mime type steps
transformers - Two level Hash of a source mime type to a target mime type

function.
Internal: Compose multiple transformer steps into a single processor
def compose_transformers(transformers, types, preprocessors, postprocessors)
  if types.length < 2
    raise ArgumentError, "too few transform types: #{types.inspect}"
  end
  processors = types.each_cons(2).map { |src, dst|
    unless processor = transformers[src][dst]
      raise ArgumentError, "missing transformer for type: #{src} to #{dst}"
    end
    processor
  }
  compose_transformer_list processors, preprocessors, postprocessors
end