Sha256: 6b4e3869f0a959b14be8d13707a9ebdc2806646176089f76436382d26d790709

Contents?: true

Size: 886 Bytes

Versions: 2

Compression:

Stored size: 886 Bytes

Contents

require "zopfli"

module Jekyll
  module Zopfli
    class Compressor
      ZIPPABLE_EXTENSIONS = [
        '.html',
        '.css',
        '.js',
        '.txt',
        '.ttf',
        '.atom',
        '.stl',
        '.xml',
        '.svg',
        '.eot'
      ]

      attr_reader :site

      def initialize(site)
        @site = site
      end

      def compress_file(file_name)
        return unless ZIPPABLE_EXTENSIONS.include?(File.extname(file_name))
        zipped = "#{file_name}.gz"
        contents = ::Zopfli.deflate(File.read(file_name), format: :gzip)
        File.open(zipped, "w+") do |file|
          file << contents
        end
        File.utime(File.atime(file_name), File.mtime(file_name), zipped)
      end

      def compress
        site.each_site_file do |file|
          compress_file(file.destination(site.dest))
        end
      end
    end
  end
end 

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jekyll-zopfli-1.1.0 lib/jekyll/zopfli/compressor.rb
jekyll-zopfli-1.0.0 lib/jekyll/zopfli/compressor.rb