1 #!/usr/bin/env python 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. 3 # Use of this source code is governed by a BSD-style license that can be 4 # found in the LICENSE file. 5 6 """Combines the javascript files needed by jstemplate into a single file.""" 7 8 import httplib 9 import urllib 10 11 12 def main(): 13 srcs = ['util.js', 'jsevalcontext.js', 'jstemplate.js', 'exports.js'] 14 out = 'jstemplate_compiled.js' 15 16 # Wrap the output in an anonymous function to prevent poluting the global 17 # namespace. 18 output_wrapper = '(function(){%s})()' 19 20 # Define the parameters for the POST request and encode them in a URL-safe 21 # format. See http://code.google.com/closure/compiler/docs/api-ref.html for 22 # API reference. 23 params = urllib.urlencode( 24 map(lambda src: ('js_code', file(src).read()), srcs) + 25 [ 26 ('compilation_level', 'ADVANCED_OPTIMIZATIONS'), 27 ('output_format', 'text'), 28 ('output_info', 'compiled_code'), 29 ]) 30 31 # Always use the following value for the Content-type header. 32 headers = {'Content-type': 'application/x-www-form-urlencoded'} 33 conn = httplib.HTTPConnection('closure-compiler.appspot.com') 34 conn.request('POST', '/compile', params, headers) 35 response = conn.getresponse() 36 out_file = file(out, 'w') 37 out_file.write(output_wrapper % response.read()) 38 out_file.close() 39 conn.close() 40 return 0 41 42 43 if __name__ == '__main__': 44 sys.exit(main()) 45