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
//! **`enroll`'s grammar** — the one word on this surface whose tail is more
//! than its parameters, in its own file for the reason yog's own line reader
//! cut the same seam at (`src/boundary/line/enroll.rs`): *a verb whose grammar
//! is more than words is its own file*. It took [`super`] past the 300-line
//! wall when the second optional word landed (bl-971c).
//!
//! Everything here is read in the pure function, because everything here is
//! decided entirely by what was typed — the two optional words, and the grade,
//! which is a closed set of two this binary already holds.
use ;
use crateForm;
/// **An enrollment, with the two arguments this binary can settle itself.**
///
/// The optional tail is read here for the same reason: `--into <dir>` is a
/// destination on THIS box, so whether it was spelled correctly is decided
/// entirely by what was typed. A tail that is anything else refuses naming the
/// words it takes, rather than falling through to the verb table and earning an
/// arity sentence about three arguments that says nothing about the fourth.
///
/// **Two words, both optional, independent and in either order** (bl-971c).
/// `--at <host>:<port>` is the route the enrolled DEVICE will dial (REMOTE §8.4
/// as amended, yog bl-fec6) and `--into <dir>` is where this box writes the
/// material down; neither implies the other, and a device behind an alias
/// needs the first whether or not it needs the second. What the seat settles
/// about `--at` is only that the word was given a value: whether the value
/// names an endpoint a device can dial is the ENGINE's judgement, which it
/// makes on its own address and a stated one alike and answers with the remedy
/// (`yog wire-certs`), so a copy of that rule here would be a second authority
/// on addresses that could disagree with the first.
///
/// `grade` is a closed set of two words the boundary defines (REMOTE §8.4) and
/// this binary already holds them — `lernie help enroll` says so in its own
/// words. So a typo is read here, in the pure function, for exactly the reason
/// [`ask`] reads a body here: it is decided entirely by what was typed, it is
/// the caller's typo, it earns the usage, and it costs no connection (bl-07b9).
/// It used to cost a full round trip and come back `unknown grade "OPERATOR"` —
/// true, and naming neither of the two words that would have worked.
///
/// **It is not a second authority on grades.** The engine stays the place that
/// decides what a grade means and whether this box may ask for one at all —
/// §8.4 refuses the act unless this box's own leaf is operator-grade, which is
/// not knowable here. What is settled here is only whether the word is one of
/// the two, read off [`crate::ui::Grade`]'s own list rather than a second copy
/// of it.
pub
/// **`enroll`'s tail, read as the two words it is** — each at most once, in
/// either order, each with its value — or the refusal that teaches both.
///
/// One refusal for every way the tail can be wrong, because to the operator
/// they are one event: *this is not a tail `enroll` takes, and here is the tail
/// it takes*. Naming the grammar answers a repeat, an unknown word and a word
/// with no value at once, where three sentences would each answer a third of a
/// question nobody asked in thirds.
/// The sentence that teaches the tail, quoting back what was typed.
/// The two words `enroll` takes after its three, and the one place each is
/// spelled — the pattern that reads it and the refusal that teaches it both
/// name these.
pub const INTO: &str = "--into";
/// The route the enrolled device will dial, which becomes
/// [`crate::verbs::ADDRESS`] on the wire. It is `--at` and not `--address`
/// because it reads as the preposition it is, and because the engine's own
/// line spells it that way (yog's `/enroll <name> [foot] --at <host>:<port>`),
/// so an operator who learned it at one face has learned it at both.
pub const AT: &str = "--at";