Home | History | Annotate | Download | only in jstemplate
      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