Class: TexturePacker::CssRule

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

Instance Method Summary collapse

Constructor Details

#initializeCssRule

Returns a new instance of CssRule.



142
143
144
# File 'lib/texture_packer.rb', line 142

def initialize
  @hash = {}
end

Instance Method Details

#add(prefixs, css) ⇒ Object



146
147
148
149
150
151
152
# File 'lib/texture_packer.rb', line 146

def add(prefixs, css)
  if prefixs.size > 0
    (@hash[prefixs.first] ||= CssRule.new).add(prefixs[1..-1], css)
  else
    @css = css
  end
end

#generate_cssObject



154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/texture_packer.rb', line 154

def generate_css
  inner_css = @hash.sort_by{|prefix, obj| SELECTOR_ORDER.index(prefix) || SELECTOR_ORDER.size }.map do |prefix, obj|
    case prefix
    when nil, ''
      [obj.generate_css]
    when /\A:/
      ["&#{prefix}, &.#{prefix[1..-1]}{ ", obj.generate_css, ' }']
    when '[m]'
      ['@include mobile{ ', obj.generate_css, ' }']
    when '[tw]'
      ['&:lang(zh-TW){ ', obj.generate_css, ' }']
    when '[cn]'
      ['&:lang(zh-CN){ ', obj.generate_css, ' }']
    when '[en]'
      ['&:lang(en){ ', obj.generate_css, ' }']
    else
      ["&#{prefix}{ ", obj.generate_css, ' }']
    end
  end
  inner = inner_css.size == 0 ? '' : " #{inner_css.join('')}"
  return "#{@css}#{inner}"
end