Class: Smurf::Javascript

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(content) ⇒ Javascript

Returns a new instance of Javascript.



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/smurf/javascript.rb', line 44

def initialize(content)
  @content = nil
  java_exists = %x[which java].present?
  
  if java_exists
    @content = minify_with_closure_compiler(content)
    Rails.logger.info "Closure Compiler failed" if @content.blank?
  end
  
  if @content.blank?
    Rails.logger.info "Closure Compiler not found" unless java_exists
    @content = JSMin.minify(content)
  end
  
  @content
end

Class Method Details

.minifies?(paths) ⇒ Boolean

Returns:

  • (Boolean)


42
# File 'lib/smurf/javascript.rb', line 42

def self.minifies?(paths) !paths.grep(%r[\.js(\?\d+)?$]).empty?; end

Instance Method Details

#minifiedObject



61
# File 'lib/smurf/javascript.rb', line 61

def minified; @content end

#minify_with_closure_compiler(content) ⇒ Object



63
64
65
66
67
68
69
70
71
# File 'lib/smurf/javascript.rb', line 63

def minify_with_closure_compiler(content)
  jar_file = File.join(File.dirname(__FILE__), '..', 'closure-compiler', 'compiler.jar')
  IO.popen("java -jar #{jar_file}", "r+") do |p|
    p.write content
    p.close_write
    content = p.read
  end
  content if $? == 0
end