Let a description draw the third stand-in state
`empty` and `failed` are members and `Node::pending` was not, so the one state
a screen could not say was the one that says work is under way. goingson's
backups region is the site: it is `Slot::live`, so a host that swaps markup has
nowhere to put a readiness attribute and needs the node.
The member is `underway` rather than `pending` because `Slot::pending` is a
setting and one name cannot mean both. Renaming is what the rule leaves open
where `token` had to go to a supplier: `token` collided with a setting meaning
the same thing on a container that could hold one, while `Slot::pending` says a
region is waiting and this says what to draw in it.
- Co-Authored-By
- Claude Opus 5 (1M context) <noreply@anthropic.com>
- Claude-Session
- https://claude.ai/code/session_01MptwXZ8k65v19rFmdGAyki
2 files changed,
+25 insertions,
-0 deletions
| 869 |
869 |
|
)?;
|
| 870 |
870 |
|
Ok(quote!(::quasi_router::Node::token(#tag)))
|
| 871 |
871 |
|
}
|
|
872 |
+ |
Emission::Simple { member, args, body } if member == "underway" => {
|
|
873 |
+ |
// The one member whose name is not its constructor's. `Node::pending`
|
|
874 |
+ |
// is the third `StandIn` state, beside `empty` and `failed`, and
|
|
875 |
+ |
// `pending` is a setting on `Slot`, so the member is named for what
|
|
876 |
+ |
// it says instead. The body still sets on a `Node`, which is what
|
|
877 |
+ |
// `offering` wants: a stand-in with a way out of it.
|
|
878 |
+ |
let args = args.iter().map(self::arg).collect::<Result<Vec<_>>>()?;
|
|
879 |
+ |
accrete(
|
|
880 |
+ |
body,
|
|
881 |
+ |
Container::Node,
|
|
882 |
+ |
"e!(::quasi_router::Node::pending(#(#args),*)),
|
|
883 |
+ |
)
|
|
884 |
+ |
}
|
| 872 |
885 |
|
Emission::Simple { member, args, body } if member == "canvas" => {
|
| 873 |
886 |
|
// The second member whose body does not set on a `Node`, and for
|
| 874 |
887 |
|
// `picture`'s reason: `Node::Canvas` holds a `Canvas`, and
|
| 100 |
100 |
|
/// than settings: an axis is told what sits on it and where, which is the `at`
|
| 101 |
101 |
|
/// member under `Container::Timeline`. It is a `Node` either way, so nothing is
|
| 102 |
102 |
|
/// wrapped afterwards.
|
|
103 |
+ |
///
|
|
104 |
+ |
/// `underway` is the sixth, and the only one renamed rather than reshaped. It
|
|
105 |
+ |
/// is `Node::pending`, the third of the three `StandIn` states beside `empty`
|
|
106 |
+ |
/// and `failed`, and it cannot be spelled `pending` because `Slot::pending` is
|
|
107 |
+ |
/// a setting and one name cannot mean both. Renaming is what the rule leaves
|
|
108 |
+ |
/// open where `token` had to go to a supplier: `token` collided with a setting
|
|
109 |
+ |
/// that meant the same thing on a container that could hold one, so a second
|
|
110 |
+ |
/// spelling would have been two ways to say one thing, while `Slot::pending`
|
|
111 |
+ |
/// says a region is waiting and this says what to draw in it. goingson's
|
|
112 |
+ |
/// backups region is the site: it is `Slot::live`, so a swapping host has
|
|
113 |
+ |
/// nowhere to put an attribute and needs the node.
|
| 103 |
114 |
|
const NODE_MEMBERS: &[&str] = &[
|
| 104 |
115 |
|
"text",
|
| 105 |
116 |
|
"toned",
|
| 121 |
132 |
|
"canvas",
|
| 122 |
133 |
|
"badge",
|
| 123 |
134 |
|
"timeline",
|
|
135 |
+ |
"underway",
|
| 124 |
136 |
|
];
|
| 125 |
137 |
|
|
| 126 |
138 |
|
/// The arrangements a screen may be laid out in.
|