roll-parser 3.0.0-beta.0 → 3.1.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/CHANGELOG.md +142 -9
- package/MIGRATION.md +219 -0
- package/README.md +1026 -154
- package/dist/cli/args.d.ts +1 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +81 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/format.d.ts +15 -3
- package/dist/cli/format.d.ts.map +1 -1
- package/dist/cli/format.js +18 -0
- package/dist/cli/format.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +14 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/main.d.ts +36 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +83 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/errors.d.ts +332 -17
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +141 -0
- package/dist/errors.js.map +1 -0
- package/dist/evaluator/die.d.ts +27 -0
- package/dist/evaluator/die.d.ts.map +1 -0
- package/dist/evaluator/die.js +19 -0
- package/dist/evaluator/die.js.map +1 -0
- package/dist/evaluator/env.d.ts +89 -0
- package/dist/evaluator/env.d.ts.map +1 -0
- package/dist/evaluator/env.js +11 -0
- package/dist/evaluator/env.js.map +1 -0
- package/dist/evaluator/evaluator.d.ts +41 -75
- package/dist/evaluator/evaluator.d.ts.map +1 -1
- package/dist/evaluator/evaluator.js +914 -0
- package/dist/evaluator/evaluator.js.map +1 -0
- package/dist/evaluator/modifiers/compare.js +15 -0
- package/dist/evaluator/modifiers/compare.js.map +1 -0
- package/dist/evaluator/modifiers/crit-threshold.d.ts +57 -5
- package/dist/evaluator/modifiers/crit-threshold.d.ts.map +1 -1
- package/dist/evaluator/modifiers/crit-threshold.js +42 -0
- package/dist/evaluator/modifiers/crit-threshold.js.map +1 -0
- package/dist/evaluator/modifiers/die-bound.d.ts +29 -0
- package/dist/evaluator/modifiers/die-bound.d.ts.map +1 -0
- package/dist/evaluator/modifiers/die-bound.js +17 -0
- package/dist/evaluator/modifiers/die-bound.js.map +1 -0
- package/dist/evaluator/modifiers/explode.d.ts +13 -5
- package/dist/evaluator/modifiers/explode.d.ts.map +1 -1
- package/dist/evaluator/modifiers/explode.js +105 -0
- package/dist/evaluator/modifiers/explode.js.map +1 -0
- package/dist/evaluator/modifiers/flags.d.ts +47 -0
- package/dist/evaluator/modifiers/flags.d.ts.map +1 -0
- package/dist/evaluator/modifiers/flags.js +25 -0
- package/dist/evaluator/modifiers/flags.js.map +1 -0
- package/dist/evaluator/modifiers/keep-drop.d.ts +15 -29
- package/dist/evaluator/modifiers/keep-drop.d.ts.map +1 -1
- package/dist/evaluator/modifiers/keep-drop.js +82 -0
- package/dist/evaluator/modifiers/keep-drop.js.map +1 -0
- package/dist/evaluator/modifiers/reroll.d.ts +12 -4
- package/dist/evaluator/modifiers/reroll.d.ts.map +1 -1
- package/dist/evaluator/modifiers/reroll.js +68 -0
- package/dist/evaluator/modifiers/reroll.js.map +1 -0
- package/dist/evaluator/modifiers/sort.d.ts +5 -1
- package/dist/evaluator/modifiers/sort.d.ts.map +1 -1
- package/dist/evaluator/modifiers/sort.js +13 -0
- package/dist/evaluator/modifiers/sort.js.map +1 -0
- package/dist/evaluator/modifiers/success-count.d.ts +6 -7
- package/dist/evaluator/modifiers/success-count.d.ts.map +1 -1
- package/dist/evaluator/modifiers/success-count.js +25 -0
- package/dist/evaluator/modifiers/success-count.js.map +1 -0
- package/dist/index.d.ts +33 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -2560
- package/dist/index.js.map +1 -26
- package/dist/lexer/lexer.d.ts +50 -5
- package/dist/lexer/lexer.d.ts.map +1 -1
- package/dist/lexer/lexer.js +260 -0
- package/dist/lexer/lexer.js.map +1 -0
- package/dist/lexer/tokens.d.ts +31 -6
- package/dist/lexer/tokens.d.ts.map +1 -1
- package/dist/lexer/tokens.js +42 -0
- package/dist/lexer/tokens.js.map +1 -0
- package/dist/parser/ast.d.ts +324 -165
- package/dist/parser/ast.d.ts.map +1 -1
- package/dist/parser/ast.js +52 -0
- package/dist/parser/ast.js.map +1 -0
- package/dist/parser/guards.d.ts +106 -0
- package/dist/parser/guards.d.ts.map +1 -0
- package/dist/parser/guards.js +121 -0
- package/dist/parser/guards.js.map +1 -0
- package/dist/parser/parser.d.ts +118 -14
- package/dist/parser/parser.d.ts.map +1 -1
- package/dist/parser/parser.js +751 -0
- package/dist/parser/parser.js.map +1 -0
- package/dist/render.d.ts +95 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +227 -0
- package/dist/render.js.map +1 -0
- package/dist/rng/mock.d.ts +73 -12
- package/dist/rng/mock.d.ts.map +1 -1
- package/dist/rng/mock.js +30 -0
- package/dist/rng/mock.js.map +1 -0
- package/dist/rng/seeded.d.ts +141 -9
- package/dist/rng/seeded.d.ts.map +1 -1
- package/dist/rng/seeded.js +138 -0
- package/dist/rng/seeded.js.map +1 -0
- package/dist/rng/types.d.ts +57 -0
- package/dist/rng/types.d.ts.map +1 -1
- package/dist/rng/types.js +2 -0
- package/dist/rng/types.js.map +1 -0
- package/dist/roll.d.ts +58 -28
- package/dist/roll.d.ts.map +1 -1
- package/dist/roll.js +8 -0
- package/dist/roll.js.map +1 -0
- package/dist/testing.d.ts +5 -4
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +2 -41
- package/dist/testing.js.map +1 -11
- package/dist/types.d.ts +349 -47
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/package.json +93 -34
- package/src/cli/args.ts +66 -10
- package/src/cli/format.ts +37 -26
- package/src/cli/index.ts +27 -84
- package/src/cli/main.ts +129 -0
- package/src/errors.ts +480 -27
- package/src/evaluator/die.ts +51 -0
- package/src/evaluator/env.ts +105 -0
- package/src/evaluator/evaluator.ts +693 -434
- package/src/evaluator/modifiers/crit-threshold.ts +96 -14
- package/src/evaluator/modifiers/die-bound.ts +48 -0
- package/src/evaluator/modifiers/explode.ts +70 -62
- package/src/evaluator/modifiers/flags.ts +78 -0
- package/src/evaluator/modifiers/keep-drop.ts +129 -127
- package/src/evaluator/modifiers/reroll.ts +44 -56
- package/src/evaluator/modifiers/sort.ts +21 -2
- package/src/evaluator/modifiers/success-count.ts +24 -12
- package/src/index.ts +56 -35
- package/src/lexer/lexer.ts +107 -34
- package/src/lexer/tokens.ts +31 -6
- package/src/parser/ast.ts +333 -346
- package/src/parser/guards.ts +248 -0
- package/src/parser/parser.ts +419 -242
- package/src/render.ts +392 -0
- package/src/rng/mock.ts +74 -13
- package/src/rng/seeded.ts +299 -64
- package/src/rng/types.ts +57 -0
- package/src/roll.ts +64 -47
- package/src/testing.ts +5 -9
- package/src/types.ts +353 -46
- package/src/version.ts +2 -0
- package/dist/cli.js +0 -2608
- package/dist/cli.js.map +0 -28
- package/dist/evaluator/index.d.ts +0 -8
- package/dist/evaluator/index.d.ts.map +0 -1
- package/dist/rng/index.d.ts +0 -8
- package/dist/rng/index.d.ts.map +0 -1
- package/src/evaluator/index.ts +0 -14
- package/src/rng/index.ts +0 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"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"}
|
package/dist/render.d.ts
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Breakdown rendering with consumer-supplied markers.
|
|
3
|
+
*
|
|
4
|
+
* `RollResult.rendered` bakes one markdown dialect into a string. This module
|
|
5
|
+
* rebuilds the same breakdown from `RollResult.parts`, letting the caller
|
|
6
|
+
* decide how each die is marked — HTML spans, ANSI codes, Telegram
|
|
7
|
+
* MarkdownV2, or nothing at all. Import it from `roll-parser/render`.
|
|
8
|
+
*
|
|
9
|
+
* @module render
|
|
10
|
+
*/
|
|
11
|
+
import type { DieResult, RollResult } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Per-die markers. Every slot is optional; an omitted slot leaves the die's
|
|
14
|
+
* text untouched, so `{}` renders a breakdown with no markup whatsoever.
|
|
15
|
+
*
|
|
16
|
+
* `text` arrives as the die's value already wrapped by any inner mark, and
|
|
17
|
+
* composition order is fixed: `critical` then `fumble` innermost, then
|
|
18
|
+
* exactly one of `dropped`, `success`, or `failure` outermost — matching the
|
|
19
|
+
* priority `RollResult.rendered` uses, where a dropped die is never also
|
|
20
|
+
* shown as a success.
|
|
21
|
+
*
|
|
22
|
+
* @example A die that is both critical and dropped
|
|
23
|
+
* ```typescript
|
|
24
|
+
* { critical: (_die, text) => `<b>${text}</b>`, dropped: (_die, text) => `<s>${text}</s>` }
|
|
25
|
+
* // renders <s><b>20</b></s>
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @category Rendering
|
|
29
|
+
*/
|
|
30
|
+
export type DieMarks = {
|
|
31
|
+
/** Excluded from the total by `kh`/`kl`/`dh`/`dl`, a reroll, or group selection. */
|
|
32
|
+
dropped?: (die: DieResult, text: string) => string;
|
|
33
|
+
/** Met a success-count threshold. */
|
|
34
|
+
success?: (die: DieResult, text: string) => string;
|
|
35
|
+
/** Met a failure threshold. */
|
|
36
|
+
failure?: (die: DieResult, text: string) => string;
|
|
37
|
+
/** `DieResult.critical` — the default rule or an explicit `cs` threshold. */
|
|
38
|
+
critical?: (die: DieResult, text: string) => string;
|
|
39
|
+
/** `DieResult.fumble` — the default rule or an explicit `cf` threshold. */
|
|
40
|
+
fumble?: (die: DieResult, text: string) => string;
|
|
41
|
+
/**
|
|
42
|
+
* Wraps a whole sub-roll dropped by group selection (`{1d8, 1d10}kh1`).
|
|
43
|
+
*
|
|
44
|
+
* Inside it, `dropped`, `success`, and `failure` are suppressed — the
|
|
45
|
+
* wrapper already carries the verdict, and marking a dropped die inside a
|
|
46
|
+
* dropped sub-roll says nothing extra. `critical` and `fumble` still apply:
|
|
47
|
+
* they describe the face, not the selection. A nested `droppedGroup` also
|
|
48
|
+
* survives, so `{{1d6, 1d8}kh1, 1d10}kh1` can wrap twice.
|
|
49
|
+
*/
|
|
50
|
+
droppedGroup?: (inner: string) => string;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* The marks `RollResult.rendered` itself uses. Applied when
|
|
54
|
+
* {@link renderBreakdown} is called without a `marks` argument; spread it to
|
|
55
|
+
* override one slot while keeping the rest markdown.
|
|
56
|
+
*
|
|
57
|
+
* @category Rendering
|
|
58
|
+
*/
|
|
59
|
+
export declare const MARKDOWN_MARKS: DieMarks;
|
|
60
|
+
/**
|
|
61
|
+
* Rebuilds a roll's breakdown from `RollResult.parts`, applying `marks` to
|
|
62
|
+
* every die.
|
|
63
|
+
*
|
|
64
|
+
* With no `marks` the output is byte-identical to `RollResult.rendered` — a
|
|
65
|
+
* property test pins that over generated notation. Pass any object to take
|
|
66
|
+
* over: omitted slots render plain, so `{}` strips markup entirely and
|
|
67
|
+
* `{ ...MARKDOWN_MARKS, critical: … }` keeps the rest of the markdown.
|
|
68
|
+
*
|
|
69
|
+
* The trailing `= <total>` is included, and becomes the degree label for a
|
|
70
|
+
* `vs` roll, exactly as `rendered` does.
|
|
71
|
+
*
|
|
72
|
+
* @param result - A finished result from `roll` or `evaluate`
|
|
73
|
+
* @param marks - Per-die markers; defaults to {@link MARKDOWN_MARKS}
|
|
74
|
+
* @returns The rendered breakdown
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* import { roll } from 'roll-parser';
|
|
79
|
+
* import { renderBreakdown } from 'roll-parser/render';
|
|
80
|
+
* import { createMockRng } from 'roll-parser/testing';
|
|
81
|
+
*
|
|
82
|
+
* const result = roll('4d6kh3', { rng: createMockRng([3, 6, 2, 5]) });
|
|
83
|
+
*
|
|
84
|
+
* renderBreakdown(result); // '4d6[3, 6, ~~2~~, 5] = 14'
|
|
85
|
+
* renderBreakdown(result, {}); // '4d6[3, 6, 2, 5] = 14'
|
|
86
|
+
* renderBreakdown(result, {
|
|
87
|
+
* dropped: (_die, text) => `<s>${text}</s>`,
|
|
88
|
+
* critical: (_die, text) => `<b>${text}</b>`,
|
|
89
|
+
* }); // '4d6[3, <b>6</b>, <s>2</s>, 5] = 14'
|
|
90
|
+
* ```
|
|
91
|
+
*
|
|
92
|
+
* @category Rendering
|
|
93
|
+
*/
|
|
94
|
+
export declare function renderBreakdown(result: RollResult, marks?: DieMarks): string;
|
|
95
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,SAAS,EAKT,UAAU,EACX,MAAM,YAAY,CAAC;AAGpB;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,oFAAoF;IACpF,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACnD,qCAAqC;IACrC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACnD,+BAA+B;IAC/B,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACnD,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACpD,2EAA2E;IAC3E,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,QAK5B,CAAC;AAuRF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,GAAE,QAAyB,GAAG,MAAM,CAI5F"}
|
package/dist/render.js
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { DegreeOfSuccess } from './types.js';
|
|
2
|
+
export const MARKDOWN_MARKS = {
|
|
3
|
+
dropped: (_die, text) => `~~${text}~~`,
|
|
4
|
+
success: (_die, text) => `**${text}**`,
|
|
5
|
+
failure: (_die, text) => `__${text}__`,
|
|
6
|
+
droppedGroup: (inner) => `~~${inner}~~`,
|
|
7
|
+
};
|
|
8
|
+
const KEEP_DROP_CODES = {
|
|
9
|
+
keep: { highest: 'kh', lowest: 'kl' },
|
|
10
|
+
drop: { highest: 'dh', lowest: 'dl' },
|
|
11
|
+
};
|
|
12
|
+
const EXPLODE_MARKERS = {
|
|
13
|
+
standard: '!',
|
|
14
|
+
compound: '!!',
|
|
15
|
+
penetrating: '!p',
|
|
16
|
+
};
|
|
17
|
+
const DEGREE_LABELS = {
|
|
18
|
+
[DegreeOfSuccess.CriticalFailure]: 'Critical Failure',
|
|
19
|
+
[DegreeOfSuccess.Failure]: 'Failure',
|
|
20
|
+
[DegreeOfSuccess.Success]: 'Success',
|
|
21
|
+
[DegreeOfSuccess.CriticalSuccess]: 'Critical Success',
|
|
22
|
+
};
|
|
23
|
+
const BARE_VARIABLE = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
24
|
+
function comparePointCode(point) {
|
|
25
|
+
return `${point.operator}${point.value}`;
|
|
26
|
+
}
|
|
27
|
+
function critCode(prefix, threshold) {
|
|
28
|
+
return threshold === 'default' ? prefix : `${prefix}${comparePointCode(threshold)}`;
|
|
29
|
+
}
|
|
30
|
+
function keepDropCode(spec) {
|
|
31
|
+
return `${KEEP_DROP_CODES[spec.kind][spec.selector]}${spec.count}`;
|
|
32
|
+
}
|
|
33
|
+
function failCode(point) {
|
|
34
|
+
return point.operator === '=' ? `f${point.value}` : `f${comparePointCode(point)}`;
|
|
35
|
+
}
|
|
36
|
+
function expr(part) {
|
|
37
|
+
switch (part.type) {
|
|
38
|
+
case 'literal':
|
|
39
|
+
return String(part.value);
|
|
40
|
+
case 'variable':
|
|
41
|
+
return String(part.value);
|
|
42
|
+
case 'dice':
|
|
43
|
+
return `${part.count}d${part.sides}`;
|
|
44
|
+
case 'fateDice':
|
|
45
|
+
return `${part.count}dF`;
|
|
46
|
+
case 'grouped':
|
|
47
|
+
return `(${expr(part.inner)})`;
|
|
48
|
+
case 'binaryOp':
|
|
49
|
+
return `${expr(part.left)} ${part.operator} ${expr(part.right)}`;
|
|
50
|
+
case 'unaryOp':
|
|
51
|
+
return `-${expr(part.operand)}`;
|
|
52
|
+
case 'group':
|
|
53
|
+
return `{${part.parts.map(expr).join(', ')}}`;
|
|
54
|
+
case 'functionCall':
|
|
55
|
+
return `${part.name}(${part.args.map(expr).join(', ')})`;
|
|
56
|
+
case 'keepDrop':
|
|
57
|
+
return `${expr(part.target)}${part.specs.map(keepDropCode).join('')}`;
|
|
58
|
+
case 'explode':
|
|
59
|
+
return `${expr(part.target)}${explodeCode(part)}`;
|
|
60
|
+
case 'reroll':
|
|
61
|
+
return `${expr(part.target)}${part.once ? 'ro' : 'r'}${comparePointCode(part.condition)}`;
|
|
62
|
+
case 'dieBound':
|
|
63
|
+
return `${expr(part.target)}${dieBoundCode(part)}`;
|
|
64
|
+
case 'sort':
|
|
65
|
+
return `${expr(part.target)}${part.order === 'ascending' ? 's' : 'sd'}`;
|
|
66
|
+
case 'critThreshold':
|
|
67
|
+
return `${expr(part.target)}${critThresholdCode(part)}`;
|
|
68
|
+
case 'successCount':
|
|
69
|
+
return `${expr(part.target)}${successCountCode(part)}`;
|
|
70
|
+
case 'versus':
|
|
71
|
+
return `${expr(part.roll)} vs ${expr(part.dc)}`;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function explodeCode(part) {
|
|
75
|
+
const marker = EXPLODE_MARKERS[part.variant];
|
|
76
|
+
return part.threshold == null ? marker : `${marker}${comparePointCode(part.threshold)}`;
|
|
77
|
+
}
|
|
78
|
+
function dieBoundCode(part) {
|
|
79
|
+
return part.value < 0 ? `${part.bound}(${part.value})` : `${part.bound}${part.value}`;
|
|
80
|
+
}
|
|
81
|
+
function critThresholdCode(part) {
|
|
82
|
+
return [
|
|
83
|
+
...part.successThresholds.map((threshold) => critCode('cs', threshold)),
|
|
84
|
+
...part.failThresholds.map((threshold) => critCode('cf', threshold)),
|
|
85
|
+
].join('');
|
|
86
|
+
}
|
|
87
|
+
function successCountCode(part) {
|
|
88
|
+
const fail = part.failThreshold == null ? '' : failCode(part.failThreshold);
|
|
89
|
+
return `${comparePointCode(part.threshold)}${fail}`;
|
|
90
|
+
}
|
|
91
|
+
function collectDice(part, out) {
|
|
92
|
+
switch (part.type) {
|
|
93
|
+
case 'dice':
|
|
94
|
+
case 'fateDice':
|
|
95
|
+
case 'sort':
|
|
96
|
+
case 'explode':
|
|
97
|
+
case 'reroll':
|
|
98
|
+
case 'successCount':
|
|
99
|
+
for (const die of part.rolls)
|
|
100
|
+
out.push(die);
|
|
101
|
+
return;
|
|
102
|
+
case 'grouped':
|
|
103
|
+
collectDice(part.inner, out);
|
|
104
|
+
return;
|
|
105
|
+
case 'unaryOp':
|
|
106
|
+
collectDice(part.operand, out);
|
|
107
|
+
return;
|
|
108
|
+
case 'binaryOp':
|
|
109
|
+
collectDice(part.left, out);
|
|
110
|
+
collectDice(part.right, out);
|
|
111
|
+
return;
|
|
112
|
+
case 'keepDrop':
|
|
113
|
+
case 'dieBound':
|
|
114
|
+
case 'critThreshold':
|
|
115
|
+
collectDice(part.target, out);
|
|
116
|
+
return;
|
|
117
|
+
case 'group':
|
|
118
|
+
for (const sub of part.parts)
|
|
119
|
+
collectDice(sub, out);
|
|
120
|
+
return;
|
|
121
|
+
case 'functionCall':
|
|
122
|
+
for (const arg of part.args)
|
|
123
|
+
collectDice(arg, out);
|
|
124
|
+
return;
|
|
125
|
+
case 'versus':
|
|
126
|
+
collectDice(part.roll, out);
|
|
127
|
+
collectDice(part.dc, out);
|
|
128
|
+
return;
|
|
129
|
+
case 'literal':
|
|
130
|
+
case 'variable':
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function poolOf(part) {
|
|
135
|
+
const dice = [];
|
|
136
|
+
collectDice(part, dice);
|
|
137
|
+
return dice;
|
|
138
|
+
}
|
|
139
|
+
function markDie(die, marks, plain) {
|
|
140
|
+
let text = String(die.result);
|
|
141
|
+
if (die.critical)
|
|
142
|
+
text = marks.critical?.(die, text) ?? text;
|
|
143
|
+
if (die.fumble)
|
|
144
|
+
text = marks.fumble?.(die, text) ?? text;
|
|
145
|
+
if (plain)
|
|
146
|
+
return text;
|
|
147
|
+
const { modifiers } = die;
|
|
148
|
+
if (modifiers.includes('dropped'))
|
|
149
|
+
return marks.dropped?.(die, text) ?? text;
|
|
150
|
+
if (modifiers.includes('success'))
|
|
151
|
+
return marks.success?.(die, text) ?? text;
|
|
152
|
+
if (modifiers.includes('failure'))
|
|
153
|
+
return marks.failure?.(die, text) ?? text;
|
|
154
|
+
return text;
|
|
155
|
+
}
|
|
156
|
+
function renderPool(dice, marks, plain) {
|
|
157
|
+
const shown = [];
|
|
158
|
+
for (const die of dice) {
|
|
159
|
+
if (die.modifiers.includes('meta'))
|
|
160
|
+
continue;
|
|
161
|
+
shown.push(markDie(die, marks, plain));
|
|
162
|
+
}
|
|
163
|
+
return `[${shown.join(', ')}]`;
|
|
164
|
+
}
|
|
165
|
+
function renderModifier(target, code, dice, marks, plain) {
|
|
166
|
+
const pool = dice.length === 0 ? '' : renderPool(dice, marks, plain);
|
|
167
|
+
return `${expr(target)}${code}${pool}`;
|
|
168
|
+
}
|
|
169
|
+
function renderPart(part, marks, plain) {
|
|
170
|
+
switch (part.type) {
|
|
171
|
+
case 'literal':
|
|
172
|
+
return String(part.value);
|
|
173
|
+
case 'variable': {
|
|
174
|
+
const display = BARE_VARIABLE.test(part.name) ? `@${part.name}` : `@{${part.name}}`;
|
|
175
|
+
return `${display}[${part.value}]`;
|
|
176
|
+
}
|
|
177
|
+
case 'dice':
|
|
178
|
+
case 'fateDice':
|
|
179
|
+
return `${expr(part)}${renderPool(part.rolls, marks, plain)}`;
|
|
180
|
+
case 'grouped':
|
|
181
|
+
return `(${renderPart(part.inner, marks, plain)})`;
|
|
182
|
+
case 'binaryOp':
|
|
183
|
+
return `${renderPart(part.left, marks, plain)} ${part.operator} ${renderPart(part.right, marks, plain)}`;
|
|
184
|
+
case 'unaryOp':
|
|
185
|
+
return `-${renderPart(part.operand, marks, plain)}`;
|
|
186
|
+
case 'functionCall': {
|
|
187
|
+
const args = part.args.map((arg) => renderPart(arg, marks, plain)).join(', ');
|
|
188
|
+
return `${part.name}(${args})`;
|
|
189
|
+
}
|
|
190
|
+
case 'versus':
|
|
191
|
+
return `${renderPart(part.roll, marks, plain)} vs ${renderPart(part.dc, marks, plain)}`;
|
|
192
|
+
case 'group':
|
|
193
|
+
return renderGroup(part, marks, plain);
|
|
194
|
+
case 'keepDrop':
|
|
195
|
+
return part.target.type === 'group' && part.target.keptIndices != null
|
|
196
|
+
? renderPart(part.target, marks, plain)
|
|
197
|
+
: `${expr(part.target)}${renderPool(poolOf(part.target), marks, plain)}`;
|
|
198
|
+
case 'explode':
|
|
199
|
+
return renderModifier(part.target, explodeCode(part), part.rolls, marks, plain);
|
|
200
|
+
case 'reroll':
|
|
201
|
+
return renderModifier(part.target, `${part.once ? 'ro' : 'r'}${comparePointCode(part.condition)}`, part.rolls, marks, plain);
|
|
202
|
+
case 'successCount':
|
|
203
|
+
return renderModifier(part.target, successCountCode(part), part.rolls, marks, plain);
|
|
204
|
+
case 'dieBound':
|
|
205
|
+
return `${expr(part.target)}${dieBoundCode(part)}${renderPool(poolOf(part.target), marks, plain)}`;
|
|
206
|
+
case 'sort':
|
|
207
|
+
return `${expr(part.target)}${part.order === 'ascending' ? 's' : 'sd'}${renderPool(part.rolls, marks, plain)}`;
|
|
208
|
+
case 'critThreshold':
|
|
209
|
+
return `${expr(part.target)}${critThresholdCode(part)}${renderPool(poolOf(part.target), marks, plain)}`;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
function renderGroup(part, marks, plain) {
|
|
213
|
+
const { keptIndices } = part;
|
|
214
|
+
const subRolls = part.parts.map((sub, index) => {
|
|
215
|
+
if (keptIndices == null || keptIndices.includes(index)) {
|
|
216
|
+
return renderPart(sub, marks, plain);
|
|
217
|
+
}
|
|
218
|
+
const inner = renderPart(sub, marks, true);
|
|
219
|
+
return marks.droppedGroup?.(inner) ?? inner;
|
|
220
|
+
});
|
|
221
|
+
return `{${subRolls.join(', ')}}`;
|
|
222
|
+
}
|
|
223
|
+
export function renderBreakdown(result, marks = MARKDOWN_MARKS) {
|
|
224
|
+
const trailing = result.degree == null ? String(result.total) : DEGREE_LABELS[result.degree];
|
|
225
|
+
return `${renderPart(result.parts, marks, false)} = ${trailing}`;
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|
package/dist/rng/mock.d.ts
CHANGED
|
@@ -5,32 +5,93 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { RNG } from './types.js';
|
|
7
7
|
/**
|
|
8
|
-
* Error thrown when
|
|
8
|
+
* Error thrown when a mock RNG runs out of predefined values.
|
|
9
9
|
*
|
|
10
|
-
* This is intentional behavior
|
|
11
|
-
*
|
|
10
|
+
* This is intentional behavior, not a limitation: a mock that wrapped around
|
|
11
|
+
* would silently pass a test whose expression rolls more dice than the author
|
|
12
|
+
* thought. Seeing this error means the notation consumed more draws than the
|
|
13
|
+
* sequence supplied — count the dice, including explosions, rerolls, and
|
|
14
|
+
* meta-expressions, and check the draw order in the roll-parser README.
|
|
15
|
+
*
|
|
16
|
+
* Deliberately outside the `RollParserError` hierarchy — no `code`, and
|
|
17
|
+
* `isRollParserError` answers `false` for it. An exhausted mock is a bug in the
|
|
18
|
+
* test fixture, not a failure mode of the notation, so the
|
|
19
|
+
* `if (!isRollParserError(error)) throw error` line a consumer writes around
|
|
20
|
+
* `roll()` rethrows it and fails the test instead of routing it to a "bad dice"
|
|
21
|
+
* message. `instanceof` is the check here — there is no `code` to branch on.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* import { roll } from 'roll-parser';
|
|
26
|
+
* import { createMockRng, MockRNGExhaustedError } from 'roll-parser/testing';
|
|
27
|
+
*
|
|
28
|
+
* try {
|
|
29
|
+
* roll('4d6', { rng: createMockRng([1, 2, 3]) });
|
|
30
|
+
* } catch (error) {
|
|
31
|
+
* error instanceof MockRNGExhaustedError; // true
|
|
32
|
+
* (error as MockRNGExhaustedError).consumed; // 3
|
|
33
|
+
* (error as Error).message;
|
|
34
|
+
* // 'MockRNG exhausted: consumed 3 values, no more available'
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @category Testing
|
|
12
39
|
*/
|
|
13
40
|
export declare class MockRNGExhaustedError extends Error {
|
|
41
|
+
/**
|
|
42
|
+
* How many values the sequence handed out before running dry — equivalently,
|
|
43
|
+
* the length of the array that was passed to `createMockRng`. Compare it
|
|
44
|
+
* against the dice you expected to be rolled to find the miscount.
|
|
45
|
+
*/
|
|
14
46
|
readonly consumed: number;
|
|
15
47
|
constructor(consumed: number);
|
|
16
48
|
}
|
|
17
49
|
/**
|
|
18
|
-
* Creates a mock RNG that
|
|
50
|
+
* Creates a mock {@link RNG} that hands out predefined values in order — the
|
|
51
|
+
* way to write dice tests with exact expected totals.
|
|
52
|
+
*
|
|
53
|
+
* Two deliberate strictnesses, both there to surface a miscounted sequence
|
|
54
|
+
* instead of hiding it:
|
|
19
55
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
56
|
+
* - It never wraps around. Running out throws {@link MockRNGExhaustedError}.
|
|
57
|
+
* - `nextInt` rejects a scripted value outside the requested `[min, max]`
|
|
58
|
+
* with a `RangeError`, so `createMockRng([7])` cannot satisfy a `d6`.
|
|
22
59
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
60
|
+
* Both are the only failures that reach a caller of `roll()` without a
|
|
61
|
+
* roll-parser `code`, and only ever when a mock was injected — see
|
|
62
|
+
* {@link MockRNGExhaustedError} for why they stay outside the hierarchy.
|
|
63
|
+
*
|
|
64
|
+
* Draw order matters when the notation contains meta-expressions. Keep/drop
|
|
65
|
+
* counts (`4d6kh(1d2)`) are drawn *before* the pool; threshold expressions
|
|
66
|
+
* (`4d6cs>(1d2)`) are drawn *after* it. The README's Randomness section has
|
|
67
|
+
* the full tables.
|
|
68
|
+
*
|
|
69
|
+
* @param values - Values to return, in draw order (die faces for `nextInt`,
|
|
70
|
+
* floats in `[0, 1)` for `next`)
|
|
71
|
+
* @returns An `RNG` that replays `values`
|
|
25
72
|
*
|
|
26
73
|
* @example
|
|
27
74
|
* ```typescript
|
|
75
|
+
* import { createMockRng } from 'roll-parser/testing';
|
|
76
|
+
*
|
|
28
77
|
* const rng = createMockRng([4, 2, 6]);
|
|
29
|
-
* rng.nextInt(1, 6); //
|
|
30
|
-
* rng.nextInt(1, 6); //
|
|
31
|
-
* rng.nextInt(1, 6); //
|
|
32
|
-
* rng.nextInt(1, 6); //
|
|
78
|
+
* rng.nextInt(1, 6); // 4
|
|
79
|
+
* rng.nextInt(1, 6); // 2
|
|
80
|
+
* rng.nextInt(1, 6); // 6
|
|
81
|
+
* rng.nextInt(1, 6); // throws MockRNGExhaustedError
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* @example Pinning a roll
|
|
85
|
+
* ```typescript
|
|
86
|
+
* import { roll } from 'roll-parser';
|
|
87
|
+
* import { createMockRng } from 'roll-parser/testing';
|
|
88
|
+
*
|
|
89
|
+
* const result = roll('4d6kh3', { rng: createMockRng([3, 6, 2, 5]) });
|
|
90
|
+
* result.total; // 14
|
|
91
|
+
* result.rendered; // '4d6[3, 6, ~~2~~, 5] = 14'
|
|
33
92
|
* ```
|
|
93
|
+
*
|
|
94
|
+
* @category Testing
|
|
34
95
|
*/
|
|
35
96
|
export declare function createMockRng(values: number[]): RNG;
|
|
36
97
|
//# sourceMappingURL=mock.d.ts.map
|
package/dist/rng/mock.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/rng/mock.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC
|
|
1
|
+
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/rng/mock.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,YAAY,QAAQ,EAAE,MAAM,EAI3B;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAsBnD"}
|
package/dist/rng/mock.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export class MockRNGExhaustedError extends Error {
|
|
2
|
+
consumed;
|
|
3
|
+
constructor(consumed) {
|
|
4
|
+
super(`MockRNG exhausted: consumed ${consumed} values, no more available`);
|
|
5
|
+
this.name = 'MockRNGExhaustedError';
|
|
6
|
+
this.consumed = consumed;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function createMockRng(values) {
|
|
10
|
+
let index = 0;
|
|
11
|
+
const getNext = () => {
|
|
12
|
+
const value = values[index];
|
|
13
|
+
if (value == null) {
|
|
14
|
+
throw new MockRNGExhaustedError(index);
|
|
15
|
+
}
|
|
16
|
+
index++;
|
|
17
|
+
return value;
|
|
18
|
+
};
|
|
19
|
+
return {
|
|
20
|
+
next: getNext,
|
|
21
|
+
nextInt: (min, max) => {
|
|
22
|
+
const value = getNext();
|
|
23
|
+
if (value < min || value > max) {
|
|
24
|
+
throw new RangeError(`MockRNG value ${value} is out of bounds [${min}, ${max}]`);
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../../src/rng/mock.ts"],"names":[],"mappings":"AAyCA,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAMrC,QAAQ,CAAS;IAE1B,YAAY,QAAgB;QAC1B,KAAK,CAAC,+BAA+B,QAAQ,4BAA4B,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAiDD,MAAM,UAAU,aAAa,CAAC,MAAgB;IAC5C,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,MAAM,OAAO,GAAG,GAAW,EAAE;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,KAAK,EAAE,CAAC;QACR,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,CAAC,GAAW,EAAE,GAAW,EAAU,EAAE;YAC5C,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC;YACxB,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;gBAC/B,MAAM,IAAI,UAAU,CAAC,iBAAiB,KAAK,sBAAsB,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;YACnF,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC"}
|