Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(173)

Unified Diff: packages/web_components/lib/build/script_compactor.dart

Issue 2312183003: Removed Polymer from Observatory deps (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: packages/web_components/lib/build/script_compactor.dart
diff --git a/packages/web_components/lib/build/script_compactor.dart b/packages/web_components/lib/build/script_compactor.dart
index 12655b3e5870b6ec9fcc26b78fec78a129195ce1..c3b0001ba2992112c9b49a40e2b7de93655fabae 100644
--- a/packages/web_components/lib/build/script_compactor.dart
+++ b/packages/web_components/lib/build/script_compactor.dart
@@ -108,7 +108,7 @@ class ScriptCompactor {
primaryInput.path.replaceFirst('.html', '.bootstrap.dart'));
var buffer = new StringBuffer();
- buffer.writeln('library ${_libraryNameFor(bootstrapId)};');
+ buffer.writeln('library ${_libraryNameFor(bootstrapId, logger)};');
buffer.writeln();
var i = 0;
for (var script in importScripts) {
@@ -133,7 +133,6 @@ class ScriptCompactor {
Future _extractInlineScripts(AssetId asset, dom.Document doc) {
var scripts = doc.querySelectorAll('script[type="$dartType"]');
return Future.forEach(scripts, (script) {
- var type = script.attributes['type'];
var src = script.attributes['src'];
if (src != null) {
@@ -147,7 +146,7 @@ class ScriptCompactor {
// TODO(sigmund): ensure this path is unique (dartbug.com/12618).
var newId = primaryInput.addExtension('.$count.dart');
if (!_hasLibraryDirective(code)) {
- var libName = _libraryNameFor(primaryInput, count);
+ var libName = _libraryNameFor(primaryInput, logger, count);
code = "library $libName;\n$code";
}
@@ -162,8 +161,8 @@ class ScriptCompactor {
// the new source file.
if (primaryInput == asset) {
script.text = '';
- script.attributes['src'] = path.url.relative(newId.path,
- from: path.url.dirname(primaryInput.path));
+ script.attributes['src'] = path.url
+ .relative(newId.path, from: path.url.dirname(primaryInput.path));
}
});
});
@@ -174,7 +173,6 @@ class ScriptCompactor {
var unit = parseDirectives(code, suppressErrors: true);
var file = new SourceFile(code, url: spanUrlFor(from, to, logger));
var output = new TextEditTransaction(code, file);
- var foundLibraryDirective = false;
for (Directive directive in unit.directives) {
if (directive is UriBasedDirective) {
var uri = directive.uri.stringValue;
@@ -188,8 +186,6 @@ class ScriptCompactor {
if (newUri != uri) {
output.edit(span.start.offset, span.end.offset, "'$newUri'");
}
- } else if (directive is LibraryDirective) {
- foundLibraryDirective = true;
}
}
@@ -228,22 +224,29 @@ class ScriptCompactor {
}
/// Generate a library name for an asset.
-String _libraryNameFor(AssetId id, [int suffix]) {
+String _libraryNameFor(AssetId id, BuildLogger logger, [int suffix]) {
+ if (_isInvalidPackageName(id.package)) {
+ logger.error('Invalid package name `${id.package}`. Package names should '
+ 'be valid dart identifiers, as indicated at '
+ 'https://www.dartlang.org/tools/pub/pubspec.html#name.');
+ }
var name = '${path.withoutExtension(id.path)}_'
'${path.extension(id.path).substring(1)}';
if (name.startsWith('lib/')) name = name.substring(4);
- name = name.split('/').map((part) {
- part = part.replaceAll(_invalidLibCharsRegex, '_');
- if (part.startsWith(_numRegex)) part = '_${part}';
- return part;
- }).join(".");
+ validLibName(String name) {
+ name = name.replaceAll(_invalidLibCharsRegex, '_');
+ if (name.startsWith(_numRegex)) name = '_${name}';
+ return name;
+ }
+ name = name.split('/').map(validLibName).join(".");
var suffixString = suffix != null ? '_$suffix' : '';
return '${id.package}.${name}$suffixString';
}
/// Parse [code] and determine whether it has a library directive.
bool _hasLibraryDirective(String code) =>
- parseDirectives(code, suppressErrors: true).directives
+ parseDirectives(code, suppressErrors: true)
+ .directives
.any((d) => d is LibraryDirective);
/// Returns the dart import path to reach [id] relative to [primaryInput].
@@ -256,6 +259,12 @@ String _importPath(AssetId id, AssetId primaryInput) {
return path.url.relative(id.path, from: path.url.dirname(primaryInput.path));
}
+bool _isInvalidPackageName(String name) {
+ return name.split('.').any((part) {
+ return part.isEmpty || part.contains(_invalidLibCharsRegex);
+ });
+}
+
// Constant and final variables
final _invalidLibCharsRegex = new RegExp('[^a-z0-9_]');
final _numRegex = new RegExp('[0-9]');
« no previous file with comments | « packages/web_components/lib/build/messages.dart ('k') | packages/web_components/lib/build/web_components.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698