Sha256: b58b3407ba78fd8707c43719d18ec0371377d53eff8d420877bf269605927855

Contents?: true

Size: 1.32 KB

Versions: 3

Compression:

Stored size: 1.32 KB

Contents

module ActiveAssets
  module ActiveSprites
    class Sprites
      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!
        Runner.new(@sprites).generate!
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
active_assets-0.2.0.rc3 lib/active_assets/active_sprites/sprites.rb
active_assets-0.2.0.rc2 lib/active_assets/active_sprites/sprites.rb
active_assets-0.2.0.rc lib/active_assets/active_sprites/sprites.rb