@genocode/core 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/help.js ADDED
@@ -0,0 +1,454 @@
1
+ // Help for editors: what a name means when you point at it, and which names can be typed where.
2
+ // The text follows docs/LANGUAGE.md, and help.test.ts keeps every built-in covered.
3
+ import { BUILTIN_CONSTANTS } from "./builtins.js";
4
+ import { NAMED_COLOURS } from "./colour.js";
5
+ import { KEYWORDS, lex } from "./lexer.js";
6
+ import { formatValue, PATTERN_KINDS, SHAPES } from "./values.js";
7
+ const h = (title, text, section) => ({ title, text, section });
8
+ /** The built-in functions. */
9
+ export const FUNCTION_HELP = new Map([
10
+ ["abs", h("abs(x)", "The absolute value of `x`.", "18.1")],
11
+ ["sign", h("sign(x)", "−1, 0 or 1, depending on the sign of `x`.", "18.1")],
12
+ ["floor", h("floor(x)", "`x` rounded down.", "18.1")],
13
+ ["ceil", h("ceil(x)", "`x` rounded up.", "18.1")],
14
+ ["round", h("round(x)", "The nearest whole number, halves rounded up.", "18.1")],
15
+ [
16
+ "frac",
17
+ h("frac(x)", "`x` minus its whole part, keeping the sign: `frac(-1.25)` is `-0.25`.", "18.1"),
18
+ ],
19
+ ["min", h("min(a, b)", "The smaller of `a` and `b`.", "18.1")],
20
+ ["max", h("max(a, b)", "The larger of `a` and `b`.", "18.1")],
21
+ ["clamp", h("clamp(x, lo, hi)", "`x` limited to lo..hi.", "18.1")],
22
+ ["wrap", h("wrap(x, lo, hi)", "`x` wrapped round into lo..hi, so that hi wraps to lo.", "18.1")],
23
+ ["bounce", h("bounce(x, lo, hi)", "`x` folded back and forth between lo and hi.", "18.1")],
24
+ ["sqrt", h("sqrt(x)", "The square root of `x`.", "18.1")],
25
+ ["exp", h("exp(x)", "e to the power `x`.", "18.1")],
26
+ ["ln", h("ln(x)", "The natural logarithm of `x`.", "18.1")],
27
+ ["log10", h("log10(x)", "The base-10 logarithm of `x`.", "18.1")],
28
+ ["sin", h("sin(a)", "The sine of `a`, in degrees.", "18.1")],
29
+ ["cos", h("cos(a)", "The cosine of `a`, in degrees.", "18.1")],
30
+ ["tan", h("tan(a)", "The tangent of `a`, in degrees.", "18.1")],
31
+ ["asin", h("asin(x)", "The angle whose sine is `x`, in degrees.", "18.1")],
32
+ ["acos", h("acos(x)", "The angle whose cosine is `x`, in degrees.", "18.1")],
33
+ ["atan", h("atan(x)", "The angle whose tangent is `x`, in degrees.", "18.1")],
34
+ ["atan2", h("atan2(y, x)", "The angle of the point (x, y) from the x axis, in degrees.", "18.1")],
35
+ ["degrees", h("degrees(r)", "Converts radians to degrees.", "18.1")],
36
+ ["radians", h("radians(d)", "Converts degrees to radians.", "18.1")],
37
+ [
38
+ "wave",
39
+ h("wave(t)", "`sin(t × 360)`: one full wave (0, 1, 0, −1, 0) as `t` goes from 0 to 1.", "18.1"),
40
+ ],
41
+ [
42
+ "bump",
43
+ h("bump(t)", "`sin(t × 180)`: rises from 0 to 1 and back to 0 as `t` goes from 0 to 1.", "18.1"),
44
+ ],
45
+ [
46
+ "mix",
47
+ h("mix(a, b, t)", "`(1 − t)·a + t·b`, for numbers, vectors and colours. Colours blend hue the short way round.", "18.1"),
48
+ ],
49
+ [
50
+ "smoothmix",
51
+ h("smoothmix(a, b, t)", "Like `mix`, but eases in and out. `t` is clamped to 0–1.", "18.1"),
52
+ ],
53
+ [
54
+ "mandel",
55
+ h("mandel(x, y)", "How quickly the point x + iy escapes the Mandelbrot set, from 0 to 1. 1 means never.", "18.1"),
56
+ ],
57
+ ["vec", h("vec(x, y, z)", "The vector `(x, y, z)`.", "18.2")],
58
+ ["length", h("length(v)", "The length of the vector `v`.", "18.2")],
59
+ ["normalize", h("normalize(v)", "`v` scaled to length 1. The zero vector stays zero.", "18.2")],
60
+ ["dot", h("dot(a, b)", "The dot product of two vectors.", "18.2")],
61
+ ["cross", h("cross(a, b)", "The cross product of two vectors.", "18.2")],
62
+ [
63
+ "hsv",
64
+ h("hsv(h, s, v)", "A colour from hue (degrees), saturation and value, 0–1. A fourth argument is alpha.", "13.1"),
65
+ ],
66
+ [
67
+ "rgb",
68
+ h("rgb(r, g, b)", "A colour from red, green and blue, 0–1. A fourth argument is alpha.", "13.1"),
69
+ ],
70
+ [
71
+ "noise",
72
+ h("noise(x)", "Smooth noise from −1 to 1 that changes gently with `x` (a number or vector).", "18.5"),
73
+ ],
74
+ ["fbm", h("fbm(x)", "Fractal noise: five layers of `noise`, from −1 to 1.", "18.5")],
75
+ [
76
+ "random",
77
+ h("random(lo, hi)", "A random number from `lo` up to `hi`. The creature's `seed` gene decides the sequence.", "18.5"),
78
+ ],
79
+ [
80
+ "pattern",
81
+ h("pattern(kind, hue, seed)", "A texture: a pattern kind such as `marble`, a hue that sets the palette, and a seed.", "14"),
82
+ ],
83
+ [
84
+ "gradient",
85
+ h("gradient(c1, c2 at p, …)", "Colours blended along 0 to 1. Sample it like a call: `skin(0.5)`.", "13.3"),
86
+ ],
87
+ ]);
88
+ const NUMBER_CONSTANTS = new Map([
89
+ ["pi", "π, 3.14159…"],
90
+ ["tau", "2π, 6.28318…"],
91
+ ["golden", "The golden ratio, 1.61803…"],
92
+ ["sqrt2", "The square root of 2."],
93
+ ["sqrt3", "The square root of 3."],
94
+ ["ln2", "The natural logarithm of 2."],
95
+ ["x_axis", "The vector `(1, 0, 0)`."],
96
+ ["y_axis", "The vector `(0, 1, 0)`."],
97
+ ["z_axis", "The vector `(0, 0, 1)`."],
98
+ ["none", "No texture: `texture none`."],
99
+ ]);
100
+ const SHAPE_TEXT = {
101
+ tube: "A cylinder 1 across and 1 long, along the heading.",
102
+ cube: "A cube with sides of 1.",
103
+ cone: "A cone 1 long along the heading, its tip at the front.",
104
+ ball: "A sphere 1 across.",
105
+ ring: "A thin torus around the heading, 1 across.",
106
+ donut: "A fat torus around the heading, 1 across.",
107
+ };
108
+ /** The built-in constants: numbers, vectors, colours, shapes and pattern kinds. */
109
+ export function constantHelp(name) {
110
+ const text = NUMBER_CONSTANTS.get(name);
111
+ if (text !== undefined)
112
+ return h(name, text, name === "none" ? "14" : "18.1");
113
+ const colour = NAMED_COLOURS.get(name);
114
+ if (colour) {
115
+ const alpha = colour.a === 1 ? "" : `, ${colour.a}`;
116
+ return h(name, `The colour hsv(${colour.h}, ${colour.s}, ${colour.v}${alpha}).`, "13.1");
117
+ }
118
+ if (SHAPES.includes(name))
119
+ return h(name, `A shape. ${SHAPE_TEXT[name]}`, "12");
120
+ if (PATTERN_KINDS.includes(name))
121
+ return h(name, "A pattern kind, for `pattern(kind, hue, seed)`.", "14");
122
+ return undefined;
123
+ }
124
+ /** Keywords, and the inputs `time`, `beat`, `music` and `turtle`. */
125
+ export const KEYWORD_HELP = new Map([
126
+ ["creature", h("creature Name", "Starts a creature file.", "3")],
127
+ [
128
+ "gene",
129
+ h("gene name = value in min..max", "A value the app may change when mutating, breeding and morphing.", "6.1"),
130
+ ],
131
+ [
132
+ "part",
133
+ h("part name(a, b) { … }", "A piece of creature: it may move the turtle and lay shapes.", "10"),
134
+ ],
135
+ [
136
+ "function",
137
+ h("function name(a, b) { … }", "Calculates a value with `return`. It can't change the turtle or lay shapes.", "10"),
138
+ ],
139
+ ["return", h("return value", "Leaves a function with a value, or a part early.", "10")],
140
+ ["let", h("let name = value", "Creates a variable in the current block.", "7")],
141
+ ["if", h("if condition { … } else { … }", "Runs a block when the condition is true.", "9")],
142
+ ["else", h("else { … }", "What `if` runs when its condition is false.", "9")],
143
+ ["repeat", h("repeat n as i { … }", "Runs a block `n` times, with `i` counting from 0.", "9")],
144
+ ["as", h("repeat n as i", "Names the counter of a `repeat` loop.", "9")],
145
+ [
146
+ "for",
147
+ h("for v from a to b by s { … }", "Runs a block for `v` from `a` to `b`, in steps of `s` (1 if left out).", "9"),
148
+ ],
149
+ [
150
+ "from",
151
+ h("from", "In `for`: where the loop starts. In a gene: the options it chooses from.", "9"),
152
+ ],
153
+ ["to", h("to", "In `for`: where the loop ends.", "9")],
154
+ ["by", h("by", "In `for`: the step.", "9")],
155
+ ["while", h("while condition { … }", "Runs a block for as long as the condition is true.", "9")],
156
+ ["branch", h("branch { … }", "Runs a block, then puts the turtle back as it was.", "11.5")],
157
+ [
158
+ "lay",
159
+ h("lay / lay { … }", "Lays the current shape, optionally with an extra shape transform.", "12"),
160
+ ],
161
+ [
162
+ "reshape",
163
+ h("reshape { … }", "Changes the shape transform for every shape laid afterwards.", "11.7"),
164
+ ],
165
+ [
166
+ "symmetric",
167
+ h("symmetric x { … }", "Runs a block twice, the second time mirrored. `side` is 1, then −1.", "11.6"),
168
+ ],
169
+ [
170
+ "shape",
171
+ h("shape s", "The shape for later `lay`s: tube, cube, cone, ball, ring or donut.", "12"),
172
+ ],
173
+ ["colour", h("colour c", "The colour for later shapes.", "13.2")],
174
+ ["color", h("color c", "The colour for later shapes.", "13.2")],
175
+ ["shine", h("shine x", "Strength of highlights, 0–1.", "13.2")],
176
+ ["sharpness", h("sharpness x", "How tight the highlights are, 0–1.", "13.2")],
177
+ ["texture", h("texture p", "The texture for later shapes: a `pattern(…)`, or `none`.", "13.2")],
178
+ [
179
+ "background",
180
+ h("background { … fill p }", "The background the creature is shown against.", "15"),
181
+ ],
182
+ ["fill", h("fill p", "What the background shows: a pattern, a colour or a gradient.", "15")],
183
+ ["dance", h("dance { … }", "The creature's dance style: how music moves it as a whole.", "17")],
184
+ [
185
+ "variant",
186
+ h("variant Name { gene = value }", "Another set of gene values for the creature, such as a member of its family.", "6.6"),
187
+ ],
188
+ ["forward", h("forward d", "Moves the turtle `d` along its heading.", "11.2")],
189
+ ["back", h("back d", "Moves the turtle `d` backwards.", "11.2")],
190
+ ["move", h("move (x, y, z)", "Moves the turtle along its side, up and heading axes.", "11.2")],
191
+ ["pitch", h("pitch a", "Turns about the side axis: positive tips the nose down.", "11.3")],
192
+ ["yaw", h("yaw a", "Turns about the up axis, towards the side axis.", "11.3")],
193
+ ["roll", h("roll a", "Turns about the heading.", "11.3")],
194
+ [
195
+ "rotate",
196
+ h("rotate a around v", "Turns `a` degrees about the axis `v`, in the turtle's own axes.", "11.3"),
197
+ ],
198
+ ["around", h("rotate a around v", "The axis that `rotate` turns about.", "11.3")],
199
+ [
200
+ "grow",
201
+ h("grow k / grow (x, y, z)", "Multiplies the turtle's size. Negative values mirror.", "11.4"),
202
+ ],
203
+ ["mirror", h("mirror x", "Reverses one of the turtle's axes: x, y or z.", "11.4")],
204
+ ["in", h("gene name = v in min..max", "A gene's range.", "6.1")],
205
+ ["step", h("in min..max step s", "A gene that moves in whole steps of `s`.", "6.1")],
206
+ ["log", h("in min..max log", "A gene that changes by ratios rather than amounts.", "6.1")],
207
+ ["at", h("colour at p", "Where a gradient stop sits, from 0 to 1.", "13.3")],
208
+ ["and", h("a and b", "True if both sides are.", "8.1")],
209
+ ["or", h("a or b", "True if either side is.", "8.1")],
210
+ ["not", h("not a", "The opposite of a bool.", "8.1")],
211
+ ["true", h("true", "A bool.", "5")],
212
+ ["false", h("false", "A bool.", "5")],
213
+ ["print", h("print(a, b, …)", "Writes its arguments to the app's console.", "18.6")],
214
+ [
215
+ "turtle",
216
+ h("turtle.position", "Reads the turtle: position, heading, up, side, size, mirrored, shape, colour…", "18.4"),
217
+ ],
218
+ ["time", h("time", "Seconds since the creature started being shown.", "16")],
219
+ ["beat", h("beat", "Position within the current beat: 0 on the beat, rising towards 1.", "16")],
220
+ [
221
+ "music",
222
+ h("music.bass", "The music: `bass`, `mid`, `high`, `level` and `hit`, each 0–1.", "16"),
223
+ ],
224
+ ]);
225
+ /** The parts of `music` and `turtle`. */
226
+ export const MEMBER_HELP = new Map([
227
+ [
228
+ "music",
229
+ new Map([
230
+ ["bass", h("music.bass", "Level of the low frequencies, 0–1.", "16")],
231
+ ["mid", h("music.mid", "Level of the middle frequencies, 0–1.", "16")],
232
+ ["high", h("music.high", "Level of the high frequencies, 0–1.", "16")],
233
+ ["level", h("music.level", "Overall loudness, 0–1.", "16")],
234
+ ["hit", h("music.hit", "Jumps up on each drum hit or note, then falls back, 0–1.", "16")],
235
+ ]),
236
+ ],
237
+ [
238
+ "turtle",
239
+ new Map([
240
+ [
241
+ "position",
242
+ h("turtle.position", "The turtle's position in world space (a vector).", "18.4"),
243
+ ],
244
+ ["heading", h("turtle.heading", "The heading, as a unit vector in world space.", "18.4")],
245
+ ["up", h("turtle.up", "The up axis, as a unit vector.", "18.4")],
246
+ ["side", h("turtle.side", "The side axis, as a unit vector.", "18.4")],
247
+ ["size", h("turtle.size", "The size per axis (a vector).", "18.4")],
248
+ ["mirrored", h("turtle.mirrored", "Whether the turtle is mirrored (a bool).", "18.4")],
249
+ ["shape", h("turtle.shape", "The current shape.", "18.4")],
250
+ ["colour", h("turtle.colour", "The current colour.", "18.4")],
251
+ ["color", h("turtle.color", "The current colour.", "18.4")],
252
+ ["shine", h("turtle.shine", "The current shine.", "18.4")],
253
+ ["sharpness", h("turtle.sharpness", "The current sharpness.", "18.4")],
254
+ ["texture", h("turtle.texture", "The current texture.", "18.4")],
255
+ ]),
256
+ ],
257
+ ]);
258
+ /** A gene's range in words, such as `3 to 16, steps of 1`. */
259
+ export function geneRange(g) {
260
+ if (g.options)
261
+ return `one of ${g.options.map(formatValue).join(", ")}`;
262
+ if (g.kind === "bool")
263
+ return "true or false";
264
+ if (g.kind === "colour")
265
+ return g.hue?.whole ? "any hue" : `hues ${g.hue.start}° + ${g.hue.length}°`;
266
+ if (g.min === undefined || g.max === undefined)
267
+ return "";
268
+ let text = `${formatValue(g.min)} to ${formatValue(g.max)}`;
269
+ if (g.step !== undefined)
270
+ text += `, steps of ${g.step}`;
271
+ if (g.log)
272
+ text += ", by ratios";
273
+ return text;
274
+ }
275
+ const signature = (name, params) => params.length === 0 ? name : `${name}(${params.map((p) => p.name).join(", ")})`;
276
+ const contains = (s, offset) => s.start <= offset && offset <= s.end;
277
+ /** The names that can be used at `offset`, innermost last so they win over outer ones. */
278
+ function symbolsAt(program, offset) {
279
+ const out = [];
280
+ const geneOf = (stmt) => program.genes.find((g) => g.decl === stmt);
281
+ const geneSymbol = (g) => ({
282
+ name: g.name,
283
+ kind: "gene",
284
+ help: h(`gene ${g.fullName}`, [g.description, geneRange(g)].filter(Boolean).join(" · ") || "A gene.", "6"),
285
+ });
286
+ const variable = (name, text, section) => ({
287
+ name,
288
+ kind: "variable",
289
+ help: h(name, text, section),
290
+ });
291
+ const items = program.file.items;
292
+ // Inside a variant, every gene can be set, by its full name.
293
+ if (items.some((s) => s.kind === "Variant" && contains(s.body.span, offset))) {
294
+ return program.genes.map((g) => ({ ...geneSymbol(g), name: g.fullName }));
295
+ }
296
+ // Declarations that can be used from anywhere in the creature.
297
+ const selfContained = items.find((s) => (s.kind === "Background" || s.kind === "Dance") && contains(s.span, offset));
298
+ if (!selfContained) {
299
+ for (const s of items) {
300
+ if (s.kind === "Part" || s.kind === "Function") {
301
+ out.push({
302
+ name: s.name,
303
+ kind: s.kind === "Part" ? "part" : "function",
304
+ help: h(`${s.kind === "Part" ? "part" : "function"} ${signature(s.name, s.params)}`, s.kind === "Part"
305
+ ? "A part defined in this creature."
306
+ : "A function defined in this creature.", "10"),
307
+ });
308
+ }
309
+ }
310
+ }
311
+ const visit = (stmts, inBody) => {
312
+ for (const s of stmts) {
313
+ if (s.kind === "Gene") {
314
+ const g = geneOf(s);
315
+ if (g)
316
+ out.push(geneSymbol(g));
317
+ }
318
+ else if (s.kind === "Let" && s.span.start < offset) {
319
+ out.push(variable(s.name, inBody ? "A variable." : "A global variable.", "7"));
320
+ }
321
+ }
322
+ for (const s of stmts) {
323
+ if (!contains(s.span, offset))
324
+ continue;
325
+ const into = (b) => {
326
+ if (b && contains(b.span, offset))
327
+ visit(b.items, inBody);
328
+ };
329
+ switch (s.kind) {
330
+ case "Part":
331
+ case "Function":
332
+ if (!contains(s.body.span, offset))
333
+ break;
334
+ for (const p of s.params)
335
+ out.push(variable(p.name, `A parameter of \`${s.name}\`.`, "10"));
336
+ visit(s.body.items, true);
337
+ break;
338
+ case "Background":
339
+ case "Dance":
340
+ into(s.body);
341
+ break;
342
+ case "If":
343
+ for (const b of s.branches)
344
+ into(b.block);
345
+ into(s.elseBlock);
346
+ break;
347
+ case "Repeat":
348
+ if (s.as && contains(s.block.span, offset))
349
+ out.push(variable(s.as.name, "The loop's counter, from 0.", "9"));
350
+ into(s.block);
351
+ break;
352
+ case "For":
353
+ if (contains(s.block.span, offset))
354
+ out.push(variable(s.variable.name, "The loop's variable.", "9"));
355
+ into(s.block);
356
+ break;
357
+ case "Symmetric":
358
+ if (contains(s.block.span, offset))
359
+ out.push(variable("side", "1 on the first run, −1 on the mirrored one.", "11.6"));
360
+ into(s.block);
361
+ break;
362
+ case "While":
363
+ case "Branch":
364
+ case "Reshape":
365
+ case "Lay":
366
+ into(s.block);
367
+ break;
368
+ }
369
+ }
370
+ };
371
+ visit(selfContained ? [selfContained] : items, false);
372
+ return out;
373
+ }
374
+ // ---------- hover ----------
375
+ /** The word at `offset`, counting a position just after a word, or just before one, as on it. */
376
+ function tokenAt(tokens, offset) {
377
+ const on = (t) => t.span.start <= offset && offset <= t.span.end;
378
+ const word = tokens.findIndex((t) => (t.kind === "name" || t.kind === "keyword") && on(t));
379
+ if (word >= 0)
380
+ return word;
381
+ return tokens.findIndex((t) => t.kind !== "newline" && t.kind !== "eof" && on(t));
382
+ }
383
+ /** Help for the word at `offset`, and where that word is. */
384
+ export function helpAt(program, offset) {
385
+ const { tokens } = lex(program.text);
386
+ const i = tokenAt(tokens, offset);
387
+ const t = tokens[i];
388
+ if (!t || (t.kind !== "name" && t.kind !== "keyword"))
389
+ return undefined;
390
+ const found = (help) => (help ? { span: t.span, help } : undefined);
391
+ // A gene set in a variant, such as `whorl.petals`.
392
+ for (const item of program.file.items) {
393
+ if (item.kind !== "Variant")
394
+ continue;
395
+ for (const g of item.body.items) {
396
+ if (g.kind !== "GeneSetting" || !contains(g.geneSpan, offset))
397
+ continue;
398
+ const gene = symbolsAt(program, offset).find((x) => x.name === g.gene);
399
+ return gene ? { span: g.geneSpan, help: gene.help } : undefined;
400
+ }
401
+ }
402
+ // `music.bass`, `turtle.heading`: the word after the dot.
403
+ const dot = tokens[i - 1];
404
+ const owner = tokens[i - 2];
405
+ if (dot?.text === "." && owner && MEMBER_HELP.has(owner.text)) {
406
+ return found(MEMBER_HELP.get(owner.text).get(t.text));
407
+ }
408
+ if (t.kind === "name") {
409
+ const symbols = symbolsAt(program, offset).filter((s) => s.name === t.text);
410
+ if (symbols.length > 0)
411
+ return found(symbols[symbols.length - 1].help);
412
+ return found(FUNCTION_HELP.get(t.text) ?? constantHelp(t.text));
413
+ }
414
+ return found(KEYWORD_HELP.get(t.text));
415
+ }
416
+ // ---------- completion ----------
417
+ /** What can be typed at `offset`: everything in scope, built-ins and keywords. */
418
+ export function completionsAt(program, offset) {
419
+ // After `music.` or `turtle.`, only their parts.
420
+ const before = lex(program.text).tokens.filter((t) => t.kind !== "newline" && t.kind !== "eof" && t.span.end <= offset);
421
+ let k = before.length - 1;
422
+ const last = before[k];
423
+ if (last && (last.kind === "name" || last.kind === "keyword") && last.span.end === offset)
424
+ k--;
425
+ const dot = before[k];
426
+ const owner = before[k - 1];
427
+ if (dot?.text === "." && owner && MEMBER_HELP.has(owner.text)) {
428
+ return [...MEMBER_HELP.get(owner.text).entries()].map(([label, help]) => ({
429
+ label,
430
+ kind: "member",
431
+ detail: help.text,
432
+ }));
433
+ }
434
+ const out = new Map();
435
+ const add = (c) => out.set(c.label, c);
436
+ for (const k of KEYWORDS) {
437
+ if (k === "time" || k === "beat" || k === "music" || k === "turtle") {
438
+ add({ label: k, kind: "input", detail: KEYWORD_HELP.get(k).text });
439
+ }
440
+ else {
441
+ add({ label: k, kind: "keyword", detail: KEYWORD_HELP.get(k)?.title ?? "" });
442
+ }
443
+ }
444
+ for (const [name, help] of FUNCTION_HELP)
445
+ add({ label: name, kind: "function", detail: help.title });
446
+ for (const name of BUILTIN_CONSTANTS.keys()) {
447
+ add({ label: name, kind: "constant", detail: constantHelp(name)?.text ?? "" });
448
+ }
449
+ for (const s of symbolsAt(program, offset)) {
450
+ add({ label: s.name, kind: s.kind, detail: s.kind === "gene" ? s.help.text : s.help.title });
451
+ }
452
+ return [...out.values()];
453
+ }
454
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,11 +3,12 @@ export declare const FILE_EXTENSION = ".genie";
3
3
  export type * from "./ast.js";
