class GithubPages::SiteCompressor

Constants

GZIP_MAGIC

Attributes

level[RW]

Public Class Methods

new(directory) click to toggle source
# File lib/ghpages_deploy/compress.rb, line 10
def initialize(directory)
  @directory = directory
  @level = Zlib::BEST_COMPRESSION
end

Public Instance Methods

compress() click to toggle source
# File lib/ghpages_deploy/compress.rb, line 17
def compress
  GithubPages.all_nested_files(@directory).each do |item|
    compress_file(item) if can_compress?(item) && !compressed?(item)
  end
end

Private Instance Methods

can_compress?(filename) click to toggle source
# File lib/ghpages_deploy/compress.rb, line 34
def can_compress?(filename)
  ext = File.extname(filename)
  return false if ext.empty?
  %i(css js html).include?(ext[1..-1].to_sym)
end
compress_file(filename) click to toggle source
# File lib/ghpages_deploy/compress.rb, line 25
def compress_file(filename)
  Zlib::GzipWriter.open("#{filename}.gz", @level) do |gz|
    gz.mtime = File.mtime(filename)
    gz.orig_name = filename
    gz.write File.binread(filename)
  end
  File.rename("#{filename}.gz", filename)
end
compressed?(filename) click to toggle source
# File lib/ghpages_deploy/compress.rb, line 42
def compressed?(filename)
  File.open(filename) do |f|
    f.readpartial(2) == GZIP_MAGIC
  end
rescue EOFError
  false
end