Class: RailsSprite::StylesheetGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_sprite/stylesheet_generator.rb

Class Method Summary collapse

Class Method Details

.composite_css_scss_erb(result) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/rails_sprite/stylesheet_generator.rb', line 48

def self.composite_css_scss_erb result
  styles = []

  styles << <<-END_CSS
.#{result[:css_class_shared]} {
  background: url(<%= image_path("#{result[:image_scope_name]}") %>) no-repeat;
}
END_CSS

  result[:styles].each do |style|
    styles << <<-END_CSS
.#{style[:class]} {
  background-position: #{style[:x]} -#{style[:y]};
}
    END_CSS


#  .#{style[:class]} {
#    background: url(<%= image_path("#{result[:image_scope_name]}") %>) #{style[:x]} -#{style[:y]} no-repeat;
#  }
  end

  styles.join("\n")
end

.generate(options = {}) ⇒ Object



4
5
6
7
8
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
39
40
41
42
43
44
45
46
# File 'lib/rails_sprite/stylesheet_generator.rb', line 4

def self.generate options={}
  css_class_prefix = options[:css_class_prefix]
  css_class_shared = options[:css_class_shared]
  css_extend = options[:css_extend] 
  image_scope_name = options[:image_scope_name]
  file_infos = options[:file_infos]
  stylesheet_to = options[:stylesheet_to]

  result = {}

  styles = []

  file_infos.each do |file_info|
    style = {}

    style[:width] = "#{file_info[:width]}px"
    style[:height] = "#{file_info[:height]}px"
    style[:x] = "#{file_info[:x]}px"
    style[:y] = "#{file_info[:y]}px"
    style[:class] = "#{css_class_prefix}#{file_info[:file_purename]}"

    styles << style
  end


  result[:styles] = styles
  result[:image_scope_name] = image_scope_name
  result[:css_class_shared] = css_class_shared

  css_filt_content = case css_extend
                     when '.css.scss.erb', '.scss.erb'
                       composite_css_scss_erb(result)
                     else
                     end

  system "mkdir -p #{::File.dirname(stylesheet_to)}"

  ::File.open(stylesheet_to, 'w') do |file|
    file.write( css_filt_content )
  end

  result
end