class Gakubuchi::EngineRegistrar

Constants

EXTENSION_WITH_SIGLE_DOT

Public Class Methods

new(env) click to toggle source
# File lib/gakubuchi/engine_registrar.rb, line 10
def initialize(env)
  @env = env
end

Public Instance Methods

register(mime_type, engine_name_or_class) click to toggle source
# File lib/gakubuchi/engine_registrar.rb, line 14
def register(mime_type, engine_name_or_class)
  engine = constantize(engine_name_or_class)
  return false if !engine.instance_of?(::Class) || mime_type.extensions.empty?

  if sprockets_major_version >= 4
    register_as_transformer(mime_type, engine)
  else
    register_as_engine(mime_type, engine)
  end

  true
end

Private Instance Methods

constantize(constant_name) click to toggle source
# File lib/gakubuchi/engine_registrar.rb, line 29
def constantize(constant_name)
  constant_name.to_s.constantize
rescue ::LoadError, ::NameError
  nil
end
register_as_engine(mime_type, engine) click to toggle source
# File lib/gakubuchi/engine_registrar.rb, line 39
def register_as_engine(mime_type, engine)
  mime_type.extensions.select { |ext| ext =~ EXTENSION_WITH_SIGLE_DOT }.each do |ext|
    args = [ext, engine]
    args << { silence_deprecation: true } if sprockets_major_version == 3
    @env.register_engine(*args)
  end
end
register_as_transformer(mime_type, engine) click to toggle source
# File lib/gakubuchi/engine_registrar.rb, line 47
def register_as_transformer(mime_type, engine)
  content_type = mime_type.content_type

  @env.register_mime_type(content_type, extensions: mime_type.extensions)
  @env.register_transformer(content_type, engine.default_mime_type, ::Grease.apply(engine))
end
sprockets_major_version() click to toggle source
# File lib/gakubuchi/engine_registrar.rb, line 35
def sprockets_major_version
  @sprockets_major_version ||= ::Gem::Version.new(::Sprockets::VERSION).segments.first
end