10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/assets_booster/compiler/closure.rb', line 10
def compile(code)
post_data = {
'js_code'=> code,
'compilation_level' => 'SIMPLE_OPTIMIZATIONS',
'output_format' => 'text',
'output_info' => 'compiled_code'
}
uri = URI.parse('http://closure-compiler.appspot.com/compile')
res = Net::HTTP.post_form(uri, post_data)
case res
when Net::HTTPSuccess
data = res.body.strip
if data =~ /^Error\(22\): Too many compiles performed recently./
raise RuntimeError, "Google's Closure Compiler complained: "+data
end
if code.size > 0 && data.size < 1
post_data['output_info'] = 'errors'
res = Net::HTTP.post_form(uri, post_data)
raise RuntimeError, "Google's Closure Compiler failed: "+res.body
end
data
else
raise RuntimeError, "HTTP request TO Google's Closure Compiler failed: "+res.to_s
end
end
|