Class: Yuicssmin

Inherits:
Object
  • Object
show all
Defined in:
lib/yuicssmin.rb,
lib/yuicssmin/version.rb

Constant Summary collapse

Yui =
File.expand_path('../yuicssmin/cssmin.js', __FILE__)
VERSION =
"1.0.1"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeYuicssmin

Read Javascript port of YUI CSS compressor



18
19
20
# File 'lib/yuicssmin.rb', line 18

def initialize
  @context = ExecJS.compile(File.open(Yui, 'r:UTF-8').read)
end

Class Method Details

.compress(source, length = 5000) ⇒ String

Compress CSS with YUI

Parameters:

  • CSS (String, #read)

    String or IO-like object that supports #read

  • length (Integer) (defaults to: 5000)

    Maximum line length

Returns:

  • (String)

    Compressed CSS



29
30
31
# File 'lib/yuicssmin.rb', line 29

def self.compress(source, length = 5000)
  self.new.compress(source, length)
end

Instance Method Details

#compress(source = '', length = 5000) ⇒ String

Compress CSS with YUI

Parameters:

  • CSS (String, #read)

    String or IO-like object that supports #read

  • length (Integer) (defaults to: 5000)

    Maximum line length

Returns:

  • (String)

    Compressed CSS



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/yuicssmin.rb', line 40

def compress(source = '', length = 5000)
  source = source.respond_to?(:read) ? source.read : source.to_s
  
  js = []
  js << "var result = '';"
  js << "var length = #{length};"
  js << "var source = #{MultiJson.dump(source)};"
  js << "result = YAHOO.compressor.cssmin(source, length);"    
  js << "return result;"
  
  @context.exec js.join("\n")
end