Chromium Code Reviews| OLD | NEW | 
|---|---|
| 1 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 
| 2 # for details. All rights reserved. Use of this source code is governed by a | 2 # for details. All rights reserved. Use of this source code is governed by a | 
| 3 # BSD-style license that can be found in the LICENSE file. | 3 # BSD-style license that can be found in the LICENSE file. | 
| 4 | 4 | 
| 5 #!/usr/bin/env python | 5 #!/usr/bin/env python | 
| 6 # | 6 # | 
| 7 | 7 | 
| 8 """Rewrites HTML files, converting Dart script sections into JavaScript. | 8 """Rewrites HTML files, converting Dart script sections into JavaScript. | 
| 9 | 9 | 
| 10 Process HTML files, and internally changes script sections that use Dart code | 10 Process HTML files, and internally changes script sections that use Dart code | 
| (...skipping 20 matching lines...) Expand all Loading... | |
| 31 DOM_IMPORT_MATCHER = re.compile( | 31 DOM_IMPORT_MATCHER = re.compile( | 
| 32 r"^#import\(['\"]dart\:dom['\"].*\);", re.MULTILINE) | 32 r"^#import\(['\"]dart\:dom['\"].*\);", re.MULTILINE) | 
| 33 HTML_IMPORT_MATCHER = re.compile( | 33 HTML_IMPORT_MATCHER = re.compile( | 
| 34 r"^#import\(['\"]dart\:html['\"].*\);", re.MULTILINE) | 34 r"^#import\(['\"]dart\:html['\"].*\);", re.MULTILINE) | 
| 35 | 35 | 
| 36 FROG_NOT_FOUND_ERROR = ( | 36 FROG_NOT_FOUND_ERROR = ( | 
| 37 """Couldn't find compiler: please run the following commands: | 37 """Couldn't find compiler: please run the following commands: | 
| 38 $ cd %s/frog | 38 $ cd %s/frog | 
| 39 $ ./tools/build.py -m release""") | 39 $ ./tools/build.py -m release""") | 
| 40 | 40 | 
| 41 ENTRY_POINT_DOM = """ | 41 ENTRY_POINT = """ | 
| 42 #library('entry'); | 42 #library('entry'); | 
| 43 #import('dart:dom'); | |
| 44 #import('%s', prefix: 'original'); | 43 #import('%s', prefix: 'original'); | 
| 45 main() { | 44 main() => original.main(); | 
| 
 
vsm
2012/03/28 17:17:57
I think we can just get rid of this trampoline fil
 
kasperl
2012/03/28 17:56:29
I think the plan is to get rid of htmlconverter.py
 
 | |
| 46 window.addEventListener('DOMContentLoaded', (e) => original.main(), false); | |
| 47 } | |
| 48 """ | |
| 49 | |
| 50 ENTRY_POINT_HTML = """ | |
| 51 #library('entry'); | |
| 52 #import('dart:html'); | |
| 53 #import('%s', prefix: 'original'); | |
| 54 main() { | |
| 55 window.on.contentLoaded.add((e) => original.main()); | |
| 56 } | |
| 57 """ | 45 """ | 
| 58 | 46 | 
| 59 CSS_TEMPLATE = '<style type="text/css">%s</style>' | 47 CSS_TEMPLATE = '<style type="text/css">%s</style>' | 
| 60 CHROMIUM_SCRIPT_TEMPLATE = '<script type="application/javascript">%s</script>' | 48 CHROMIUM_SCRIPT_TEMPLATE = '<script type="application/javascript">%s</script>' | 
| 61 | 49 | 
| 62 DARTIUM_TO_JS_SCRIPT = """ | 50 DARTIUM_TO_JS_SCRIPT = """ | 
| 63 <script type="text/javascript"> | 51 <script type="text/javascript"> | 
| 64 (function() { | 52 (function() { | 
| 65 // Let the user know that Dart is required. | 53 // Let the user know that Dart is required. | 
| 66 if (!window.navigator.webkitStartDart) { | 54 if (!window.navigator.webkitStartDart) { | 
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 142 body = adjustImports(body) | 130 body = adjustImports(body) | 
| 143 | 131 | 
| 144 if HTML_IMPORT_MATCHER.search(body): | 132 if HTML_IMPORT_MATCHER.search(body): | 
| 145 useDartHtml = True | 133 useDartHtml = True | 
| 146 | 134 | 
| 147 inputfile = join(indir, 'code.dart') | 135 inputfile = join(indir, 'code.dart') | 
| 148 with open(inputfile, 'w') as f: | 136 with open(inputfile, 'w') as f: | 
| 149 f.write("#library('inlinedcode');\n") | 137 f.write("#library('inlinedcode');\n") | 
| 150 f.write(body) | 138 f.write(body) | 
| 151 | 139 | 
| 152 if useDartHtml: | |
| 153 entryPoint = ENTRY_POINT_HTML | |
| 154 else: | |
| 155 entryPoint = ENTRY_POINT_DOM | |
| 156 | |
| 157 wrappedfile = join(indir, 'entry.dart') | 140 wrappedfile = join(indir, 'entry.dart') | 
| 158 with open(wrappedfile, 'w') as f: | 141 with open(wrappedfile, 'w') as f: | 
| 159 f.write(entryPoint % inputfile) | 142 f.write(ENTRY_POINT % inputfile) | 
| 160 | 143 | 
| 161 status, out, err = execute(self.compileCommand(wrappedfile, outdir), | 144 status, out, err = execute(self.compileCommand(wrappedfile, outdir), | 
| 162 self.verbose) | 145 self.verbose) | 
| 163 if status: | 146 if status: | 
| 164 raise ConverterException('compilation errors') | 147 raise ConverterException('compilation errors') | 
| 165 | 148 | 
| 166 # Inline the compiled code in the page | 149 # Inline the compiled code in the page | 
| 167 with open(self.outputFileName(wrappedfile, outdir), 'r') as f: | 150 with open(self.outputFileName(wrappedfile, outdir), 'r') as f: | 
| 168 res = f.read() | 151 res = f.read() | 
| 169 | 152 | 
| (...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 566 if 'dartium' in options.target: | 549 if 'dartium' in options.target: | 
| 567 convertForDartium(filename, options.out, | 550 convertForDartium(filename, options.out, | 
| 568 outfile.replace(extension, '-dart' + extension), options.verbose) | 551 outfile.replace(extension, '-dart' + extension), options.verbose) | 
| 569 except Exception as e: | 552 except Exception as e: | 
| 570 print "%sERROR%s: %s" % (RED_COLOR, NO_COLOR, str(e)) | 553 print "%sERROR%s: %s" % (RED_COLOR, NO_COLOR, str(e)) | 
| 571 return 1 | 554 return 1 | 
| 572 return 0 | 555 return 0 | 
| 573 | 556 | 
| 574 if __name__ == '__main__': | 557 if __name__ == '__main__': | 
| 575 sys.exit(main()) | 558 sys.exit(main()) | 
| OLD | NEW |