class Hanami::Assets::Bundler::Compressor

Compresses a JS or CSS file

@since 0.3.0 @api private

Constants

JAVASCRIPT_EXT

@since 0.3.0 @api private

STYLESHEET_EXT

@since 0.3.0 @api private

Public Class Methods

new(path, configuration) click to toggle source

Return a new instance

@since 0.3.0 @api private

# File lib/hanami/assets/bundler/compressor.rb, line 23
def initialize(path, configuration)
  @path = path
  @configuration = configuration
end

Public Instance Methods

compress() click to toggle source

@return [String, nil] the compressed contents of the file OR nil if it's not compressable

@since 0.3.0 @api private

# File lib/hanami/assets/bundler/compressor.rb, line 32
def compress
  case File.extname(@path)
  when JAVASCRIPT_EXT then _compress(compressor(:js))
  when STYLESHEET_EXT then _compress(compressor(:css))
  end
end

Private Instance Methods

_compress(compressor) click to toggle source

@since 0.3.0 @api private

# File lib/hanami/assets/bundler/compressor.rb, line 49
def _compress(compressor)
  compressor.compress(@path)
rescue => exception # rubocop:disable Style/RescueStandardError
  warn(
    [
      "Skipping compression of: `#{@path}'",
      "Reason: #{exception}\n",
      "\t#{exception.backtrace.join("\n\t")}\n\n"
    ].join("\n")
  )
end
compressor(type) click to toggle source

@since 0.3.0 @api private

# File lib/hanami/assets/bundler/compressor.rb, line 43
def compressor(type)
  @configuration.__send__(:"#{type}_compressor")
end