Sha256: e88c6bb8958c6aeb2f9b595e7677ecc7b28ea1d8f807f8ebae4dd4d56b0a06d7

Contents?: true

Size: 943 Bytes

Versions: 1

Compression:

Stored size: 943 Bytes

Contents

require 'smusher'
raise "please install a newer version of smusher" if Smusher::VERSION < '0.4.0'

module Reduce
  extend self

  VERSION = File.read( File.join(File.dirname(__FILE__),'..','VERSION') ).strip

  def reduce(file)
    extension = File.extname(file).downcase.sub('.','')
    case extension
    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

  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
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
reduce-0.2.0 lib/reduce.rb