Class: Sprite::Styles::SassMixinGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/sprite/styles/sass_mixin_generator.rb

Overview

renders a yml file that is later parsed by a sass extension when generating the mixins

Instance Method Summary collapse

Constructor Details

#initialize(builder) ⇒ SassMixinGenerator

Returns a new instance of SassMixinGenerator.



5
6
7
# File 'lib/sprite/styles/sass_mixin_generator.rb', line 5

def initialize(builder)
  @builder = builder
end

Instance Method Details

#extensionObject



40
41
42
# File 'lib/sprite/styles/sass_mixin_generator.rb', line 40

def extension
  "sass"
end

#write(path, sprite_files) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/sprite/styles/sass_mixin_generator.rb', line 9

def write(path, sprite_files)    
  # write the sass mixins to disk
  File.open(File.join(Sprite.root, path), 'w') do |f|
    add_else = false

    f.puts "= sprite(!group_name, !image_name, !offset=0)"
    sprite_files.each do |sprite_file, sprites|
      sprites.each do |sprite|
        
        f << "  @"
        if add_else
          f << "else "
        end
        add_else = true
        #{sprite[:x]}px #{sprite[:y]}px
        
        if sprite[:align] == 'horizontal'
          background_offset = "\#{#{sprite[:x]}+!offset}px #{sprite[:y]}px"
        else
          background_offset = "#{sprite[:x]}px \#{#{sprite[:y]}+!offset}px"
        end
        
        f.puts %{if !group_name == "#{sprite[:group]}" and !image_name == "#{sprite[:name]}"}
        f.puts "    background: url('/#{@builder.config['image_output_path']}#{sprite_file}') no-repeat #{background_offset}"
        f.puts "    width: #{sprite[:width]}px"
        f.puts "    height: #{sprite[:height]}px"
      end
    end
  end
end