Sha256: 6711f5399e22978e39d4b5b328b17dcde0807a0e8a6e976c55c41bb441c560ca

Contents?: true

Size: 1.61 KB

Versions: 1

Compression:

Stored size: 1.61 KB

Contents

module Sprite
  module Styles
    # renders standard css style rules
    class CssGenerator
      def initialize(builder)
        @builder = builder
      end

      def write(path, sprite_files)
        # set up class_name to append to each rule
        sprites_class = @builder.config['sprites_class'] ? ".#{@builder.config['sprites_class']}" : ""

        # write styles to disk
        File.open(File.join(Sprite.root, path), 'w') do |f|
          # write stylesheet file to disk
          sprite_files.each do |sprite_file, sprites|
            sprites.each do |sprite|
              # if sprite name ends with some of acceptable pseudo classes, add selector for pseudoclass also
              # for example if the sprite name is 'image_hover' and 'hover' is among acceptable pseudo classes,
              # also add selector for image:hover
              sprite_name = sprite[:name].gsub /(.*)(_)(#{@builder.config['pseudo_classes'].join "|"})$/, '\1:\3'
              selector_prefix = "#{sprites_class}.#{sprite[:group]}#{@builder.config['class_separator']}"
              selector = selector_prefix + sprite[:name]
              selector += ", #{selector_prefix}#{sprite_name}" if sprite_name != sprite[:name]

              f.puts "#{selector} {"
              f.puts "  background: url('/#{@builder.config['image_output_path']}#{sprite_file}') no-repeat #{sprite[:x]}px #{sprite[:y]}px;"
              f.puts "  width: #{sprite[:width]}px;"
              f.puts "  height: #{sprite[:height]}px;"
              f.puts "}"
            end
          end
        end
      end

      def extension
        "css"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sprite-generator-0.1.10 lib/sprite/styles/css_generator.rb