Class: Sphere::CSSMinifier

Inherits:
String
  • Object
show all
Defined in:
lib/sphere/css_minifier.rb

Instance Method Summary collapse

Constructor Details

#initialize(css) ⇒ CSSMinifier

Returns a new instance of CSSMinifier.



4
5
6
# File 'lib/sphere/css_minifier.rb', line 4

def initialize(css)
  super(css.dup)
end

Instance Method Details

#minify!Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/sphere/css_minifier.rb', line 8

def minify!
  gsub!(/\/\*.+?\*\//m, '')
  strip!
  gsub!(/(\A|\})(.+?)(\z|\{)/m) do |m|
    prefix, tags, suffix = $1, $2, $3
    "#{prefix}#{tags.split(',').map(&:strip).reject(&:blank?).join(',')}#{suffix}"
  end
  gsub!(/\{(.+?)\}/m) do |m|
    styles = $1.split(';').map do |style|
      key, values = style.scan(/^([^:]+)\:(.*)$/).flatten
      next nil unless key && values
      "#{key.strip}:#{values.split(',').map(&:strip).reject(&:blank?).join(',')}"
    end.compact.join(';')
    "{#{styles};}"
  end
  gsub!(/[\r\n]/m, '')
  self
end