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