Class: RailsSprite::StylesheetGenerator
- Inherits:
-
Object
- Object
- RailsSprite::StylesheetGenerator
- Defined in:
- lib/rails_sprite/stylesheet_generator.rb
Class Method Summary collapse
- .composite_css_scss(result) ⇒ Object
- .composite_css_scss_erb(result) ⇒ Object
- .generate(options = {}) ⇒ Object
Class Method Details
.composite_css_scss(result) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/rails_sprite/stylesheet_generator.rb', line 59 def self.composite_css_scss result styles = [] styles << <<-END_CSS // 将下面3行,放入页面中(仅供参考) // .#{result[:css_class_shared]} { // background-image: url(<%= image_path("#{result[:image_scope_name]}") %>); // } END_CSS styles << <<-END_CSS .#{result[:css_class_shared]} { background-repeat: no-repeat; background-size: #{result[:background_x]}px #{result[:background_y]}px; } END_CSS result[:styles].each do |style| styles << <<-END_CSS .#{style[:class]} { background-position: #{style[:x]} -#{style[:y]}; height: #{style[:height]}; width: #{style[:width]}; } END_CSS end styles.join("\n") end |
.composite_css_scss_erb(result) ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/rails_sprite/stylesheet_generator.rb', line 89 def self.composite_css_scss_erb result styles = [] styles << <<-END_CSS .#{result[:css_class_shared]} { background-image: url(<%= image_path("#{result[:image_scope_name]}") %>); background-repeat: no-repeat; background-size: #{result[:background_x]}px #{result[:background_y]}px; } END_CSS result[:styles].each do |style| styles << <<-END_CSS .#{style[:class]} { background-position: #{style[:x]} -#{style[:y]}; height: #{style[:height]}; width: #{style[:width]}; } 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 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/rails_sprite/stylesheet_generator.rb', line 4 def self.generate ={} zoom = .fetch(:zoom, 1).to_i css_class_prefix = [:css_class_prefix] css_class_shared = [:css_class_shared] css_extend = [:css_extend] image_scope_name = [:image_scope_name] file_infos = [:file_infos] stylesheet_to = [:stylesheet_to] result = {} styles = [] file_infos.each do |file_info| style = {} style[:width] = "#{file_info[:width] / zoom}px" style[:height] = "#{file_info[:height] / zoom}px" style[:x] = "#{file_info[:x] / zoom}px" style[:y] = "#{file_info[:y] / zoom}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 ## 高度取总和 result[:background_y] = file_infos.map do |file_info| file_info[:height] end.sum / zoom ## 宽度取最大值 result[:background_x] = file_infos.map do |file_info| file_info[:width] end.max / zoom 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 |