Index: mojo/public/dart/third_party/analyzer/lib/src/task/general.dart |
diff --git a/mojo/public/dart/third_party/analyzer/lib/src/task/general.dart b/mojo/public/dart/third_party/analyzer/lib/src/task/general.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..72f80fde5520670f3e84aefe28a43880c135945f |
--- /dev/null |
+++ b/mojo/public/dart/third_party/analyzer/lib/src/task/general.dart |
@@ -0,0 +1,81 @@ |
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+library analyzer.src.task.general; |
+ |
+import 'package:analyzer/src/generated/engine.dart' hide AnalysisTask; |
+import 'package:analyzer/src/generated/source.dart'; |
+import 'package:analyzer/task/general.dart'; |
+import 'package:analyzer/task/model.dart'; |
+ |
+/** |
+ * A task that gets the contents of the source associated with an analysis |
+ * target. |
+ */ |
+class GetContentTask extends SourceBasedAnalysisTask { |
+ /** |
+ * The task descriptor describing this kind of task. |
+ */ |
+ static final TaskDescriptor DESCRIPTOR = new TaskDescriptor('GetContentTask', |
+ createTask, buildInputs, <ResultDescriptor>[CONTENT, MODIFICATION_TIME]); |
+ |
+ /** |
+ * Initialize a newly created task to access the content of the source |
+ * associated with the given [target] in the given [context]. |
+ */ |
+ GetContentTask(AnalysisContext context, AnalysisTarget target) |
+ : super(context, target); |
+ |
+ @override |
+ TaskDescriptor get descriptor => DESCRIPTOR; |
+ |
+ @override |
+ internalPerform() { |
+ Source source = getRequiredSource(); |
+ try { |
+ TimestampedData<String> data = context.getContents(source); |
+ outputs[CONTENT] = data.data; |
+ outputs[MODIFICATION_TIME] = data.modificationTime; |
+ } catch (exception) { |
+ outputs[CONTENT] = ''; |
+ outputs[MODIFICATION_TIME] = -1; |
+ } |
+ } |
+ |
+ /** |
+ * Return a map from the names of the inputs of this kind of task to the task |
+ * input descriptors describing those inputs for a task with the given [target]. |
+ */ |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ return <String, TaskInput>{}; |
+ } |
+ |
+ /** |
+ * Create a [GetContentTask] based on the given [target] in the given |
+ * [context]. |
+ */ |
+ static GetContentTask createTask( |
+ AnalysisContext context, AnalysisTarget target) { |
+ return new GetContentTask(context, target); |
+ } |
+} |
+ |
+/** |
+ * A base class for analysis tasks whose target is expected to be a source. |
+ */ |
+abstract class SourceBasedAnalysisTask extends AnalysisTask { |
+ /** |
+ * Initialize a newly created task to perform analysis within the given |
+ * [context] in order to produce results for the given [target]. |
+ */ |
+ SourceBasedAnalysisTask(AnalysisContext context, AnalysisTarget target) |
+ : super(context, target); |
+ |
+ @override |
+ String get description { |
+ Source source = target.source; |
+ String sourceName = source == null ? '<unknown source>' : source.fullName; |
+ return '${descriptor.name} for source $sourceName'; |
+ } |
+} |