OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 /** | 5 /** |
6 * Part of the template compilation that concerns with extracting information | 6 * Part of the template compilation that concerns with extracting information |
7 * from the HTML parse tree. | 7 * from the HTML parse tree. |
8 */ | 8 */ |
9 library analyzer; | 9 library analyzer; |
10 | 10 |
(...skipping 679 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
690 } | 690 } |
691 | 691 |
692 /** | 692 /** |
693 * Stores a direct reference in [info] to a dart source file that was loaded | 693 * Stores a direct reference in [info] to a dart source file that was loaded |
694 * in a script tag with the 'src' attribute. | 694 * in a script tag with the 'src' attribute. |
695 */ | 695 */ |
696 void _attachExtenalScript(LibraryInfo info, Map<Path, FileInfo> files) { | 696 void _attachExtenalScript(LibraryInfo info, Map<Path, FileInfo> files) { |
697 var path = info.externalFile; | 697 var path = info.externalFile; |
698 if (path != null) { | 698 if (path != null) { |
699 info.externalCode = files[path]; | 699 info.externalCode = files[path]; |
| 700 info.externalCode.htmlFile = info; |
700 info.userCode = info.externalCode.userCode; | 701 info.userCode = info.externalCode.userCode; |
701 } | 702 } |
702 } | 703 } |
703 | 704 |
704 /** Adds a component's tag name to the names in scope for [fileInfo]. */ | 705 /** Adds a component's tag name to the names in scope for [fileInfo]. */ |
705 void _addComponent(FileInfo fileInfo, ComponentInfo componentInfo) { | 706 void _addComponent(FileInfo fileInfo, ComponentInfo componentInfo) { |
706 var existing = fileInfo.components[componentInfo.tagName]; | 707 var existing = fileInfo.components[componentInfo.tagName]; |
707 if (existing != null) { | 708 if (existing != null) { |
708 if (existing == componentInfo) { | 709 if (existing == componentInfo) { |
709 // This is the same exact component as the existing one. | 710 // This is the same exact component as the existing one. |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
861 // text/javascript. Because this might be a common error, we warn about it | 862 // text/javascript. Because this might be a common error, we warn about it |
862 // and force explicit type="text/javascript". | 863 // and force explicit type="text/javascript". |
863 // TODO(jmesserly): is this a good warning? | 864 // TODO(jmesserly): is this a good warning? |
864 _messages.warning('ignored script tag, possibly missing ' | 865 _messages.warning('ignored script tag, possibly missing ' |
865 'type="application/dart" or type="text/javascript":', | 866 'type="application/dart" or type="text/javascript":', |
866 node.sourceSpan, file: _fileInfo.path); | 867 node.sourceSpan, file: _fileInfo.path); |
867 } | 868 } |
868 | 869 |
869 if (scriptType != 'application/dart') return; | 870 if (scriptType != 'application/dart') return; |
870 | 871 |
871 var src = node.attributes["src"]; | 872 var src = node.attributes['src']; |
872 if (src != null) { | 873 if (src != null) { |
873 if (!src.endsWith('.dart')) { | 874 if (!src.endsWith('.dart')) { |
874 _messages.warning('"application/dart" scripts should ' | 875 _messages.warning('"application/dart" scripts should ' |
875 'use the .dart file extension.', | 876 'use the .dart file extension.', |
876 node.sourceSpan, file: _fileInfo.path); | 877 node.sourceSpan, file: _fileInfo.path); |
877 } | 878 } |
878 | 879 |
879 if (node.innerHtml.trim() != '') { | 880 if (node.innerHtml.trim() != '') { |
880 _messages.error('script tag has "src" attribute and also has script ' | 881 _messages.error('script tag has "src" attribute and also has script ' |
881 'text.', node.sourceSpan, file: _fileInfo.path); | 882 'text.', node.sourceSpan, file: _fileInfo.path); |
(...skipping 22 matching lines...) Expand all Loading... |
904 assert(node.nodes.length == 1); | 905 assert(node.nodes.length == 1); |
905 Text text = node.nodes[0]; | 906 Text text = node.nodes[0]; |
906 | 907 |
907 if (_currentInfo.codeAttached) { | 908 if (_currentInfo.codeAttached) { |
908 _tooManyScriptsError(node); | 909 _tooManyScriptsError(node); |
909 } else if (_currentInfo == _fileInfo && !_fileInfo.isEntryPoint) { | 910 } else if (_currentInfo == _fileInfo && !_fileInfo.isEntryPoint) { |
910 _messages.warning('top-level dart code is ignored on ' | 911 _messages.warning('top-level dart code is ignored on ' |
911 ' HTML pages that define components, but are not the entry HTML ' | 912 ' HTML pages that define components, but are not the entry HTML ' |
912 'file.', node.sourceSpan, file: _fileInfo.path); | 913 'file.', node.sourceSpan, file: _fileInfo.path); |
913 } else { | 914 } else { |
914 _currentInfo.inlinedCode = text.value; | |
915 _currentInfo.userCode = parseDartCode(text.value, | 915 _currentInfo.userCode = parseDartCode(text.value, |
916 _currentInfo.inputPath, messages:_messages); | 916 _currentInfo.inputPath, messages:_messages); |
917 if (_currentInfo.userCode.partOf != null) { | 917 if (_currentInfo.userCode.partOf != null) { |
918 _messages.error('expected a library, not a part.', | 918 _messages.error('expected a library, not a part.', |
919 node.sourceSpan, file: _fileInfo.path); | 919 node.sourceSpan, file: _fileInfo.path); |
920 } | 920 } |
921 } | 921 } |
922 } | 922 } |
923 | 923 |
924 void _tooManyScriptsError(Node node) { | 924 void _tooManyScriptsError(Node node) { |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
989 if (start == null) moveNext(); | 989 if (start == null) moveNext(); |
990 if (start < length) { | 990 if (start < length) { |
991 do { | 991 do { |
992 bindings.add(binding); | 992 bindings.add(binding); |
993 content.add(textContent); | 993 content.add(textContent); |
994 } while (moveNext()); | 994 } while (moveNext()); |
995 } | 995 } |
996 content.add(textContent); | 996 content.add(textContent); |
997 } | 997 } |
998 } | 998 } |
OLD | NEW |