class Sprockets::Utils::Gzip

def can_compress?(mime_types)

Return Boolean.

through a compression algorithm would make them larger.
files as they may already be compressed and running them
You do not want to compress binary
We want to compress any file that is text based.

Private: Returns whether or not an asset can be compressed.
def can_compress?(mime_types)
  # The "charset" of a mime type is present if the value is
  # encoded text. We can check this value to see if the asset
  # can be compressed.
  #
  # We also check against our list of non-text compressible mime types
  @charset || COMPRESSABLE_MIME_TYPES.include?(@content_type)
end

def cannot_compress?(mime_types)

Returns Boolean.

Private: Opposite of `can_compress?`.
def cannot_compress?(mime_types)
  !can_compress?(mime_types)
end

def compress(target)

Returns nothing.

Does not modify the target asset.
the same name plus a `.gz` extension in the same folder as the original.
Compresses the target asset's contents and puts it into a file with

Private: Generates a gzipped file based off of reference asset.
def compress(target)
  mtime = PathUtils.stat(target).mtime
  PathUtils.atomic_write("#{target}.gz") do |f|
    gz = Zlib::GzipWriter.new(f, Zlib::BEST_COMPRESSION)
    gz.mtime = mtime
    gz.write(@source)
    gz.close
    File.utime(mtime, mtime, f.path)
  end
  nil
end

def initialize(asset)

Private: Generates a gzipped file based off of reference file.
def initialize(asset)
  @content_type  = asset.content_type
  @source        = asset.source
  @charset       = asset.charset
end