1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
//! **The vocabulary every rendering is built from** — a heading with rows
//! under it, a clause that is there only when its fact is, an age, a tally,
//! and one line of a long text.
//!
//! It is here rather than at each kind for the reason the verb table is data:
//! forty-one renderings written freehand are forty-one chances to spell a
//! listing two ways. **And it is where the branches live.** Every optional
//! field on this surface is rendered by handing it to [`clause`], so the two
//! arms of *present* and *absent* are written once and executed by whatever
//! frame happens to carry each — rather than once per field, where a corpus
//! with one fixture per kind could never reach both.
/// How wide a preview or an excerpt is printed before it is elided. A terminal
/// is the audience and a wrapped row is a row an eye cannot scan; the whole
/// text is one `--json` away.
pub const BRIEF: usize = 100;
/// **The mark on a line this SEAT wrote about the work**, as against a line
/// the work itself produced.
///
/// The follow lane is the one surface where the two are interleaved as they
/// arrive — the model's prose, and this seat's narration of what the engine is
/// doing while it writes it — and without a column an eye tells them apart by
/// reading them (bl-293d). So the model's answer keeps the left margin,
/// unmarked, and everything the seat says about the run rides behind this.
///
/// **One glyph and no locale branch.** A terminal that cannot draw `┊` cannot
/// draw the `…` every elision on this surface ends in, nor the `→` half the
/// rows carry, so a fallback here would be one line's exception to a bet the
/// whole rendering already makes.
pub const GUTTER: &str = "┊";
/// **A line said behind the gutter**, every line of it — a column that stops
/// at the first newline is not a column.
pub
/// **A heading with its rows under it**, or the sentence an empty listing
/// earns.
///
/// The empty arm is a parameter and never a default, because an empty listing
/// is the one moment a reader most needs telling what to do next: a fresh
/// world answers `rows: []` correctly and terminally, and the next act is a
/// fact the seat holds (bl-b00f).
pub
/// Every line of `text`, moved one step in. Multi-line rows keep their shape.
pub
/// **A clause, present only when its fact is.** The one place an absence is
/// decided on this surface.
pub
/// A word, present only when the flag is raised. The other absence, and the
/// same rule: a false flag says nothing rather than saying `false`.
pub
/// **A tally, present only when there is something to count.** `0 waiting` is
/// noise on every row that is fine, and the rows that are not are what a
/// reader is scanning for. The word rides verbatim, for the words that are not
/// nouns — `2 waiting`, `3 deep`, `1 queued`.
pub
/// **A tally of a countable noun**, which is [`tally`] with the one agreement
/// English asks for. It is a second function rather than a rule inside the
/// first because the first counts adverbs too, and `1 waitings` is worse than
/// the wart it would fix.
pub
/// The clauses that are there, in one line. `None` and the empty string both
/// drop out, so a caller may hand over a fact it has not decided about.
pub
/// **An age, as a person reads one.** Seconds up to a minute, then minutes,
/// hours and days — one unit, because a roster is scanned rather than read and
/// the second unit has never changed a decision.
pub
/// **One line of a long text, elided.** A preview, an excerpt, a goal: each is
/// arbitrary prose from somewhere else, and a terminal listing cannot afford
/// its newlines. The elision is marked, so a reader knows to ask `--json`.
pub
/// A quoted brief — what a preview or a body looks like on a row, where the
/// quotes are what say the prose is somebody else's.
pub
/// **A head, and a body indented under it when there is one.** The other
/// shape every rendering is made of, beside [`listing`]: a listing is N rows
/// under a heading, and this is one thing said over what it says.
pub