class Sprockets::WebP::Converter

Attributes

context[R]

Public Class Methods

process(app, context, data) click to toggle source
# File lib/sprockets/webp/converter.rb, line 15
def process(app, context, data)
  @context = context
  # Application Config alias
  config = app.config.assets

  # If Application Assets Digests enabled - Add Digest
  webp_file = webp_file_by_config(config, data)

  # WebP File Pathname
  webp_path = Pathname.new File.join(app.root, 'public', config.prefix, webp_file)

  # Create Directory for both Files, unless already exists
  FileUtils.mkdir_p(webp_path.dirname) unless Dir.exists?(webp_path.dirname)

  # encode to webp
  encode_to_webp(data, webp_path.to_path, webp_file)

  data
end

Private Class Methods

encode_to_webp(data, webp_path, webp_file = "") click to toggle source
# File lib/sprockets/webp/converter.rb, line 44
def encode_to_webp(data, webp_path, webp_file = "")
  # Create Temp File with Original File binary data
  Tempfile.open('webp') do |file|
    file.binmode
    file.write(data)
    file.close

    # Encode Original File Temp copy to WebP File Pathname
    begin
      ::WebP.encode(file.path, webp_path, Sprockets::WebP.encode_options)
      logger.info "Webp converted image #{webp_path}"
    rescue => e
      logger.warn "Webp convertion error of image #{webp_file}. Error info: #{e.message}"
    end
  end
end
logger() click to toggle source
# File lib/sprockets/webp/converter.rb, line 61
def logger
  if @context && @context.environment
    @context.environment.logger
  else
    logger = Logger.new($stderr)
    logger.level = Logger::FATAL
    logger
  end
end
webp_file_by_config(config, data) click to toggle source
# File lib/sprockets/webp/converter.rb, line 37
def webp_file_by_config(config, data)
  digest    = config.digest ? "-#{context.environment.digest.update(data).hexdigest}" : nil
  file_name = context.logical_path # Original File name w/o extension
  file_ext  = context.pathname.extname # Original File extension
  "#{file_name}#{digest}#{file_ext}.webp" # WebP File fullname
end