Skip to content

Commit

Permalink
initial commit.
Browse files Browse the repository at this point in the history
  • Loading branch information
botandrose-machine committed Sep 20, 2011
0 parents commit c6bd10c
Show file tree
Hide file tree
Showing 9 changed files with 76 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
*.gem
.bundle
Gemfile.lock
pkg/*
4 changes: 4 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
source "http://rubygems.org"

# Specify your gem's dependencies in sprockets-image_compressor.gemspec
gemspec
1 change: 1 addition & 0 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
require "bundler/gem_tasks"
1 change: 1 addition & 0 deletions lib/sprockets-image_compressor.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
require "sprockets/image_compressor"
3 changes: 3 additions & 0 deletions lib/sprockets/image_compressor.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
require "sprockets/image_compressor/version"
require "sprockets/image_compressor/png_compressor"
require "sprockets/image_compressor/railtie" if defined?(Rails)
20 changes: 20 additions & 0 deletions lib/sprockets/image_compressor/png_compressor.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
module Sprockets
module ImageCompressor
class PngCompressor
def compress(content)
compressed_png_data = ""
Tempfile.open ["in_file", ".png"] do |in_file|
out_file_path = in_file.path + ".optimized.png"
in_file.write content
in_file.close
out = `pngcrush #{in_file.path} #{out_file_path}`
in_file.delete

compressed_png_data = File.read out_file_path
File.unlink out_file_path
end
compressed_png_data
end
end
end
end
14 changes: 14 additions & 0 deletions lib/sprockets/image_compressor/railtie.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
module Sprockets
module ImageCompressor
class Railtie < Rails::Engine
initializer :setup_png_compressor do |app|
if app.config.assets.compress
app.assets.register_mime_type 'image/png', '.png'
app.assets.register_postprocessor 'image/png', :png_compressor do |context, data|
PngCompressor.new.compress data
end
end
end
end
end
end
5 changes: 5 additions & 0 deletions lib/sprockets/image_compressor/version.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module Sprockets
module Imagecompressor
VERSION = "0.0.1"
end
end
24 changes: 24 additions & 0 deletions sprockets-image_compressor.gemspec
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# -*- encoding: utf-8 -*-
$:.push File.expand_path("../lib", __FILE__)
require "sprockets/image_compressor/version"

Gem::Specification.new do |s|
s.name = "sprockets-image_compressor"
s.version = Sprockets::Imagecompressor::VERSION
s.authors = ["Micah Geisel"]
s.email = ["micah@botandrose.com"]
s.homepage = ""
s.summary = %q{Losslessly compress images in the Rails asset pipeline}
s.description = %q{Losslessly compress images in the Rails asset pipeline}

s.rubyforge_project = "sprockets-image_compressor"

s.files = `git ls-files`.split("\n")
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
s.require_paths = ["lib"]

# specify any dependencies here; for example:
# s.add_development_dependency "rspec"
# s.add_runtime_dependency "rest-client"
end

0 comments on commit c6bd10c

Please sign in to comment.