4
4
  export { lex, KEYWORDS, type Token, type TokenKind, type LexResult } from "./lexer.js";
5
5
  export { parse, type ParseResult } from "./parser.js";
6
- export { check, type CheckResult } from "./checker.js";
6
+ export { check, type CheckResult, type Variant } from "./checker.js";
7
7
  export { format, formatText, type FormatResult } from "./format.js";
8
8
  export { build, buildBackground, DEFAULT_LIMITS, type BackgroundResult, type BuildOptions, type BuildResult, type Inputs, type LaidShape, type Limits, type MusicInputs, } from "./interpreter.js";
9
9
  export type { GeneInfo, GeneKind, GeneSection, HueArc } from "./genes.js";
10
- export { breed, geneLiteral, morph, mutate, valuesOf, writeGenes, type GeneSet, type GeneticsOptions, type GeneValues, type MutateOptions, } from "./genetics.js";
10
+ export { breed, geneEdits, geneLiteral, morph, mutate, valuesOf, writeGenes, type GeneSet, type GeneticsOptions, type GeneValues, type MutateOptions, } from "./genetics.js";
11
+ export { completionsAt, constantHelp, FUNCTION_HELP, geneRange, helpAt, KEYWORD_HELP, MEMBER_HELP, type Completion, type CompletionKind, type Help, } from "./help.js";
11
12
  export { mulberry32 } from "./noise.js";
