module Sprockets::Processing

def build_processors_uri(type, file_type, engine_extnames, pipeline)

def build_processors_uri(type, file_type, engine_extnames, pipeline)
  engines = engine_extnames.join(',') if engine_extnames.any?
  query = encode_uri_query_params(
    type: type,
    file_type: file_type,
    engines: engines,
    pipeline: pipeline
  )
  "processors:#{query}"
end

def bundle_processors

individual files.
Bundle Processors are ran on concatenated assets rather than
def bundle_processors
  config[:bundle_processors]
end

def default_processors_for(type, file_type, engine_extnames)

def default_processors_for(type, file_type, engine_extnames)
  bundled_processors = config[:bundle_processors][type]
  if bundled_processors.any?
    bundled_processors
  else
    self_processors_for(type, file_type, engine_extnames)
  end
end

def pipelines

def pipelines
  config[:pipelines]
end

def postprocessors

Postprocessors are ran after Preprocessors and Engine processors.
def postprocessors
  config[:postprocessors]
end

def preprocessors

processors.
Preprocessors are ran before Postprocessors and Engine
def preprocessors
  config[:preprocessors]
end

def processors_for(type, file_type, engine_extnames, pipeline)

def processors_for(type, file_type, engine_extnames, pipeline)
  pipeline ||= :default
  config[:pipelines][pipeline.to_sym].call(self, type, file_type, engine_extnames)
end

def register_bundle_metadata_reducer(mime_type, key, *args, &block)

Returns nothing.

block - Proc accepting the memo accumulator and current value
initial - Initial memo to pass to the reduce funciton (default: nil)
key - Symbol metadata key
mime_type - String MIME Type. Use '*/*' applies to all types.

}
total + count
Sprockets.register_bundle_metadata_reducer 'text/css', :selector_count, 0 { |total, count|

Sprockets.register_bundle_metadata_reducer 'application/javascript', :jshint_errors, [], :+

Examples

Public: Register bundle metadata reducer function.
def register_bundle_metadata_reducer(mime_type, key, *args, &block)
  case args.size
  when 0
    reducer = block
  when 1
    if block_given?
      initial = args[0]
      reducer = block
    else
      initial = nil
      reducer = args[0].to_proc
    end
  when 2
    initial = args[0]
    reducer = args[1].to_proc
  else
    raise ArgumentError, "wrong number of arguments (#{args.size} for 0..2)"
  end
  self.config = hash_reassoc(config, :bundle_reducers, mime_type) do |reducers|
    reducers.merge(key => [initial, reducer])
  end
end

def register_bundle_processor(*args, &block)


end
data.gsub(...)
register_bundle_processor 'application/javascript', :my_processor do |context, data|

A block can be passed for to create a shorthand processor.

register_bundle_processor 'application/javascript', Sprockets::DirectiveProcessor

Registers a new Bundle Processor `klass` for `mime_type`.
def register_bundle_processor(*args, &block)
  register_config_processor(:bundle_processors, *args, &block)
end

def register_config_processor(type, mime_type, klass, proc = nil, &block)

def register_config_processor(type, mime_type, klass, proc = nil, &block)
  proc ||= block
  processor = wrap_processor(klass, proc)
  self.config = hash_reassoc(config, type, mime_type) do |processors|
    processors.unshift(processor)
    processors
  end
  compute_transformers!
end

def register_pipeline(name, proc = nil, &block)

def register_pipeline(name, proc = nil, &block)
  proc ||= block
  self.config = hash_reassoc(config, :pipelines) do |pipelines|
    pipelines.merge(name.to_sym => proc)
  end
end

def register_postprocessor(*args, &block)


end
data.gsub(...)
register_postprocessor 'application/javascript', :my_processor do |context, data|

A block can be passed for to create a shorthand processor.

register_postprocessor 'application/javascript', Sprockets::DirectiveProcessor

Registers a new Postprocessor `klass` for `mime_type`.
def register_postprocessor(*args, &block)
  register_config_processor(:postprocessors, *args, &block)
end

def register_preprocessor(*args, &block)


end
data.gsub(...)
register_preprocessor 'text/css', :my_processor do |context, data|

A block can be passed for to create a shorthand processor.

register_preprocessor 'text/css', Sprockets::DirectiveProcessor

Registers a new Preprocessor `klass` for `mime_type`.
def register_preprocessor(*args, &block)
  register_config_processor(:preprocessors, *args, &block)
end

def resolve_processors_cache_key_uri(uri)

def resolve_processors_cache_key_uri(uri)
  params = parse_uri_query_params(uri[11..-1])
  params[:engine_extnames] = params[:engines] ? params[:engines].split(',') : []
  processors = processors_for(params[:type], params[:file_type], params[:engine_extnames], params[:pipeline])
  processors_cache_keys(processors)
end

def self_processors_for(type, file_type, engine_extnames)

def self_processors_for(type, file_type, engine_extnames)
  processors = []
  processors.concat config[:postprocessors][type]
  if type != file_type && processor = config[:transformers][file_type][type]
    processors << processor
  end
  processors.concat engine_extnames.map { |ext| engines[ext] }
  processors.concat config[:preprocessors][file_type]
  if processors.any? || mime_type_charset_detecter(type)
    processors << FileReader
  end
  processors
end

def unregister_bundle_processor(*args)


unregister_bundle_processor 'application/javascript', Sprockets::DirectiveProcessor

Remove Bundle Processor `klass` for `mime_type`.
def unregister_bundle_processor(*args)
  unregister_config_processor(:bundle_processors, *args)
end

def unregister_config_processor(type, mime_type, klass)

def unregister_config_processor(type, mime_type, klass)
  if klass.is_a?(String) || klass.is_a?(Symbol)
    klass = config[type][mime_type].detect do |cls|
      cls.respond_to?(:name) && cls.name == "Sprockets::LegacyProcProcessor (#{klass})"
    end
  end
  self.config = hash_reassoc(config, type, mime_type) do |processors|
    processors.delete(klass)
    processors
  end
  compute_transformers!
end

def unregister_postprocessor(*args)


unregister_postprocessor 'text/css', Sprockets::DirectiveProcessor

Remove Postprocessor `klass` for `mime_type`.
def unregister_postprocessor(*args)
  unregister_config_processor(:postprocessors, *args)
end

def unregister_preprocessor(*args)


unregister_preprocessor 'text/css', Sprockets::DirectiveProcessor

Remove Preprocessor `klass` for `mime_type`.
def unregister_preprocessor(*args)
  unregister_config_processor(:preprocessors, *args)
end

def wrap_processor(klass, proc)

def wrap_processor(klass, proc)
  if !proc
    if klass.respond_to?(:call)
      klass
    else
      LegacyTiltProcessor.new(klass)
    end
  elsif proc.respond_to?(:arity) && proc.arity == 2
    LegacyProcProcessor.new(klass.to_s, proc)
  else
    proc
  end
end