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(result) ⇒ Object



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

def self.composite_css_scss result
  styles = []

  styles << "// \u5C06\u4E0B\u97623\u884C\uFF0C\u653E\u5165\u9875\u9762\u4E2D(\u4EC5\u4F9B\u53C2\u8003)\n// .\#{result[:css_class_shared]} {\n//   background: url(<%= static_url(\"\#{result[:image_scope_name]}\") %>) no-repeat;\n// }\n"

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

.composite_css_scss_erb(result) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/rails_sprite/stylesheet_generator.rb', line 69

def self.composite_css_scss_erb result
  styles = []

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

  result[:styles].each do |style|
    styles << ".\#{style[:class]} {\n  background-position: \#{style[:x]} -\#{style[:y]};\n}\n    END_CSS\n\n\n#  .\#{style[:class]} {\n#    background: url(<%= image_path(\"\#{result[:image_scope_name]}\") %>) \#{style[:x]} -\#{style[:y]} no-repeat;\n#  }\n  end\n\n  styles.join(\"\\n\")\nend\n"

.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
47
48
# 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)
                     when '.css', '.scss'
                       composite_css_scss(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