Sha256: a3159c494bc8369f371eedea72b8b98c950622162f088f5bc3e28a45a9b96016

Contents?: true

Size: 1.97 KB

Versions: 1

Compression:

Stored size: 1.97 KB

Contents

require 'active_support/configurable'

module ActiveAssets
  module ActiveSprites
    class Sprites
      include ActiveSupport::Configurable
      include Configurable
      ActiveSupport.run_load_hooks(:active_sprites, self)

      def initialize
        @sprites = Hash.new do |sprites, name|
          sprites[name] = Sprite.new
        end
      end

      def describe(&blk)
        instance_eval(&blk) if block_given?
        self
      end

      def all
        @sprites.values
      end

      def sprite(*args, &blk)
        sprite_path, stylesheet_path, options, as =
        case args.first
        when Hash
          options = args.shift
          args = *options.find {|k,v| k.is_a?(String) }
          (args << options).tap {|a| a.last.delete(a.first)}
        when Symbol
          # todo make default paths configurable
          ["sprites/#{args.first.to_s}.png", "sprites/#{args.first.to_s}.css", args.extract_options!, args.first]
        when String
          path = args.first
          [path, "#{File.dirname(path)}/#{File.basename(path, File.extname(path))}.css", args.extract_options!]
        end
        options.reverse_merge!(:as => as)
        @sprites[options[:as] || sprite_path].configure(sprite_path, stylesheet_path, options, &blk)
      end

      def [](name)
        return nil unless @sprites.has_key?(name)
        @sprites[name]
      end

      def clear
        @sprites.clear
      end

      def generate!(railtie = Rails.application)
        begin
          case sprite_backend
          when :rmagick
            require 'rmagick'
            RmagickRunner.new(@sprites).generate!(railtie)
          when :chunky_png
            begin
              require 'oily_png'
              ChunkyPngRunner.new(@sprites).generate!(railtie)
            rescue LoadError
              require 'chunky_png'
              ChunkyPngRunner.new(@sprites).generate!(railtie)
              raise
            end
          end
        rescue LoadError
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
active_assets-0.2.3 lib/active_assets/active_sprites/sprites.rb