12
13
  export { BUILTIN_CONSTANTS, BUILTIN_FUNCTIONS, isBuiltinName, type BuiltinFunction, } from "./builtins.js";
13
14
  export { hsv, rgb, hexColour, toRgb, mixColour, sampleGradient, NAMED_COLOURS } from "./colour.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,6CAA6C;AAC7C,eAAO,MAAM,cAAc,WAAW,CAAC;AAEvC,mBAAmB,UAAU,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EACL,KAAK,EACL,eAAe,EACf,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EACL,KAAK,EACL,WAAW,EACX,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzE,YAAY,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,eAAe,EACf,SAAS,EACT,QAAQ,EACR,KAAK,EACL,GAAG,GACJ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,IAAI,GACV,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,6CAA6C;AAC7C,eAAO,MAAM,cAAc,WAAW,CAAC;AAEvC,mBAAmB,UAAU,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EACL,KAAK,EACL,eAAe,EACf,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EACL,KAAK,EACL,SAAS,EACT,WAAW,EACX,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,SAAS,EACT,MAAM,EACN,YAAY,EACZ,WAAW,EACX,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,IAAI,GACV,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzE,YAAY,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,eAAe,EACf,SAAS,EACT,QAAQ,EACR,KAAK,EACL,GAAG,GACJ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,IAAI,GACV,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -7,7 +7,8 @@ export { parse } from "./parser.js";
