module Condenser::Pipeline

Constants

CONFIG_VARS

Public Class Methods

new(*args, **kws, &block) click to toggle source
Calls superclass method
# File lib/condenser/pipeline.rb, line 15
def initialize(*args, **kws, &block)
  CONFIG_VARS.each do |var_name|
    original_var = self.class.instance_variable_get("@#{var_name}")
    new_var = original_var.dup
    
    if original_var.is_a?(Hash)
      original_var.each do |k, v|
        new_var[k] = v.dup if v.is_a?(Hash) || v.is_a?(Array)
      end
    end

    instance_variable_set("@#{var_name}", new_var)
  end
  super
end
prepended(base) click to toggle source
# File lib/condenser/pipeline.rb, line 6
def self.prepended(base)
  base.extend(self)
  CONFIG_VARS.each do |var|
    base.instance_variable_set("@#{var}", {})
    base.send(:attr_reader, var)
    self.send(:attr_reader, var)
  end
end

Public Instance Methods

clear_pipeline() click to toggle source
# File lib/condenser/pipeline.rb, line 144
def clear_pipeline
  (CONFIG_VARS - [:mime_types, :extensions]).each { |v| self.instance_variable_set("@#{v}", {}) }
end
minifier_for(mime_type) click to toggle source
# File lib/condenser/pipeline.rb, line 112
def minifier_for(mime_type)
  @minifiers[mime_type]
end
pipline_digest() click to toggle source
# File lib/condenser/pipeline.rb, line 62
def pipline_digest
  @pipline_digest ||= Digest::MD5.hexdigest(pipline_hash)
end
pipline_hash() click to toggle source
# File lib/condenser/pipeline.rb, line 51
def pipline_hash
  JSON.generate(pipline_to_json([
    @templates,
    @preprocessors,
    @transformers,
    @postprocessors,
    @minifiers,
    @exporters
  ]))
end
pipline_to_json(values) click to toggle source
# File lib/condenser/pipeline.rb, line 31
def pipline_to_json(values)
  if values.is_a?(Hash)
    values.transform_values do |value|
      pipline_to_json(value)
    end
  elsif values.is_a?(Array)
    values.map do |value|
      pipline_to_json(value)
    end
  elsif values.is_a?(Class) || values.is_a?(Module)
    values.name
  elsif values.is_a?(String)
    @base ? values.delete_prefix(@base) : values
  elsif values.nil? || values == true || values == false || values.is_a?(Symbol) || values.is_a?(Integer) || values.is_a?(Float)
    values
  else
    { values.class.name => pipline_to_json(values.options) }
  end
end
register_exporter(mime_type, engine) click to toggle source
# File lib/condenser/pipeline.rb, line 100
def register_exporter(mime_type, engine)
  @exporters[mime_type] = engine
end
register_mime_type(mime_type, extensions: nil, extension: nil, charset: :default) click to toggle source
# File lib/condenser/pipeline.rb, line 66
def register_mime_type(mime_type, extensions: nil, extension: nil, charset: :default)
  extensions = Array(extensions || extension)

  @mime_types[mime_type] = { extensions: extensions, charset: charset }
  extensions.each { |ext| @extensions[ext] = mime_type }
end
register_minifier(mime_type, engine) click to toggle source
# File lib/condenser/pipeline.rb, line 108
def register_minifier(mime_type, engine)
  @minifiers[mime_type] = engine
end
register_postprocessor(mime_type, engine) click to toggle source
# File lib/condenser/pipeline.rb, line 95
def register_postprocessor(mime_type, engine)
  @postprocessors[mime_type] ||= []
  @postprocessors[mime_type] << engine
end
register_preprocessor(mime_type, engine) click to toggle source
# File lib/condenser/pipeline.rb, line 77
def register_preprocessor(mime_type, engine)
  @preprocessors[mime_type] ||= []
  @preprocessors[mime_type] << engine
end
register_template(mime_type, engine) click to toggle source
# File lib/condenser/pipeline.rb, line 73
def register_template(mime_type, engine)
  @templates[mime_type] = engine
end
register_transformer(from_mime_type, to_mime_type, engine) click to toggle source
# File lib/condenser/pipeline.rb, line 90
def register_transformer(from_mime_type, to_mime_type, engine)
  @transformers[from_mime_type] ||= {}
  @transformers[from_mime_type][to_mime_type] = engine
end
register_writer(engine) click to toggle source
# File lib/condenser/pipeline.rb, line 120
def register_writer(engine)
  Array(engine.mime_types).each do |mime_type|
    @writers[mime_type] ||= []
    @writers[mime_type] << engine
  end
end
unregister_exporter(mime_type, engine) click to toggle source
# File lib/condenser/pipeline.rb, line 104
def unregister_exporter(mime_type, engine)
  @exporters[mime_type] = nil
end
unregister_minifier(mime_type) click to toggle source
# File lib/condenser/pipeline.rb, line 116
def unregister_minifier(mime_type)
  @minifiers[mime_type] = nil
end
unregister_preprocessor(mime_type, engine=nil) click to toggle source
# File lib/condenser/pipeline.rb, line 82
def unregister_preprocessor(mime_type, engine=nil)
  if engine.nil?
    @preprocessors[mime_type].clear
  else
    @preprocessors[mime_type]&.reject! { |e| e == engine || e.is_a?(engine) }
  end
end
unregister_writer(engine, for_mime_types: []) click to toggle source
# File lib/condenser/pipeline.rb, line 127
def unregister_writer(engine, for_mime_types: [])
  mime_types = @writers.keys if mime_types.nil?
  Array(for_mime_types || @writers.keys).each do |mime_type|
    @writers[mime_type].select! do |writer|
      if engine.nil? || engine == writer[0] || writer[0].is_a?(engine)
        if added_mime_types.nil? || added_mime_types == writer[1]
          false
        else
          true
        end
      else
        true
      end
    end
  end
end