class Closure::Compiler::Compilation

Attributes

js_output_file[R]
log[R]

Public Class Methods

new(env, js_output_file=nil, log=nil) click to toggle source
# File lib/closure/compiler.rb, line 97
def initialize(env, js_output_file=nil, log=nil)
  @javascript = []
  @env = env
  @js_output_file = js_output_file
  @log = log
end

Public Instance Methods

<<(javascript) click to toggle source

Appends a string to the javascript. @param [String] javascript

# File lib/closure/compiler.rb, line 138
def <<(javascript)
  @javascript << javascript
  self
end
compiled?() click to toggle source

True when compilation actually happened. False when build was up to date.

# File lib/closure/compiler.rb, line 106
def compiled?
  !!@log
end
javascript() click to toggle source

Always returns the compiled javascript (possibly an empty string). @example

<%= goog.compile(args) %>
# File lib/closure/compiler.rb, line 146
def javascript
  if @js_output_file
    file_js = File.read(@js_output_file) rescue ''
    ([file_js] + @javascript).join nil
  else
    @javascript.join nil
  end
end
Also aliased as: to_s
to_response() click to toggle source

Turn the compiled javascript into a Rack::Response object. Success and warning messages, which aren't raised like errors, will be logged to the javascript console. @example

<% @response = goog.compile(args).to_response %>

@return (Rack::Response)

# File lib/closure/compiler.rb, line 116
def to_response
  if !log and @javascript.empty? and @js_output_file
    response = FileResponse.new @env, @js_output_file, 'application/javascript'
  else
    response = Rack::Response.new
    response.headers['Content-Type'] = 'application/javascript'
    response.headers["Cache-Control"] = 'max-age=0, private, must-revalidate'
    if log
      consolable_log = '"Closure Compiler: %s\n\n", ' + log.rstrip.dump
      if log.split("\n").first =~ / 0 warn/i
        response.write "try{console.log(#{consolable_log})}catch(err){};\n"
      else
        response.write "try{console.warn(#{consolable_log})}catch(err){};\n"
      end
    end
    response.write javascript
  end
  response
end
to_s()
Alias for: javascript