7
7
  export { check } from "./checker.js";
8
8
  export { format, formatText } from "./format.js";
9
9
  export { build, buildBackground, DEFAULT_LIMITS, } from "./interpreter.js";
10
- export { breed, geneLiteral, morph, mutate, valuesOf, writeGenes, } from "./genetics.js";
10
+ export { breed, geneEdits, geneLiteral, morph, mutate, valuesOf, writeGenes, } from "./genetics.js";
11
+ export { completionsAt, constantHelp, FUNCTION_HELP, geneRange, helpAt, KEYWORD_HELP, MEMBER_HELP, } from "./help.js";
11
12
  export { mulberry32 } from "./noise.js";
12
13
  export { BUILTIN_CONSTANTS, BUILTIN_FUNCTIONS, isBuiltinName, } from "./builtins.js";
13
14
  export { hsv, rgb, hexColour, toRgb, mixColour, sampleGradient, NAMED_COLOURS } from "./colour.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,2EAA2E;AAE3E,6CAA6C;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC;AAGvC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAA8C,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,KAAK,EAAoB,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,KAAK,EAAoB,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AACpE,OAAO,EACL,KAAK,EACL,eAAe,EACf,cAAc,GAQf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,KAAK,EACL,WAAW,EACX,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,GAKX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,GAEd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAWzE,OAAO,EACL,gBAAgB,EAChB,OAAO,GAKR,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,2EAA2E;AAE3E,6CAA6C;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC;AAGvC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAA8C,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,KAAK,EAAoB,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,KAAK,EAAkC,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AACpE,OAAO,EACL,KAAK,EACL,eAAe,EACf,cAAc,GAQf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,KAAK,EACL,SAAS,EACT,WAAW,EACX,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,GAKX,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,SAAS,EACT,MAAM,EACN,YAAY,EACZ,WAAW,GAIZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,GAEd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAWzE,OAAO,EACL,gBAAgB,EAChB,OAAO,GAKR,MAAM,aAAa,CAAC"}
@@ -216,6 +216,8 @@ class Run {
216
216
  case "Function":
217
217
  case "Background":
218
218
  case "Dance":
219
+ case "Variant":
220
+ case "GeneSetting":
219
221
  case "Effect":
220
222
  case "ErrorStmt":
221
223
  return;