class Propshaft::Compilers

Attributes

assembly[R]
registrations[R]

Public Class Methods

new(assembly) click to toggle source
# File lib/propshaft/compilers.rb, line 4
def initialize(assembly)
  @assembly      = assembly
  @registrations = Hash.new
end

Public Instance Methods

any?() click to toggle source
# File lib/propshaft/compilers.rb, line 14
def any?
  registrations.any?
end
compilable?(asset) click to toggle source
# File lib/propshaft/compilers.rb, line 18
def compilable?(asset)
  registrations[asset.content_type.to_s].present?
end
compile(asset) click to toggle source
# File lib/propshaft/compilers.rb, line 22
def compile(asset)
  if relevant_registrations = registrations[asset.content_type.to_s]
    asset.content.dup.tap do |input|
      relevant_registrations.each do |compiler|
        input.replace compiler.new(assembly).compile(asset, input)
      end
    end
  else
    asset.content
  end
end
referenced_by(asset) click to toggle source
# File lib/propshaft/compilers.rb, line 34
def referenced_by(asset)
  Set.new.tap do |references|
    if relevant_registrations = registrations[asset.content_type.to_s]
      relevant_registrations.each do |compiler|
        references.merge compiler.new(assembly).referenced_by(asset)
      end
    end
  end
end
register(mime_type, klass) click to toggle source
# File lib/propshaft/compilers.rb, line 9
def register(mime_type, klass)
  registrations[mime_type] ||= []
  registrations[mime_type] << klass
end