active_assets 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +20 -21
 - data/active_assets.gemspec +4 -3
 - data/lib/active_assets/active_sprites.rb +6 -2
 - data/lib/active_assets/active_sprites/configurable.rb +0 -1
 - data/lib/active_assets/active_sprites/runners/abstract_runner.rb +124 -0
 - data/lib/active_assets/active_sprites/runners/chunky_png_runner.rb +62 -0
 - data/lib/active_assets/active_sprites/runners/mini_magick_runner.rb +74 -0
 - data/lib/active_assets/active_sprites/runners/rmagick_runner.rb +66 -0
 - data/lib/active_assets/active_sprites/sprite_piece.rb +5 -1
 - data/lib/active_assets/active_sprites/sprite_stylesheet.rb +3 -4
 - data/lib/active_assets/active_sprites/sprites.rb +31 -6
 - data/lib/tasks/active_sprites/sprites.rake +1 -0
 - data/test/active_assets/active_sprites/runners/chunky_png_runner_test.rb +10 -0
 - data/test/active_assets/active_sprites/runners/mini_magick_runner_test.rb +10 -0
 - data/test/active_assets/active_sprites/runners/rmagick_runner_test.rb +10 -0
 - data/test/fixtures/rails_root/config/application.rb +1 -1
 - data/test/helper.rb +0 -8
 - data/test/{active_assets/active_sprites/runner_test.rb → support/abstract_runner.rb} +16 -29
 - metadata +39 -21
 - data/lib/active_assets/active_sprites/chunky_png_runner.rb +0 -119
 - data/lib/active_assets/active_sprites/rmagick_runner.rb +0 -124
 - data/test/raster_graphics.rb +0 -623
 - data/test/raster_graphics_test.rb +0 -82
 
| 
         @@ -32,7 +32,7 @@ module ActiveAssets 
     | 
|
| 
       32 
32 
     | 
    
         
             
                    self
         
     | 
| 
       33 
33 
     | 
    
         
             
                  end
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
                  def  
     | 
| 
      
 35 
     | 
    
         
            +
                  def to_css
         
     | 
| 
       36 
36 
     | 
    
         
             
                    return '' if details.nil?
         
     | 
| 
       37 
37 
     | 
    
         
             
                    <<-CSS
         
     | 
| 
       38 
38 
     | 
    
         
             
            #{css_selector}
         
     | 
| 
         @@ -45,6 +45,10 @@ module ActiveAssets 
     | 
|
| 
       45 
45 
     | 
    
         
             
                    CSS
         
     | 
| 
       46 
46 
     | 
    
         
             
                  end
         
     | 
| 
       47 
47 
     | 
    
         | 
| 
      
 48 
     | 
    
         
            +
                  def to_s
         
     | 
| 
      
 49 
     | 
    
         
            +
                    "|\t#{path}\t|\t#{css_selector}\t|\t#{details.x}\t|\t#{details.y}\t|\t#{details.width}\t|\t#{details.height}\t|\n"
         
     | 
| 
      
 50 
     | 
    
         
            +
                  end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
       48 
52 
     | 
    
         
             
                  GEOMETRY_PROPS.each do |prop|
         
     | 
| 
       49 
53 
     | 
    
         
             
                    eval <<-METH
         
     | 
| 
       50 
54 
     | 
    
         
             
                      def #{prop}(*args)
         
     | 
| 
         @@ -8,16 +8,15 @@ module ActiveAssets 
     | 
|
| 
       8 
8 
     | 
    
         
             
                  end
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
                  def write(path)
         
     | 
| 
       11 
     | 
    
         
            -
                    to_s!
         
     | 
| 
       12 
11 
     | 
    
         
             
                    FileUtils.mkdir_p(File.dirname(path))
         
     | 
| 
       13 
12 
     | 
    
         
             
                    File.open(path, 'w+') do |f|
         
     | 
| 
       14 
     | 
    
         
            -
                      f.write  
     | 
| 
      
 13 
     | 
    
         
            +
                      f.write to_s
         
     | 
| 
       15 
14 
     | 
    
         
             
                    end
         
     | 
| 
       16 
15 
     | 
    
         
             
                  end
         
     | 
| 
       17 
16 
     | 
    
         | 
| 
       18 
17 
     | 
    
         
             
                  private
         
     | 
| 
       19 
     | 
    
         
            -
                    def to_s 
     | 
