OLD | NEW |
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 barback.graph.node_status; | 5 library barback.graph.node_status; |
6 | 6 |
7 /// The status of a node in barback's package graph. | 7 /// The status of a node in barback's package graph. |
8 /// | 8 /// |
9 /// A node has three possible statuses: [IDLE], [MATERIALIZING], and [RUNNING]. | 9 /// A node has three possible statuses: [IDLE], [MATERIALIZING], and [RUNNING]. |
10 /// These are ordered from least dirty to most dirty; the [dirtier] and | 10 /// These are ordered from least dirty to most dirty; the [dirtier] and |
(...skipping 19 matching lines...) Expand all Loading... |
30 /// | 30 /// |
31 /// Declaring transformers are only considered dirty until they're finished | 31 /// Declaring transformers are only considered dirty until they're finished |
32 /// declaring their outputs; past that point, they're always either | 32 /// declaring their outputs; past that point, they're always either |
33 /// [MATERIALIZING] or [IDLE]. Non-declaring transformers, by contrast, are | 33 /// [MATERIALIZING] or [IDLE]. Non-declaring transformers, by contrast, are |
34 /// always either [RUNNING] or [IDLE]. | 34 /// always either [RUNNING] or [IDLE]. |
35 static const RUNNING = const NodeStatus("running"); | 35 static const RUNNING = const NodeStatus("running"); |
36 | 36 |
37 final String _name; | 37 final String _name; |
38 | 38 |
39 /// Returns the dirtiest status in [statuses]. | 39 /// Returns the dirtiest status in [statuses]. |
40 static NodeStatus dirtiest(Iterable<NodeStatus> statuses) => | 40 static NodeStatus dirtiest(Iterable<NodeStatus> statuses) => statuses.fold( |
41 statuses.fold(NodeStatus.IDLE, | 41 NodeStatus.IDLE, (status1, status2) => status1.dirtier(status2)); |
42 (status1, status2) => status1.dirtier(status2)); | |
43 | 42 |
44 const NodeStatus(this._name); | 43 const NodeStatus(this._name); |
45 | 44 |
46 String toString() => _name; | 45 String toString() => _name; |
47 | 46 |
48 /// Returns [this] or [other], whichever is dirtier. | 47 /// Returns [this] or [other], whichever is dirtier. |
49 NodeStatus dirtier(NodeStatus other) { | 48 NodeStatus dirtier(NodeStatus other) { |
50 if (this == RUNNING || other == RUNNING) return RUNNING; | 49 if (this == RUNNING || other == RUNNING) return RUNNING; |
51 if (this == MATERIALIZING || other == MATERIALIZING) return MATERIALIZING; | 50 if (this == MATERIALIZING || other == MATERIALIZING) return MATERIALIZING; |
52 return IDLE; | 51 return IDLE; |
53 } | 52 } |
54 } | 53 } |
OLD | NEW |