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

Side by Side Diff: dart/sdk/lib/_internal/pub/asset/dart/serialize/transformer.dart

Issue 310233002: Expose aggregate transformers in pub. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: code review Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 pub.asset.serialize.transformer; 5 library pub.asset.serialize.transformer;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:isolate'; 8 import 'dart:isolate';
9 9
10 import 'package:barback/barback.dart'; 10 import 'package:barback/barback.dart';
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 type = 'Transformer'; 45 type = 'Transformer';
46 } 46 }
47 47
48 return { 48 return {
49 'type': type, 49 'type': type,
50 'toString': transformer.toString(), 50 'toString': transformer.toString(),
51 'port': port.sendPort 51 'port': port.sendPort
52 }; 52 };
53 } 53 }
54 54
55 /// Converts [transformer] into a serializable map.
56 Map _serializeAggregateTransformer(AggregateTransformer transformer) {
57 var port = new ReceivePort();
58 port.listen((wrappedMessage) {
59 respond(wrappedMessage, (message) {
60 if (message['type'] == 'classifyPrimary') {
61 return transformer.classifyPrimary(deserializeId(message['id']));
62 } else if (message['type'] == 'declareOutputs') {
63 return new Future.sync(() {
64 return (transformer as DeclaringAggregateTransformer).declareOutputs(
65 new ForeignDeclaringAggregateTransform(message['transform']));
66 }).then((_) => null);
67 } else {
68 assert(message['type'] == 'apply');
69
70 // Make sure we return null so that if the transformer's [apply] returns
71 // a non-serializable value it doesn't cause problems.
72 return new Future.sync(() {
73 return transformer.apply(
74 new ForeignAggregateTransform(message['transform']));
75 }).then((_) => null);
76 }
77 });
78 });
79
80 var type;
81 if (transformer is LazyAggregateTransformer) {
82 type = 'LazyAggregateTransformer';
83 } else if (transformer is DeclaringAggregateTransformer) {
84 type = 'DeclaringAggregateTransformer';
85 } else {
86 type = 'AggregateTransformer';
87 }
88
89 return {
90 'type': type,
91 'toString': transformer.toString(),
92 'port': port.sendPort
93 };
94 }
95
55 // Converts [group] into a serializable map. 96 // Converts [group] into a serializable map.
56 Map _serializeTransformerGroup(TransformerGroup group) { 97 Map _serializeTransformerGroup(TransformerGroup group) {
57 return { 98 return {
58 'type': 'TransformerGroup', 99 'type': 'TransformerGroup',
59 'toString': group.toString(), 100 'toString': group.toString(),
60 'phases': group.phases.map((phase) { 101 'phases': group.phases.map((phase) {
61 return phase.map(serializeTransformerOrGroup).toList(); 102 return phase.map(serializeTransformerLike).toList();
62 }).toList() 103 }).toList()
63 }; 104 };
64 } 105 }
65 106
66 /// Converts [transformerOrGroup] into a serializable map. 107 /// Converts [transformerLike] into a serializable map.
67 Map serializeTransformerOrGroup(transformerOrGroup) { 108 ///
68 if (transformerOrGroup is Transformer) { 109 /// [transformerLike] can be a [Transformer], an [AggregateTransformer], or a
69 return _serializeTransformer(transformerOrGroup); 110 /// [TransformerGroup].
111 Map serializeTransformerLike(transformerLike) {
112 if (transformerLike is Transformer) {
113 return _serializeTransformer(transformerLike);
114 } else if (transformerLike is TransformerGroup) {
115 return _serializeTransformerGroup(transformerLike);
70 } else { 116 } else {
71 assert(transformerOrGroup is TransformerGroup); 117 // This has to be last, since "transformerLike is AggregateTransformer" will
72 return _serializeTransformerGroup(transformerOrGroup); 118 // throw on older versions of barback.
119 assert(transformerLike is AggregateTransformer);
120 return _serializeAggregateTransformer(transformerLike);
73 } 121 }
74 } 122 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698