| 
       20 
     | 
    
         
            -
                      @as_string ||= @sprite_pieces.map(&: 
     | 
| 
      
 18 
     | 
    
         
            +
                    def to_s
         
     | 
| 
      
 19 
     | 
    
         
            +
                      @as_string ||= @sprite_pieces.map(&:to_css).join("\n")
         
     | 
| 
       21 
20 
     | 
    
         
             
                    end
         
     | 
| 
       22 
21 
     | 
    
         
             
                end
         
     | 
| 
       23 
22 
     | 
    
         
             
              end
         
     | 
| 
         @@ -54,18 +54,43 @@ module ActiveAssets 
     | 
|
| 
       54 
54 
     | 
    
         
             
                      case sprite_backend
         
     | 
| 
       55 
55 
     | 
    
         
             
                      when :rmagick
         
     | 
| 
       56 
56 
     | 
    
         
             
                        require 'rmagick'
         
     | 
| 
       57 
     | 
    
         
            -
                        RmagickRunner.new(@sprites).generate! 
     | 
| 
       58 
     | 
    
         
            -
                      when : 
     | 
| 
      
 57 
     | 
    
         
            +
                        RmagickRunner.new(railtie, @sprites).generate!
         
     | 
| 
      
 58 
     | 
    
         
            +
                      when :mini_magick
         
     | 
| 
      
 59 
     | 
    
         
            +
                        require 'mini_magick'
         
     | 
| 
      
 60 
     | 
    
         
            +
                        MiniMagickRunner.new(railtie, @sprites).generate!
         
     | 
| 
      
 61 
     | 
    
         
            +
                      when :chunky_png, :oily_png
         
     | 
| 
       59 
62 
     | 
    
         
             
                        begin
         
     | 
| 
       60 
63 
     | 
    
         
             
                          require 'oily_png'
         
     | 
| 
       61 
     | 
    
         
            -
                          ChunkyPngRunner.new(@sprites).generate! 
     | 
| 
      
 64 
     | 
    
         
            +
                          ChunkyPngRunner.new(railtie, @sprites).generate!
         
     | 
| 
       62 
65 
     | 
    
         
             
                        rescue LoadError
         
     | 
| 
       63 
66 
     | 
    
         
             
                          require 'chunky_png'
         
     | 
| 
       64 
     | 
    
         
            -
                          ChunkyPngRunner.new(@sprites).generate! 
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
      
 67 
     | 
    
         
            +
                          ChunkyPngRunner.new(railtie @sprites).generate!
         
     | 
| 
      
 68 
     | 
    
         
            +
                        end
         
     | 
| 
      
 69 
     | 
    
         
            +
                      else
         
     | 
| 
      
 70 
     | 
    
         
            +
                        begin
         
     | 
| 
      
 71 
     | 
    
         
            +
                          require 'rmagick'
         
     | 
| 
      
 72 
     | 
    
         
            +
                          RmagickRunner.new(railtie, @sprites).generate!
         
     | 
| 
      
 73 
     | 
    
         
            +
                        rescue LoadError
         
     | 
| 
      
 74 
     | 
    
         
            +
                          begin
         
     | 
| 
      
 75 
     | 
    
         
            +
                            begin
         
     | 
| 
      
 76 
     | 
    
         
            +
                              require 'oily_png'
         
     | 
| 
      
 77 
     | 
    
         
            +
                              ChunkyPngRunner.new(railtie, @sprites).generate!
         
     | 
| 
      
 78 
     | 
    
         
            +
                            rescue LoadError
         
     | 
| 
      
 79 
     | 
    
         
            +
                              require 'chunky_png'
         
     | 
| 
      
 80 
     | 
    
         
            +
                              ChunkyPngRunner.new(railtie, @sprites).generate!
         
     | 
| 
      
 81 
     | 
    
         
            +
                            end
         
     | 
| 
      
 82 
     | 
    
         
            +
                          rescue LoadError
         
     | 
| 
      
 83 
     | 
    
         
            +
                            require 'mini_magick'
         
     | 
| 
      
 84 
     | 
    
         
            +
                            MiniMagickRunner.new(railtie, @sprites).generate!
         
     | 
| 
      
 85 
     | 
    
         
            +
                          end
         
     | 
| 
       66 
86 
     | 
    
         
             
                        end
         
     | 
| 
       67 
87 
     | 
    
         
             
                      end
         
     | 
| 
       68 
     | 
    
         
            -
                    rescue LoadError
         
     | 
| 
      
 88 
     | 
    
         
            +
                    rescue LoadError => e
         
     | 
| 
      
 89 
     | 
    
         
            +
                      msg = ''
         
     | 
| 
      
 90 
     | 
    
         
            +
                      msg << "You have not specified any sprite runtime in your configuration.  We tried to load all supported runtimes, but failed to load any." if !sprite_backend
         
     | 
| 
      
 91 
     | 
    
         
            +
                      msg << "Your requested backend, #{sprite_backend}, was not found." if sprite_backend
         
     | 
| 
      
 92 
     | 
    
         
            +
                      msg << " Supported sprite backends include :rmagick, :chunky_png, and :mini_magick.  To use oily_png, install oily_png and configure with :chunky_png.\n"
         
     | 
| 
      
 93 
     | 
    
         
            +
                      $stdout << msg
         
     | 
| 
       69 
94 
     | 
    
         
             
                    end
         
     | 
| 
       70 
95 
     | 
    
         
             
                  end
         
     | 
| 
       71 
96 
     | 
    
         
             
                end
         
     | 
    
        data/test/helper.rb
    CHANGED
    
    | 
         @@ -9,8 +9,6 @@ require 'active_assets' 
     | 
|
| 
       9 
9 
     | 
    
         
             
            require 'socket'
         
     | 
| 
       10 
10 
     | 
    
         
             
            require 'timeout'
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
            require 'raster_graphics'
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
12 
     | 
    
         
             
            TEST_RAILS_ROOT = File.expand_path('../fixtures/rails_root', __FILE__)
         
     | 
| 
       15 
13 
     | 
    
         | 
| 
       16 
14 
     | 
    
         
             
            Dir[File.expand_path('../support/**/*.rb', __FILE__)].each {|f| load f }
         
     | 
| 
         @@ -20,12 +18,6 @@ load File.join(TEST_RAILS_ROOT, 'config/application.rb') 
     | 
|
| 
       20 
18 
     | 
    
         
             
            class Test::Unit::TestCase
         
     | 
| 
       21 
19 
     | 
    
         
             
              include RailsHelper
         
     | 
| 
       22 
20 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
              include(Module.new do
         
     | 
| 
       24 
     | 
    
         
            -
                def percent_difference(image_1_path, image_2_path)
         
     | 
| 
       25 
     | 
    
         
            -
                  Pixmap.open(image_1_path) - Pixmap.open(image_2_path)
         
     | 
| 
       26 
     | 
    
         
            -
                end
         
     | 
| 
       27 
     | 
    
         
            -
              end)
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
21 
     | 
    
         
             
              def sprites
         
     | 
| 
       30 
22 
     | 
    
         
             
                Rails.application.sprites
         
     | 
| 
       31 
23 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,11 +1,10 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'helper'
         
     | 
| 
       2 
1 
     | 
    
         
             
            require 'fileutils'
         
     | 
| 
       3 
2 
     | 
    
         
             
            require 'rmagick'
         
     | 
| 
       4 
3 
     | 
    
         
             
            require 'css_parser'
         
     | 
| 
       5 
4 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
            module AbstractRunnerTest
         
     | 
| 
       7 
6 
     | 
    
         
             
              include Magick
         
     | 
| 
       8 
     | 
    
         
            -
              def  
     | 
| 
      
 7 
     | 
    
         
            +
              def runner_setup
         
     | 
| 
       9 
8 
     | 
    
         
             
                initialize_application_or_load_sprites!
         
     | 
| 
       10 
9 
     | 
    
         | 
| 
       11 
10 
     | 
    
         
             
                assert_false Rails.application.sprites.all.empty?
         
     | 
| 
         @@ -13,6 +12,12 @@ class RunnerTest < Test::Unit::TestCase 
     | 
|
| 
       13 
12 
     | 
    
         
             
                assert_nothing_raised do
         
     | 
| 
       14 
13 
     | 
    
         
             
                  Rails.application.sprites.generate!
         
     | 
| 
       15 
14 
     | 
    
         
             
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                assert File.exists?(Rails.root.join('public/images/sprites/3.png'))
         
     | 
| 
      
 17 
     | 
    
         
            +
                assert File.exists?(Rails.root.join('public/images/sprites/4.png'))
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                assert File.exists?(Rails.root.join('public/stylesheets/sprites/3.css'))
         
     | 
| 
      
 20 
     | 
    
         
            +
                assert File.exists?(Rails.root.join('public/stylesheets/sprites/4.css'))
         
     | 
| 
       16 
21 
     | 
    
         
             
              end
         
     | 
| 
       17 
22 
     | 
    
         | 
| 
       18 
23 
     | 
    
         
             
              def teardown
         
     | 
| 
         @@ -36,14 +41,14 @@ class RunnerTest < Test::Unit::TestCase 
     | 
|
| 
       36 
41 
     | 
    
         | 
| 
       37 
42 
     | 
    
         
             
                sprite_pieces_with_selector_data = []
         
     | 
| 
       38 
43 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
                parser. 
     | 
| 
       40 
     | 
    
         
            -
                  sprite_piece = sprite_pieces.find {|sp| sp.css_selector  
     | 
| 
       41 
     | 
    
         
            -
                  width =  
     | 
| 
       42 
     | 
    
         
            -
                  height =  
     | 
| 
       43 
     | 
    
         
            -
                  background =  
     | 
| 
      
 44 
     | 
    
         
            +
                parser.each_rule_set do |rs|
         
     | 
| 
      
 45 
     | 
    
         
            +
                  sprite_piece = sprite_pieces.find {|sp| rs.selectors.include?(sp.css_selector) }
         
     | 
| 
      
 46 
     | 
    
         
            +
                  width = rs['width'][%r{\s*(\d+)(?:px)?;?$}, 1].to_i
         
     | 
| 
      
 47 
     | 
    
         
            +
                  height = rs['height'][%r{\s*(\d+)(?:px)?;?$}, 1].to_i
         
     | 
| 
      
 48 
     | 
    
         
            +
                  background = rs['background'][%r{\s*([^;]+)}, 1]
         
     | 
| 
       44 
49 
     | 
    
         
             
                  x = background[%r{\s-?(\d+)(?:px)?\s}, 1].to_i
         
     | 
| 
       45 
50 
     | 
    
         
             
                  y = background[%r{\s-?(\d+)(?:px)?$}, 1].to_i
         
     | 
| 
       46 
     | 
    
         
            -
                  sprite_pieces_with_selector_data << [sprite_piece, Selector.new(selectors, x, y, width, height)]
         
     | 
| 
      
 51 
     | 
    
         
            +
                  sprite_pieces_with_selector_data << [sprite_piece, Selector.new(rs.selectors, x, y, width, height)]
         
     | 
| 
       47 
52 
     | 
    
         
             
                end
         
     | 
| 
       48 
53 
     | 
    
         | 
| 
       49 
54 
     | 
    
         
             
                sprite_pieces_with_selector_data.each do |sp, selector_data|
         
     | 
| 
         @@ -56,19 +61,11 @@ class RunnerTest < Test::Unit::TestCase 
     | 
|
| 
       56 
61 
     | 
    
         
             
                      selector_data.width,
         
     | 
| 
       57 
62 
     | 
    
         
             
                      selector_data.height
         
     | 
| 
       58 
63 
     | 
    
         
             
                    )
         
     | 
| 
       59 
     | 
    
         
            -
                     
     | 
| 
       60 
     | 
    
         
            -
                     
     | 
| 
       61 
     | 
    
         
            -
                    curr_sprite_piece_image_bmp = Tempfile.new("curr_sprite_piece_image_bmp.ppm")
         
     | 
| 
       62 
     | 
    
         
            -
                    sprite_piece_image.write "ppm:#{curr_sprite_piece_image_bmp.path}"
         
     | 
| 
       63 
     | 
    
         
            -
                    pd = percent_difference(curr_sprite_image_file.path, curr_sprite_piece_image_bmp.path)
         
     | 
| 
       64 
     | 
    
         
            -
                    assert pd <= 0.25
         
     | 
| 
      
 64 
     | 
    
         
            +
                    pd = curr_sprite_image.compare_channel(sprite_piece_image, MeanSquaredErrorMetric).last
         
     | 
| 
      
 65 
     | 
    
         
            +
                    assert_equal 0, pd
         
     | 
| 
       65 
66 
     | 
    
         
             
                  ensure
         
     | 
| 
       66 
67 
     | 
    
         
             
                    sprite_piece_image.destroy! if sprite_piece_image
         
     | 
| 
       67 
68 
     | 
    
         
             
                    curr_sprite_image.destroy! if curr_sprite_image
         
     | 
| 
       68 
     | 
    
         
            -
                    curr_sprite_image_file.close if curr_sprite_image_file
         
     | 
| 
       69 
     | 
    
         
            -
                    curr_sprite_piece_image_bmp.close if curr_sprite_piece_image_bmp
         
     | 
| 
       70 
     | 
    
         
            -
                    curr_sprite_piece_image_bmp = nil
         
     | 
| 
       71 
     | 
    
         
            -
                    curr_sprite_image_file = nil
         
     | 
| 
       72 
69 
     | 
    
         
             
                    curr_sprite_image = nil
         
     | 
| 
       73 
70 
     | 
    
         
             
                    sprite_piece_image = nil
         
     | 
| 
       74 
71 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -77,14 +74,4 @@ class RunnerTest < Test::Unit::TestCase 
     | 
|
| 
       77 
74 
     | 
    
         
             
                sprite_image.destroy! if sprite_image
         
     | 
| 
       78 
75 
     | 
    
         
             
                sprite_image = nil
         
     | 
| 
       79 
76 
     | 
    
         
             
              end
         
     | 
| 
       80 
     | 
    
         
            -
              
         
     | 
| 
       81 
     | 
    
         
            -
              def test_sprite_exists
         
     | 
| 
       82 
     | 
    
         
            -
                assert File.exists?(Rails.root.join('public/images/sprites/3.png'))
         
     | 
| 
       83 
     | 
    
         
            -
                assert File.exists?(Rails.root.join('public/images/sprites/4.png'))
         
     | 
| 
       84 
     | 
    
         
            -
              end
         
     | 
| 
       85 
     | 
    
         
            -
              
         
     | 
| 
       86 
     | 
    
         
            -
              def test_stylesheets_exists
         
     | 
| 
       87 
     | 
    
         
            -
                assert File.exists?(Rails.root.join('public/stylesheets/sprites/3.css'))
         
     | 
| 
       88 
     | 
    
         
            -
                assert File.exists?(Rails.root.join('public/stylesheets/sprites/4.css'))
         
     | 
| 
       89 
     | 
    
         
            -
              end
         
     | 
| 
       90 
77 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,13 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: active_assets
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              hash:  
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 31
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 0
         
     | 
| 
       8 
8 
     | 
    
         
             
              - 2
         
     | 
| 
       9 
     | 
    
         
            -
              -  
     | 
| 
       10 
     | 
    
         
            -
              version: 0.2. 
     | 
| 
      
 9 
     | 
    
         
            +
              - 4
         
     | 
| 
      
 10 
     | 
    
         
            +
              version: 0.2.4
         
     | 
| 
       11 
11 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
12 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
13 
     | 
    
         
             
            - Sam Woodard
         
     | 
| 
         @@ -15,7 +15,7 @@ autorequire: 
     | 
|
| 
       15 
15 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       16 
16 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
            date: 2011-01- 
     | 
| 
      
 18 
     | 
    
         
            +
            date: 2011-01-29 00:00:00 -08:00
         
     | 
| 
       19 
19 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       20 
20 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       21 
21 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
         @@ -62,6 +62,20 @@ dependencies: 
     | 
|
| 
       62 
62 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       63 
63 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       64 
64 
     | 
    
         
             
              version_requirements: &id004 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 65 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 66 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 67 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 68 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 69 
     | 
    
         
            +
                    hash: 3
         
     | 
| 
      
 70 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 71 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 72 
     | 
    
         
            +
                    version: "0"
         
     | 
| 
      
 73 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 74 
     | 
    
         
            +
              requirement: *id004
         
     | 
| 
      
 75 
     | 
    
         
            +
              name: mini_magick
         
     | 
| 
      
 76 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 77 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 78 
     | 
    
         
            +
              version_requirements: &id005 !ruby/object:Gem::Requirement 
         
     | 
| 
       65 
79 
     | 
    
         
             
                none: false
         
     | 
| 
       66 
80 
     | 
    
         
             
                requirements: 
         
     | 
| 
       67 
81 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -73,11 +87,11 @@ dependencies: 
     | 
|
| 
       73 
87 
     | 
    
         
             
                    - 5
         
     | 
| 
       74 
88 
     | 
    
         
             
                    version: 1.1.5
         
     | 
| 
       75 
89 
     | 
    
         
             
              type: :development
         
     | 
| 
       76 
     | 
    
         
            -
              requirement: * 
     | 
| 
      
 90 
     | 
    
         
            +
              requirement: *id005
         
     | 
| 
       77 
91 
     | 
    
         
             
              name: css_parser
         
     | 
| 
       78 
92 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       79 
93 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       80 
     | 
    
         
            -
              version_requirements: & 
     | 
| 
      
 94 
     | 
    
         
            +
              version_requirements: &id006 !ruby/object:Gem::Requirement 
         
     | 
| 
       81 
95 
     | 
    
         
             
                none: false
         
     | 
| 
       82 
96 
     | 
    
         
             
                requirements: 
         
     | 
| 
       83 
97 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -89,11 +103,11 @@ dependencies: 
     | 
|
| 
       89 
103 
     | 
    
         
             
                    - 3
         
     | 
| 
       90 
104 
     | 
    
         
             
                    version: 3.0.3
         
     | 
| 
       91 
105 
     | 
    
         
             
              type: :development
         
     | 
| 
       92 
     | 
    
         
            -
              requirement: * 
     | 
| 
      
 106 
     | 
    
         
            +
              requirement: *id006
         
     | 
| 
       93 
107 
     | 
    
         
             
              name: rails
         
     | 
| 
       94 
108 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       95 
109 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       96 
     | 
    
         
            -
              version_requirements: & 
     | 
| 
      
 110 
     | 
    
         
            +
              version_requirements: &id007 !ruby/object:Gem::Requirement 
         
     | 
| 
       97 
111 
     | 
    
         
             
                none: false
         
     | 
| 
       98 
112 
     | 
    
         
             
                requirements: 
         
     | 
| 
       99 
113 
     | 
    
         
             
                - - ">"
         
     | 
| 
         @@ -104,11 +118,11 @@ dependencies: 
     | 
|
| 
       104 
118 
     | 
    
         
             
                    - 0
         
     | 
| 
       105 
119 
     | 
    
         
             
                    version: "2.0"
         
     | 
| 
       106 
120 
     | 
    
         
             
              type: :development
         
     | 
| 
       107 
     | 
    
         
            -
              requirement: * 
     | 
| 
      
 121 
     | 
    
         
            +
              requirement: *id007
         
     | 
| 
       108 
122 
     | 
    
         
             
              name: test-unit
         
     | 
| 
       109 
123 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       110 
124 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       111 
     | 
    
         
            -
              version_requirements: & 
     | 
| 
      
 125 
     | 
    
         
            +
              version_requirements: &id008 !ruby/object:Gem::Requirement 
         
     | 
| 
       112 
126 
     | 
    
         
             
                none: false
         
     | 
| 
       113 
127 
     | 
    
         
             
                requirements: 
         
     | 
| 
       114 
128 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -120,10 +134,10 @@ dependencies: 
     | 
|
| 
       120 
134 
     | 
    
         
             
                    - 2
         
     | 
| 
       121 
135 
     | 
    
         
             
                    version: 4.4.2
         
     | 
| 
       122 
136 
     | 
    
         
             
              type: :development
         
     | 
| 
       123 
     | 
    
         
            -
              requirement: * 
     | 
| 
      
 137 
     | 
    
         
            +
              requirement: *id008
         
     | 
| 
       124 
138 
     | 
    
         
             
              name: ZenTest
         
     | 
| 
       125 
139 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       126 
     | 
    
         
            -
            description: A Railtie that provides  
     | 
| 
      
 140 
     | 
    
         
            +
            description: A Railtie that provides an asset management system for css, javascript, and sprites in your Rails applications and engines. ActiveAssets includes two libraries, ActiveExpansions and ActiveSprites. ActiveSprites generates sprites defined by a dsl similar to a route definition. Similarly, ActiveExpansions' dsl creates ActionView::Helpers::AssetTagHelper javascript and stylesheet expansions, and adds additional features
         
     | 
| 
       127 
141 
     | 
    
         
             
            email: 
         
     | 
| 
       128 
142 
     | 
    
         
             
            - sam@wildfireapp.com
         
     | 
| 
       129 
143 
     | 
    
         
             
            executables: []
         
     | 
| 
         @@ -153,10 +167,12 @@ files: 
     | 
|
| 
       153 
167 
     | 
    
         
             
            - lib/active_assets/active_expansions/stylesheets.rb
         
     | 
| 
       154 
168 
     | 
    
         
             
            - lib/active_assets/active_expansions/type_inferrable.rb
         
     | 
| 
       155 
169 
     | 
    
         
             
            - lib/active_assets/active_sprites.rb
         
     | 
| 
       156 
     | 
    
         
            -
            - lib/active_assets/active_sprites/chunky_png_runner.rb
         
     | 
| 
       157 
170 
     | 
    
         
             
            - lib/active_assets/active_sprites/configurable.rb
         
     | 
| 
       158 
171 
     | 
    
         
             
            - lib/active_assets/active_sprites/railtie.rb
         
     | 
| 
       159 
     | 
    
         
            -
            - lib/active_assets/active_sprites/ 
     | 
| 
      
 172 
     | 
    
         
            +
            - lib/active_assets/active_sprites/runners/abstract_runner.rb
         
     | 
| 
      
 173 
     | 
    
         
            +
            - lib/active_assets/active_sprites/runners/chunky_png_runner.rb
         
     | 
| 
      
 174 
     | 
    
         
            +
            - lib/active_assets/active_sprites/runners/mini_magick_runner.rb
         
     | 
| 
      
 175 
     | 
    
         
            +
            - lib/active_assets/active_sprites/runners/rmagick_runner.rb
         
     | 
| 
       160 
176 
     | 
    
         
             
            - lib/active_assets/active_sprites/sprite.rb
         
     | 
| 
       161 
177 
     | 
    
         
             
            - lib/active_assets/active_sprites/sprite_piece.rb
         
     | 
| 
       162 
178 
     | 
    
         
             
            - lib/active_assets/active_sprites/sprite_stylesheet.rb
         
     | 
| 
         @@ -170,7 +186,9 @@ files: 
     | 
|
| 
       170 
186 
     | 
    
         
             
            - script/console
         
     | 
| 
       171 
187 
     | 
    
         
             
            - test/active_assets/active_expansions/asset_test.rb
         
     | 
| 
       172 
188 
     | 
    
         
             
            - test/active_assets/active_expansions/expansions_test.rb
         
     | 
| 
       173 
     | 
    
         
            -
            - test/active_assets/active_sprites/ 
     | 
| 
      
 189 
     | 
    
         
            +
            - test/active_assets/active_sprites/runners/chunky_png_runner_test.rb
         
     | 
| 
      
 190 
     | 
    
         
            +
            - test/active_assets/active_sprites/runners/mini_magick_runner_test.rb
         
     | 
| 
      
 191 
     | 
    
         
            +
            - test/active_assets/active_sprites/runners/rmagick_runner_test.rb
         
     | 
| 
       174 
192 
     | 
    
         
             
            - test/active_assets/active_sprites/sprite_piece_test.rb
         
     | 
| 
       175 
193 
     | 
    
         
             
            - test/active_assets/active_sprites/sprite_test.rb
         
     | 
| 
       176 
194 
     | 
    
         
             
            - test/active_assets/active_sprites/sprites_test.rb
         
     | 
| 
         @@ -236,8 +254,7 @@ files: 
     | 
|
| 
       236 
254 
     | 
    
         
             
            - test/fixtures/rails_root/public/stylesheets/bar/bas.css
         
     | 
| 
       237 
255 
     | 
    
         
             
            - test/fixtures/rails_root/public/stylesheets/bas/bar.css
         
     | 
| 
       238 
256 
     | 
    
         
             
            - test/helper.rb
         
     | 
| 
       239 
     | 
    
         
            -
            - test/ 
     | 
| 
       240 
     | 
    
         
            -
            - test/raster_graphics_test.rb
         
     | 
| 
      
 257 
     | 
    
         
            +
            - test/support/abstract_runner.rb
         
     | 
| 
       241 
258 
     | 
    
         
             
            - test/support/rails_helper.rb
         
     | 
| 
       242 
259 
     | 
    
         
             
            has_rdoc: true
         
     | 
| 
       243 
260 
     | 
    
         
             
            homepage: http://github.com/shwoodard/active_assets
         
     | 
| 
         @@ -272,11 +289,13 @@ rubyforge_project: activeassets 
     | 
|
| 
       272 
289 
     | 
    
         
             
            rubygems_version: 1.4.2
         
     | 
| 
       273 
290 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       274 
291 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       275 
     | 
    
         
            -
            summary: A Railtie that provides  
     | 
| 
      
 292 
     | 
    
         
            +
            summary: A Railtie that provides an asset management system for css, javascript, and sprites in your Rails applications and engines.
         
     | 
| 
       276 
293 
     | 
    
         
             
            test_files: 
         
     | 
| 
       277 
294 
     | 
    
         
             
            - test/active_assets/active_expansions/asset_test.rb
         
     | 
| 
       278 
295 
     | 
    
         
             
            - test/active_assets/active_expansions/expansions_test.rb
         
     | 
| 
       279 
     | 
    
         
            -
            - test/active_assets/active_sprites/ 
     | 
| 
      
 296 
     | 
    
         
            +
            - test/active_assets/active_sprites/runners/chunky_png_runner_test.rb
         
     | 
| 
      
 297 
     | 
    
         
            +
            - test/active_assets/active_sprites/runners/mini_magick_runner_test.rb
         
     | 
| 
      
 298 
     | 
    
         
            +
            - test/active_assets/active_sprites/runners/rmagick_runner_test.rb
         
     | 
| 
       280 
299 
     | 
    
         
             
            - test/active_assets/active_sprites/sprite_piece_test.rb
         
     | 
| 
       281 
300 
     | 
    
         
             
            - test/active_assets/active_sprites/sprite_test.rb
         
     | 
| 
       282 
301 
     | 
    
         
             
            - test/active_assets/active_sprites/sprites_test.rb
         
     | 
| 
         @@ -342,6 +361,5 @@ test_files: 
     | 
|
| 
       342 
361 
     | 
    
         
             
            - test/fixtures/rails_root/public/stylesheets/bar/bas.css
         
     | 
| 
       343 
362 
     | 
    
         
             
            - test/fixtures/rails_root/public/stylesheets/bas/bar.css
         
     | 
| 
       344 
363 
     | 
    
         
             
            - test/helper.rb
         
     | 
| 
       345 
     | 
    
         
            -
            - test/ 
     | 
| 
       346 
     | 
    
         
            -
            - test/raster_graphics_test.rb
         
     | 
| 
      
 364 
     | 
    
         
            +
            - test/support/abstract_runner.rb
         
     | 
| 
       347 
365 
     | 
    
         
             
            - test/support/rails_helper.rb
         
     | 
| 
         @@ -1,119 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'action_controller'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'action_view'
         
     | 
| 
       3 
     | 
    
         
            -
            require 'rack/mount'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'action_view'
         
     | 
| 
       5 
     | 
    
         
            -
            require 'fileutils'
         
     | 
| 
       6 
     | 
    
         
            -
            begin
         
     | 
| 
       7 
     | 
    
         
            -
              require 'oily_png'
         
     | 
| 
       8 
     | 
    
         
            -
            rescue LoadError
         
     | 
| 
       9 
     | 
    
         
            -
              require 'chunky_png'
         
     | 
| 
       10 
     | 
    
         
            -
            end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            module ActiveAssets
         
     | 
| 
       13 
     | 
    
         
            -
              module ActiveSprites
         
     | 
| 
       14 
     | 
    
         
            -
                class ChunkyPngRunner
         
     | 
| 
       15 
     | 
    
         
            -
                  class AssetContext < ActionView::Base
         
     | 
| 
       16 
     | 
    
         
            -
                  end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                  def initialize(sprites)
         
     | 
| 
       19 
     | 
    
         
            -
                    @sprites = if ENV['SPRITE']
         
     | 
| 
       20 
     | 
    
         
            -
                      sprites.select do |name, sprite|
         
     | 
| 
       21 
     | 
    
         
            -
                        ENV['SPRITE'].split(',').map(&:strip).any? do |sp|
         
     | 
| 
       22 
     | 
    
         
            -
                          # were going to be very forgiving
         
     | 
| 
       23 
     | 
    
         
            -
                          name == sp ||
         
     | 
| 
       24 
     | 
    
         
            -
                          name == sp.to_sym ||
         
     | 
| 
       25 
     | 
    
         
            -
                          name == ::Rack::Mount::Utils.normalize_path(sp)
         
     | 
| 
       26 
     | 
    
         
            -
                        end
         
     | 
| 
       27 
     | 
    
         
            -
                      end.map(&:last)
         
     | 
| 
       28 
     | 
    
         
            -
                    else
         
     | 
| 
       29 
     | 
    
         
            -
                      sprites.values
         
     | 
| 
       30 
     | 
    
         
            -
                    end
         
     | 
| 
       31 
     | 
    
         
            -
                  end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
                  def generate!(railtie = Rails.application, debug = ENV['DEBUG'])
         
     | 
| 
       34 
     | 
    
         
            -
                    p "Engine Class Name:  #{railtie.class.name}" if debug
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                    context = setup_context(railtie)
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                    @sprites.each do |sprite|
         
     | 
| 
       39 
     | 
    
         
            -
                      next if sprite.sprite_pieces.empty?
         
     | 
| 
       40 
     | 
    
         
            -
                      sprite_path = sanitize_asset_path(context.image_path(sprite.path))
         
     | 
| 
       41 
     | 
    
         
            -
                      p "Sprite Path: #{sprite_path}" if debug
         
     | 
| 
       42 
     | 
    
         
            -
                      sprite_stylesheet_path = sanitize_asset_path(context.stylesheet_path(sprite.stylesheet_path))
         
     | 
| 
       43 
     | 
    
         
            -
                      p "Sprite Stylesheet Path: #{sprite_stylesheet_path}" if debug
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                      orientation = sprite.orientation.to_s
         
     | 
| 
       46 
     | 
    
         
            -
                      sprite_pieces = sprite.sprite_pieces
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                      begin
         
     | 
| 
       49 
     | 
    
         
            -
                        width, height = 0, 0
         
     | 
| 
       50 
     | 
    
         
            -
                        image_list = []
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                        sprite_pieces.each do |sp|
         
     | 
| 
       53 
     | 
    
         
            -
                          sprite_piece_path = File.join(railtie.config.paths.public.to_a.first, sanitize_asset_path(context.image_path(sp.path)))
         
     | 
| 
       54 
     | 
    
         
            -
                          sp_image =  ChunkyPNG::Image.from_file(sprite_piece_path)
         
     | 
| 
       55 
     | 
    
         
            -
                          image_list << sp_image
         
     | 
| 
       56 
     | 
    
         
            -
                          sp.details = SpritePiece::Details.new(
         
     | 
| 
       57 
     | 
    
         
            -
                            sprite.url.present? ? sprite.url : sprite_path,
         
     | 
| 
       58 
     | 
    
         
            -
                            orientation == Sprite::Orientation::VERTICAL ? 0 : width,
         
     | 
| 
       59 
     | 
    
         
            -
                            orientation == Sprite::Orientation::VERTICAL ? height : 0,
         
     | 
| 
       60 
     | 
    
         
            -
                            sp_image.width,
         
     | 
| 
       61 
     | 
    
         
            -
                            sp_image.height
         
     | 
| 
       62 
     | 
    
         
            -
                          )
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
                          width = orientation == Sprite::Orientation::HORIZONTAL ? width + sp_image.width : [width, sp_image.width].max
         
     | 
| 
       65 
     | 
    
         
            -
                          height = orientation == Sprite::Orientation::VERTICAL ? height + sp_image.height : [height, sp_image.height].max
         
     | 
| 
       66 
     | 
    
         
            -
                        end
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                        @sprite = ChunkyPNG::Image.new(width, height, ChunkyPNG::Color::TRANSPARENT)
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
                        image_list.each_with_index do |image, i|
         
     | 
| 
       71 
     | 
    
         
            -
                          @sprite.replace(image, sprite_pieces[i].details.x, sprite_pieces[i].details.y)
         
     | 
| 
       72 
     | 
    
         
            -
                        end
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
                        stylesheet = SpriteStylesheet.new(sprite_pieces)
         
     | 
| 
       75 
     | 
    
         
            -
                        stylesheet.write File.join(railtie.config.paths.public.to_a.first, sprite_stylesheet_path)
         
     | 
| 
       76 
     | 
    
         
            -
                        write File.join(railtie.config.paths.public.to_a.first, sprite_path), sprite.quality
         
     | 
| 
       77 
     | 
    
         
            -
                      ensure
         
     | 
| 
       78 
     | 
    
         
            -
                        finish
         
     | 
| 
       79 
     | 
    
         
            -
                      end
         
     | 
| 
       80 
     | 
    
         
            -
                    end
         
     | 
| 
       81 
     | 
    
         
            -
                  end
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
                  private
         
     | 
| 
       84 
     | 
    
         
            -
                    def write(path, quality = nil)
         
     | 
| 
       85 
     | 
    
         
            -
                      FileUtils.mkdir_p(File.dirname(path))
         
     | 
| 
       86 
     | 
    
         
            -
                      @sprite.save(path)
         
     | 
| 
       87 
     | 
    
         
            -
                    end
         
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
                    def finish
         
     | 
| 
       90 
     | 
    
         
            -
                      @sprite = nil
         
     | 
| 
       91 
     | 
    
         
            -
                    end
         
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
                    def sanitize_asset_path(path)
         
     | 
| 
       94 
     | 
    
         
            -
                      path.split('?').first
         
     | 
| 
       95 
     | 
    
         
            -
                    end
         
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
     | 
    
         
            -
                    def setup_context(railtie)
         
     | 
| 
       98 
     | 
    
         
            -
                      unless railtie.config.respond_to?(:action_controller)
         
     | 
| 
       99 
     | 
    
         
            -
                        railtie.config.action_controller = ActiveSupport::OrderedOptions.new
         
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
     | 
    
         
            -
                        paths   = railtie.config.paths
         
     | 
| 
       102 
     | 
    
         
            -
                        options = railtie.config.action_controller
         
     | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
       104 
     | 
    
         
            -
                        options.assets_dir           ||= paths.public.to_a.first
         
     | 
| 
       105 
     | 
    
         
            -
                        options.javascripts_dir      ||= paths.public.javascripts.to_a.first
         
     | 
| 
       106 
     | 
    
         
            -
                        options.stylesheets_dir      ||= paths.public.stylesheets.to_a.first
         
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
                        ActiveSupport.on_load(:action_controller) do
         
     | 
| 
       109 
     | 
    
         
            -
                          options.each { |k,v| send("#{k}=", v) }
         
     | 
| 
       110 
     | 
    
         
            -
                        end
         
     | 
| 
       111 
     | 
    
         
            -
                      end
         
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
                      controller = ActionController::Base.new
         
     | 
| 
       114 
     | 
    
         
            -
                      AssetContext.new(railtie.config.action_controller, {}, controller)
         
     | 
| 
       115 
     | 
    
         
            -
                    end
         
     | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
       117 
     | 
    
         
            -
                end
         
     | 
| 
       118 
     | 
    
         
            -
              end
         
     | 
| 
       119 
     | 
    
         
            -
            end
         
     |