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

Unified Diff: pkg/polymer/lib/src/build/linter.dart

Issue 112843004: Add linter by default for polymer's pub-build, also cleans up the linter code. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years 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: pkg/polymer/lib/src/build/linter.dart
diff --git a/pkg/polymer/lib/src/build/linter.dart b/pkg/polymer/lib/src/build/linter.dart
index 75374f59926cc69fef6e43874bd4725128541f32..fb2191e13b2bc0c89d00733829c5abaa982bb48e 100644
--- a/pkg/polymer/lib/src/build/linter.dart
+++ b/pkg/polymer/lib/src/build/linter.dart
@@ -21,8 +21,6 @@ import 'package:source_maps/span.dart';
import 'common.dart';
import 'utils.dart';
-typedef String MessageFormatter(String kind, String message, Span span);
-
/**
* A linter that checks for common Polymer errors and produces warnings to
* show on the editor or the command line. Leaves sources unchanged, but creates
@@ -34,24 +32,19 @@ class Linter extends Transformer with PolymerTransformer {
/** Only run on .html files. */
final String allowedExtensions = '.html';
- final MessageFormatter _formatter;
-
- Linter(this.options, [this._formatter]);
+ Linter(this.options);
Future apply(Transform transform) {
- var wrapper = new _LoggerInterceptor(transform, _formatter);
var seen = new Set<AssetId>();
var primary = transform.primaryInput;
var id = primary.id;
- wrapper.addOutput(primary); // this phase is analysis only
+ transform.addOutput(primary); // this phase is analysis only
seen.add(id);
- return readPrimaryAsHtml(wrapper).then((document) {
- return _collectElements(document, id, wrapper, seen).then((elements) {
+ return readPrimaryAsHtml(transform).then((document) {
+ return _collectElements(document, id, transform, seen).then((elements) {
bool isEntrypoint = options.isHtmlEntryPoint(id);
- new _LinterVisitor(wrapper, elements, isEntrypoint).run(document);
- var messagesId = id.addExtension('.messages');
- wrapper.addOutput(new Asset.fromString(messagesId,
- wrapper._messages.join('\n')));
+ new _LinterVisitor(transform.logger, elements, isEntrypoint)
+ .run(document);
});
});
}
@@ -127,72 +120,10 @@ class Linter extends Transformer with PolymerTransformer {
elements[name] = new _ElementSummary(name, extendsTag, tag.sourceSpan);
}
}
-}
-
-/** A proxy of [Transform] that returns a different logger. */
-// TODO(sigmund): get rid of this when barback supports a better way to log
-// messages without printing them.
-class _LoggerInterceptor implements Transform, TransformLogger {
Jennifer Messerly 2013/12/12 03:32:55 awesome to see this go
- final Transform _original;
- final List<String> _messages = [];
- final MessageFormatter _formatter;
-
- _LoggerInterceptor(this._original, MessageFormatter formatter)
- : _formatter = formatter == null ? consoleFormatter : formatter;
- TransformLogger get logger => this;
-
- noSuchMethod(Invocation m) => reflect(_original).delegate(m);
-
- // form TransformLogger:
- void warning(String message, {AssetId asset, Span span})
- => _write('warning', message, span);
-
- void error(String message, {AssetId asset, Span span})
- => _write('error', message, span);
-
- void _write(String kind, String message, Span span) {
- _messages.add(_formatter(kind, message, span));
- }
+ String toString() => 'polymer-linter';
}
-/**
- * Formatter that generates messages using a format that can be parsed
- * by tools, such as the Dart Editor, for reporting error messages.
- */
-String jsonFormatter(String kind, String message, Span span) {
- return JSON.encode((span == null)
- ? [{'method': 'warning', 'params': {'message': message}}]
- : [{'method': kind,
- 'params': {
- 'file': span.sourceUrl,
- 'message': message,
- 'line': span.start.line + 1,
- 'charStart': span.start.offset,
- 'charEnd': span.end.offset,
- }}]);
-}
-
-/**
- * Formatter that generates messages that are easy to read on the console (used
- * by default).
- */
-String consoleFormatter(String kind, String message, Span span) {
- var useColors = stdioType(stdout) == StdioType.TERMINAL;
- var levelColor = (kind == 'error') ? _RED_COLOR : _MAGENTA_COLOR;
- var output = new StringBuffer();
- if (useColors) output.write(levelColor);
- output..write(kind)..write(' ');
- if (useColors) output.write(_NO_COLOR);
- if (span == null) {
- output.write(message);
- } else {
- output.write(span.getLocationMessage(message,
- useColors: useColors,
- color: levelColor));
- }
- return output.toString();
-}
/**
* Information needed about other polymer-element tags in order to validate
@@ -517,10 +448,6 @@ bool _isCustomTag(String name) {
return !_invalidTagNames.containsKey(name);
}
-const String _RED_COLOR = '\u001b[31m';
-const String _MAGENTA_COLOR = '\u001b[35m';
-const String _NO_COLOR = '\u001b[0m';
-
const String USE_INIT_DART =
'To run a polymer application, you need to call "initPolymer". You can '
'either include a generic script tag that does this for you:'

Powered by Google App Engine
This is Rietveld 408576698