module Reduce

Constants

VERSION

Public Class Methods

reduce(file) click to toggle source
# File lib/reduce.rb, line 8
def reduce(file)
  extension = File.extname(file).downcase.sub('.','')
  case extension
  when 'html', 'xml'
    compressor = File.join(File.dirname(__FILE__),'..','vendor','htmlcompressor*.jar')
    `java -jar #{compressor} --type #{extension} --compress-js --compress-css #{file}`
  when 'js','css'
    compressor = File.join(File.dirname(__FILE__),'..','vendor','yuicompressor*.jar')
    `java -jar #{compressor} --type #{extension} #{file}`
  when 'jpg', 'jpeg', 'png', 'gif'
    reduce_image file
  else
    raise "reduce does not know how to handle a .#{extension} file (#{file})"
  end
end

Private Class Methods

reduce_image(input) click to toggle source
# File lib/reduce.rb, line 26
def reduce_image(input)
  output = input+'.temp'
  FileUtils.cp(input, output)

  service = (input.downcase =~ /\.gif$/ ? 'PunyPng' : 'SmushIt')
  Smusher.optimize_image(output, :quiet=>true, :service => service)

  data = File.read(output)
  FileUtils.rm(output)
  data
end