module Sprockets::Processing

‘Processing` is an internal mixin whose public methods are exposed on the `Environment` and `CachedEnvironment` classes.

Public Instance Methods

bundle_processors() click to toggle source

Bundle Processors are ran on concatenated assets rather than individual files.

# File lib/sprockets/processing.rb, line 95
def bundle_processors
  config[:bundle_processors]
end
pipelines() click to toggle source
# File lib/sprockets/processing.rb, line 14
def pipelines
  config[:pipelines]
end
postprocessors() click to toggle source

Postprocessors are ran after Preprocessors and Engine processors.

# File lib/sprockets/processing.rb, line 39
def postprocessors
  config[:postprocessors]
end
preprocessors() click to toggle source

Preprocessors are ran before Postprocessors and Engine processors.

# File lib/sprockets/processing.rb, line 33
def preprocessors
  config[:preprocessors]
end
Also aliased as: processors
processors()
Alias for: preprocessors
register_bundle_metadata_reducer(mime_type, key, *args, &block) click to toggle source

Public: Register bundle metadata reducer function.

Examples

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

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

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

Returns nothing.

# File lib/sprockets/processing.rb, line 137
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
register_bundle_processor(*args, &block) click to toggle source

Registers a new Bundle Processor ‘klass` for `mime_type`.

register_bundle_processor  'application/javascript', Sprockets::DirectiveProcessor

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

register_bundle_processor 'application/javascript' do |input|
  input[:data].gsub(...)
end
# File lib/sprockets/processing.rb, line 109
def register_bundle_processor(*args, &block)
  register_config_processor(:bundle_processors, *args, &block)
end
register_pipeline(name, proc = nil, &block) click to toggle source

Registers a pipeline that will be called by ‘call_processor` method.

# File lib/sprockets/processing.rb, line 19
def register_pipeline(name, proc = nil, &block)
  proc ||= block

  self.config = hash_reassoc(config, :pipeline_exts) do |pipeline_exts|
    pipeline_exts.merge(".#{name}".freeze => name.to_sym)
  end

  self.config = hash_reassoc(config, :pipelines) do |pipelines|
    pipelines.merge(name.to_sym => proc)
  end
end
register_postprocessor(*args, &block) click to toggle source

Registers a new Postprocessor ‘klass` for `mime_type`.

register_postprocessor 'application/javascript', Sprockets::DirectiveProcessor

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

register_postprocessor 'application/javascript' do |input|
  input[:data].gsub(...)
end
# File lib/sprockets/processing.rb, line 69
def register_postprocessor(*args, &block)
  register_config_processor(:postprocessors, *args, &block)
  compute_transformers!(self.config[:registered_transformers])
end
register_preprocessor(*args, &block) click to toggle source

Registers a new Preprocessor ‘klass` for `mime_type`.

register_preprocessor 'text/css', Sprockets::DirectiveProcessor

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

register_preprocessor 'text/css' do |input|
  input[:data].gsub(...)
end
# File lib/sprockets/processing.rb, line 53
def register_preprocessor(*args, &block)
  register_config_processor(:preprocessors, *args, &block)
  compute_transformers!(self.config[:registered_transformers])
end
Also aliased as: register_processor
register_processor(*args, &block)
unregister_bundle_processor(*args) click to toggle source

Remove Bundle Processor ‘klass` for `mime_type`.

unregister_bundle_processor 'application/javascript', Sprockets::DirectiveProcessor
# File lib/sprockets/processing.rb, line 117
def unregister_bundle_processor(*args)
  unregister_config_processor(:bundle_processors, *args)
end
unregister_postprocessor(*args) click to toggle source

Remove Postprocessor ‘klass` for `mime_type`.

unregister_postprocessor 'text/css', Sprockets::DirectiveProcessor
# File lib/sprockets/processing.rb, line 88
def unregister_postprocessor(*args)
  unregister_config_processor(:postprocessors, *args)
  compute_transformers!(self.config[:registered_transformers])
end
unregister_preprocessor(*args) click to toggle source

Remove Preprocessor ‘klass` for `mime_type`.

unregister_preprocessor 'text/css', Sprockets::DirectiveProcessor
# File lib/sprockets/processing.rb, line 78
def unregister_preprocessor(*args)
  unregister_config_processor(:preprocessors, *args)
  compute_transformers!(self.config[:registered_transformers])
end
Also aliased as: unregister_processor
unregister_processor(*args)

Protected Instance Methods

build_processors_uri(type, file_type, pipeline) click to toggle source
# File lib/sprockets/processing.rb, line 168
def build_processors_uri(type, file_type, pipeline)
  query = encode_uri_query_params(
    type: type,
    file_type: file_type,
    pipeline: pipeline
  )
  "processors:#{query}"
end
default_processors_for(type, file_type) click to toggle source
# File lib/sprockets/processing.rb, line 186
def default_processors_for(type, file_type)
  bundled_processors = config[:bundle_processors][type]
  if bundled_processors.any?
    bundled_processors
  else
    self_processors_for(type, file_type)
  end
end
processors_for(type, file_type, pipeline) click to toggle source
# File lib/sprockets/processing.rb, line 177
def processors_for(type, file_type, pipeline)
  pipeline ||= :default
  if fn = config[:pipelines][pipeline.to_sym]
    fn.call(self, type, file_type)
  else
    raise Error, "no pipeline: #{pipeline}"
  end
end
resolve_processors_cache_key_uri(uri) click to toggle source
# File lib/sprockets/processing.rb, line 162
def resolve_processors_cache_key_uri(uri)
  params = parse_uri_query_params(uri[11..-1])
  processors = processors_for(params[:type], params[:file_type], params[:pipeline])
  processors_cache_keys(processors)
end
self_processors_for(type, file_type) click to toggle source
# File lib/sprockets/processing.rb, line 195
def self_processors_for(type, file_type)
  processors = []

  processors.concat config[:postprocessors][type]
  if type != file_type && processor = config[:transformers][file_type][type]
    processors << processor
  end
  processors.concat config[:preprocessors][file_type]

  if processors.any? || mime_type_charset_detecter(type)
    processors << FileReader
  end

  processors
end

Private Instance Methods

register_config_processor(type, mime_type, processor = nil, &block) click to toggle source
# File lib/sprockets/processing.rb, line 212
def register_config_processor(type, mime_type, processor = nil, &block)
  processor ||= block

  self.config = hash_reassoc(config, type, mime_type) do |processors|
    processors.unshift(processor)
    processors
  end
end
unregister_config_processor(type, mime_type, processor) click to toggle source
# File lib/sprockets/processing.rb, line 221
def unregister_config_processor(type, mime_type, processor)
  self.config = hash_reassoc(config, type, mime_type) do |processors|
    processors.delete_if { |p| p == processor || p.class == processor }
    processors
  end
end