| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 library dev_compiler.src.codegen.html_codegen; | 5 library dev_compiler.src.codegen.html_codegen; |
| 6 | 6 |
| 7 import 'package:html5lib/dom.dart'; | 7 import 'package:html5lib/dom.dart'; |
| 8 import 'package:html5lib/parser.dart' show parseFragment; | 8 import 'package:html5lib/parser.dart' show parseFragment; |
| 9 import 'package:logging/logging.dart' show Logger; | 9 import 'package:logging/logging.dart' show Logger; |
| 10 import 'package:path/path.dart' as path; | 10 import 'package:path/path.dart' as path; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 if (n is ResourceSourceNode) resources.add(n); | 49 if (n is ResourceSourceNode) resources.add(n); |
| 50 }, includeParts: false); | 50 }, includeParts: false); |
| 51 | 51 |
| 52 String mainLibraryName; | 52 String mainLibraryName; |
| 53 var fragment = new DocumentFragment(); | 53 var fragment = new DocumentFragment(); |
| 54 for (var resource in resources) { | 54 for (var resource in resources) { |
| 55 var resourcePath = resourceOutputPath(resource.uri, root.uri); | 55 var resourcePath = resourceOutputPath(resource.uri, root.uri); |
| 56 if (resource.cachingHash != null) { | 56 if (resource.cachingHash != null) { |
| 57 resourcePath = _addHash(resourcePath, resource.cachingHash); | 57 resourcePath = _addHash(resourcePath, resource.cachingHash); |
| 58 } | 58 } |
| 59 if (path.extension(resourcePath) == '.css') { | 59 var ext = path.extension(resourcePath); |
| 60 if (ext == '.css') { |
| 60 fragment.nodes.add(_cssInclude(resourcePath)); | 61 fragment.nodes.add(_cssInclude(resourcePath)); |
| 61 } else { | 62 } else if (ext == '.js') { |
| 62 fragment.nodes.add(_libraryInclude(resourcePath)); | 63 fragment.nodes.add(_libraryInclude(resourcePath)); |
| 63 } | 64 } |
| 64 } | 65 } |
| 65 if (!options.checkSdk) fragment.nodes.add(_miniMockSdk); | |
| 66 for (var lib in libraries) { | 66 for (var lib in libraries) { |
| 67 var info = lib.info; | 67 var info = lib.info; |
| 68 if (info == null) continue; | 68 if (info == null) continue; |
| 69 if (info.isEntry) mainLibraryName = jsLibraryName(info.library); | 69 if (info.isEntry) mainLibraryName = jsLibraryName(info.library); |
| 70 var jsPath = jsOutputPath(info, root.uri); | 70 var jsPath = jsOutputPath(info, root.uri); |
| 71 if (lib.cachingHash != null) { | 71 if (lib.cachingHash != null) { |
| 72 jsPath = _addHash(jsPath, lib.cachingHash); | 72 jsPath = _addHash(jsPath, lib.cachingHash); |
| 73 } | 73 } |
| 74 fragment.nodes.add(_libraryInclude(jsPath)); | 74 fragment.nodes.add(_libraryInclude(jsPath)); |
| 75 } | 75 } |
| (...skipping 18 matching lines...) Expand all Loading... |
| 94 return parseFragment('<script>$code</script>\n'); | 94 return parseFragment('<script>$code</script>\n'); |
| 95 } | 95 } |
| 96 | 96 |
| 97 /// Convert the outputPath to include the hash in it. This function is the | 97 /// Convert the outputPath to include the hash in it. This function is the |
| 98 /// reverse of what the server does to determine whether a request needs to have | 98 /// reverse of what the server does to determine whether a request needs to have |
| 99 /// cache headers added to it. | 99 /// cache headers added to it. |
| 100 _addHash(String outPath, String hash) { | 100 _addHash(String outPath, String hash) { |
| 101 return path.join('cached', hash, outPath); | 101 return path.join('cached', hash, outPath); |
| 102 } | 102 } |
| 103 | 103 |
| 104 /// A script tag with a tiny mock of the core SDK. This is just used for testing | |
| 105 /// some small samples. | |
| 106 // TODO(sigmund,jmesserly): remove. | |
| 107 Node get _miniMockSdk => parseFragment(''' | |
| 108 <script> | |
| 109 /* placehorder for unimplemented code libraries */ | |
| 110 var math = Math; | |
| 111 var core = { int: { parse: Number }, print: e => console.log(e) }; | |
| 112 </script>'''); | |
| 113 final _log = new Logger('dev_compiler.src.codegen.html_codegen'); | 104 final _log = new Logger('dev_compiler.src.codegen.html_codegen'); |
| OLD | NEW |