Skip to main content

max / quasi

Let a region rank a member, and say a standalone figure Two productions, both earned by audiofiles' status band. `beside <priority>` gets its third container. A run ranks everything it holds and a region ranks the members that say so, which is what `Slot::with_ranked` has always been for and what the form could not reach. shell::foot is the site: every fact in that band is stated nowhere else on the window except the focused sample's tags, which the detail panel repeats in full, so a window with no room loses the repetition and keeps the rest. Same enum as the run's, so the keyword gains a container rather than a meaning. `tally` is `Node::Figure` standing on its own. `Node::stats` is a strip and `figure` is the setting that strip accretes with, so the member is named for what it says, which is `proportion`'s and `underway`'s rule. Three sites in wave 16 and six more in the tree wrote the variant out by hand.
Author: Max Johnson <me@maxj.phd> · 2026-09-04 21:04 UTC
Signed with PGP, not checked
Commit: 51911260630004719dc68123b211df65d1c35447
Parent: 787a84a
3 files changed, +33 insertions, -1 deletion
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-declare"
3 - version = "0.1.0"
3 + version = "0.1.1"
4 4 description = "The declare! form: a screen description compiled to Rust at build time."
5 5 edition.workspace = true
6 6 rust-version.workspace = true
@@ -56,6 +56,8 @@
56 56 Timeline,
57 57 /// One meter: its body says what it is like, and it emits nothing.
58 58 Meter,
59 + /// One figure: its body says what it is like, and it emits nothing.
60 + Figure,
59 61 }
60 62
61 63 pub fn declaration(declaration: &Declaration) -> Result<TokenStream> {
@@ -538,6 +540,17 @@
538 540 // Narrow on purpose. Everywhere else a field is still refused with the
539 541 // message that names the two legal homes, because a question in a cell
540 542 // or a row is a question nothing will ever read.
543 + //
544 + // A ranked member, which is `beside`'s third container and its second
545 + // meaning of `Priority`: a run ranks everything it holds and a region
546 + // ranks the members that say so. audiofiles' status band is the site --
547 + // every fact in it is stated nowhere else on the window except the
548 + // focused sample's tags, which the detail panel repeats in full, so a
549 + // window with no room loses the repetition and keeps the rest.
550 + (Container::Slot, Emission::Beside { priority, inner }) => Ok((
551 + panel_member(inner)?,
552 + quote!(.with_ranked(#held, ::quasi_router::layout::Priority::#priority)),
553 + )),
541 554 (Container::Slot, other) => Ok((panel_member(other)?, quote!(.with(#held)))),
542 555 (Container::Screen, Emission::Region { name, kind, body }) => {
543 556 Ok((slot(name, kind, body)?, quote!(.with(#held))))
@@ -600,6 +613,10 @@
600 613 emission_span(other),
601 614 "a tag holds nothing: its body says what it is like",
602 615 )),
616 + (Container::Figure, other) => Err(syn::Error::new(
617 + emission_span(other),
618 + "a figure holds nothing: its body says what it is like",
619 + )),
603 620 (Container::Meter, other) => Err(syn::Error::new(
604 621 emission_span(other),
605 622 "a meter holds nothing: its body says what it is like",
@@ -889,6 +906,20 @@
889 906 )?;
890 907 Ok(quote!(::quasi_router::Node::Meter(#meter)))
891 908 }
909 + Emission::Simple { member, args, body } if member == "tally" => {
910 + // One number and what it counts, standing on its own. `Node::Figure`
911 + // holds a `Figure`, so the body sets on the figure the way
912 + // `proportion`'s sets on a `Meter`, and the member is named for what
913 + // it says rather than for the type: `figure` is the setting a
914 + // `stats` strip accretes with, so it cannot also be a member.
915 + let args = args.iter().map(self::arg).collect::<Result<Vec<_>>>()?;
916 + let figure = accrete(
917 + body,
918 + Container::Figure,
919 + &quote!(::quasi_router::screen::Figure::new(#(#args),*)),
920 + )?;
921 + Ok(quote!(::quasi_router::Node::Figure(#figure)))
922 + }
892 923 Emission::Simple { member, args, body } if member == "underway" => {
893 924 // The one member whose name is not its constructor's. `Node::pending`
894 925 // is the third `StandIn` state, beside `empty` and `failed`, and
@@ -143,6 +143,7 @@
143 143 "timeline",
144 144 "underway",
145 145 "proportion",
146 + "tally",
146 147 ];
147 148
148 149 /// The arrangements a screen may be laid out in.