desmost 0.3.1 → 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.
Files changed (59) hide show
  1. package/dist/compiler/compile.d.ts.map +1 -1
  2. package/dist/compiler/compile.js +4 -2
  3. package/dist/compiler/compile.js.map +1 -1
  4. package/dist/compiler/evaluate.d.ts.map +1 -1
  5. package/dist/compiler/evaluate.js +19 -4
  6. package/dist/compiler/evaluate.js.map +1 -1
  7. package/dist/compiler/format.d.ts +4 -0
  8. package/dist/compiler/format.d.ts.map +1 -0
  9. package/dist/compiler/format.js +7 -0
  10. package/dist/compiler/format.js.map +1 -0
  11. package/dist/compiler/index.d.ts.map +1 -1
  12. package/dist/compiler/index.js.map +1 -1
  13. package/dist/compiler/options.d.ts +2 -1
  14. package/dist/compiler/options.d.ts.map +1 -1
  15. package/dist/compiler/options.js +2 -1
  16. package/dist/compiler/options.js.map +1 -1
  17. package/dist/magic/incantation.d.ts.map +1 -1
  18. package/dist/magic/incantation.js +2 -1
  19. package/dist/magic/incantation.js.map +1 -1
  20. package/dist/magic/index.d.ts.map +1 -1
  21. package/dist/magic/index.js.map +1 -1
  22. package/dist/magic/local/anim.d.ts +1 -1
  23. package/dist/magic/local/anim.d.ts.map +1 -1
  24. package/dist/magic/local/anim.js +1 -1
  25. package/dist/magic/local/anim.js.map +1 -1
  26. package/dist/magic/local/colour.js +1 -1
  27. package/dist/magic/local/colour.js.map +1 -1
  28. package/dist/magic/local/index.d.ts.map +1 -1
  29. package/dist/magic/local/index.js +2 -0
  30. package/dist/magic/local/index.js.map +1 -1
  31. package/dist/magic/local/label.d.ts +17 -0
  32. package/dist/magic/local/label.d.ts.map +1 -0
  33. package/dist/magic/local/label.js +39 -0
  34. package/dist/magic/local/label.js.map +1 -0
  35. package/dist/parser/desmost-parser.d.ts +3 -2
  36. package/dist/parser/desmost-parser.d.ts.map +1 -1
  37. package/dist/parser/desmost-parser.js +113 -61
  38. package/dist/parser/desmost-parser.js.map +1 -1
  39. package/dist/parser/index.d.ts.map +1 -1
  40. package/dist/parser/index.js.map +1 -1
  41. package/dist/utils.d.ts +11 -0
  42. package/dist/utils.d.ts.map +1 -0
  43. package/dist/utils.js +41 -0
  44. package/dist/utils.js.map +1 -0
  45. package/package.json +4 -2
  46. package/src/compiler/compile.ts +4 -2
  47. package/src/compiler/evaluate.ts +1 -13
  48. package/src/compiler/format.ts +16 -0
  49. package/src/compiler/index.ts +7 -0
  50. package/src/compiler/options.ts +22 -10
  51. package/src/magic/incantation.ts +2 -1
  52. package/src/magic/index.ts +8 -0
  53. package/src/magic/local/anim.ts +1 -1
  54. package/src/magic/local/colour.ts +1 -1
  55. package/src/magic/local/label.ts +12 -7
  56. package/src/parser/desmost-parser.ts +173 -62
  57. package/src/parser/generic-parser.ts +3 -3
  58. package/src/parser/index.ts +0 -2
  59. package/src/utils.ts +54 -0
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/compiler/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAuB,MAAM,WAAW,CAAC;AAGrE,OAAO,EAAiB,GAAG,EAAE,MAAM,WAAW,CAAC;AAqB/C,wBAAgB,OAAO,CAErB,MAAM,EAAE,MAAM,CAAC,UAAU,EAGzB,MAAM,EAAE,MAAM,EAGd,OAAO,CAAC,EAAE,cAAc,GACvB,IAAI,GAAG,YAAY,CAsFrB;AAGD,UAAU,YAAY;IAEpB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,GAAG,EAAE,CAAC;CACZ"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/compiler/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAuB,MAAM,WAAW,CAAC;AAGrE,OAAO,EAAiB,GAAG,EAAE,MAAM,WAAW,CAAC;AAqB/C,wBAAgB,OAAO,CAErB,MAAM,EAAE,MAAM,CAAC,UAAU,EAGzB,MAAM,EAAE,MAAM,EAGd,OAAO,CAAC,EAAE,cAAc,GACvB,IAAI,GAAG,YAAY,CAwFrB;AAGD,UAAU,YAAY;IAEpB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,GAAG,EAAE,CAAC;CACZ"}
@@ -27,12 +27,14 @@ export function compile(desmos, source, options) {
27
27
  if (opts.debug) {
28
28
  ast.push(r);
29
29
  }
30
- let defer;
30
+ let defer = undefined;
31
31
  switch (r.kind) {
32
32
  case Ast.Kind.INCANTATION_INVOCATION:
33
33
  defer = evaluate_global_incantation(r, desmos, opts);
34
34
  break;
35
35
  case Ast.Kind.EXPRESSION:
36
+ if (opts.ignore_blank_lines && r.data.latex === " ")
37
+ break;
36
38
  defer = evaluate_expr(r, desmos, opts);
37
39
  break;
38
40
  case Ast.Kind.INVALID_INCANTATION:
@@ -46,7 +48,7 @@ export function compile(desmos, source, options) {
46
48
  }
47
49
  catch (e) {
48
50
  if (e instanceof UnrecoverableError) {
49
- errors = [e.message];
51
+ errors.push(e);
50
52
  }
51
53
  else {
52
54
  throw e;
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/compiler/compile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/compiler/compile.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/compiler/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAMnE,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,GAAG,CAAC,qBAAqB,EACrC,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,aAAa,CAAC,IAAI,GAAG,MAAM,CAAC,CAiB9B;AAMD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,aAAa,CAAC,IAAI,GAAG,MAAM,CAAC,CAgC9B;AAQD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,aAAa,CAAC,IAAI,GAAG,MAAM,CAAC,CAuB9B"}
1
+ {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/compiler/evaluate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAMnE,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,GAAG,CAAC,qBAAqB,EACrC,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,aAAa,CAAC,IAAI,GAAG,MAAM,CAAC,CAiB9B;AAMD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,aAAa,CAAC,IAAI,GAAG,MAAM,CAAC,CA4C9B;AAQD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,aAAa,CAAC,IAAI,GAAG,MAAM,CAAC,CAuB9B"}
@@ -1,3 +1,4 @@
1
+ import { format_error } from "./format.js";
1
2
  import { Ast } from "../parser/index.js";
2
3
  import { UnrecoverableError } from "../errors.js";
3
4
  export function evaluate_global_incantation(invocation, desmos, options) {
@@ -41,6 +42,12 @@ export function evaluate_expr(expr, desmos, options) {
41
42
  if (errors.length > 0) {
42
43
  desmos.setExpression({ type: "text", text: errors.join("\n\n") });
43
44
  }
45
+ if (expr.data.latex != undefined) {
46
+ expr.data.latex = normalise_latex(expr.data.latex);
47
+ if (options.prettify) {
48
+ expr.data.latex = prettify_latex(expr.data.latex);
49
+ }
50
+ }
44
51
  desmos.setExpression(expr.data);
45
52
  }
46
53
  export function evaluate_error(error, desmos, options) {
@@ -63,9 +70,17 @@ export function evaluate_error(error, desmos, options) {
63
70
  }
64
71
  }
65
72
  }
66
- function format_error(e, options) {
67
- let prefix = options.error_prefix;
68
- let sep = (prefix === "" || prefix.endsWith("\n")) ? "" : " ";
69
- return `${prefix}${sep}${e.name}: ${e.message}`;
73
+ function normalise_latex(latex) {
74
+ return latex.replaceAll("\n", " ");
75
+ }
76
+ function prettify_latex(latex) {
77
+ latex = latex.replaceAll(/(?<!\\left)\(/g, "\\left(");
78
+ latex = latex.replaceAll(/(?<!\\right)\)/g, "\\right)");
79
+ latex = latex.replaceAll(/(?<!\\left)\[/g, "\\left[");
80
+ latex = latex.replaceAll(/(?<!\\right)\]/g, "\\right]");
81
+ latex = latex.replaceAll("\\{", "\\left\\{");
82
+ latex = latex.replaceAll("\\}", "\\right\\}");
83
+ latex = latex.replaceAll(/(?<=[^\w]|^)\\?(mean|median|count|total|repeat|join|sort|shuffle|unique|mod|ceil|floor|round|sign)(?=\(|\\left\()/g, "\\operatorname{$1}");
84
+ return latex;
70
85
  }
71
86
  //# sourceMappingURL=evaluate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/compiler/evaluate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/compiler/evaluate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { DesmostOptions } from "./options.js";
2
+ import { UnrecoverableError } from "../errors.js";
3
+ export declare function format_error(e: UnrecoverableError, options: Required<DesmostOptions>): string;
4
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/compiler/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAG/C,wBAAgB,YAAY,CAC1B,CAAC,EAAE,kBAAkB,EACrB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,MAAM,CAOR"}
@@ -0,0 +1,7 @@
1
+ import { UnrecoverableError } from "../errors.js";
2
+ export function format_error(e, options) {
3
+ let prefix = options.error_prefix;
4
+ let sep = (prefix === "" || prefix.endsWith("\n")) ? "" : " ";
5
+ return `${prefix}${sep}${e.name}: ${e.message}`;
6
+ }
7
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/compiler/format.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAG/C,MAAM,UAAU,YAAY,CAC1B,CAAqB,EACrB,OAAiC;IAGjC,IAAI,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAClC,IAAI,GAAG,GAAG,CAAC,MAAM,KAAK,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAE9D,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAElD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compiler/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compiler/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compiler/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compiler/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -3,8 +3,9 @@ export interface DesmostOptions {
3
3
  place_errors?: "inline" | "end" | "start";
4
4
  error_prefix?: string;
5
5
  ignore_comments?: boolean;
6
- ignore_line_breaks?: boolean;
6
+ ignore_blank_lines?: boolean;
7
7
  ignore_trailing_blanks?: boolean;
8
+ prettify?: boolean;
8
9
  debug?: boolean;
9
10
  }
10
11
  export declare function set_default_options(options: Partial<DesmostOptions> | undefined): Required<DesmostOptions>;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/compiler/options.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,cAAc;IAW7B,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,CAAA;IASzC,YAAY,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAA;IAKzC,YAAY,CAAC,EAAE,MAAM,CAAA;IAOrB,eAAe,CAAC,EAAE,OAAO,CAAA;IAOzB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAO5B,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAOhC,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAMD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,CAe1G"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/compiler/options.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAS7B,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,CAAA;IASzC,YAAY,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAA;IASzC,YAAY,CAAC,EAAE,MAAM,CAAA;IAOrB,eAAe,CAAC,EAAE,OAAO,CAAA;IAOzB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAO5B,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAOhC,QAAQ,CAAC,EAAE,OAAO,CAAA;IASlB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAMD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,CAgB1G"}
@@ -4,8 +4,9 @@ export function set_default_options(options) {
4
4
  options.place_errors ??= "inline";
5
5
  options.error_prefix ??= "[DESMOST ERROR]\n";
6
6
  options.ignore_comments ??= false;
7
- options.ignore_line_breaks ??= false;
7
+ options.ignore_blank_lines ??= false;
8
8
  options.ignore_trailing_blanks ??= false;
9
+ options.prettify ??= true;
9
10
  options.debug ??= false;
10
11
  return options;
11
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/compiler/options.ts"],"names":[],"mappings":"AA6DA,MAAM,UAAU,mBAAmB,CAAC,OAA4C;IAE9E,OAAO,KAAK,EAAE,CAAC;IAEf,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC;IAC7B,OAAO,CAAC,YAAY,KAAK,QAAQ,CAAC;IAClC,OAAO,CAAC,YAAY,KAAK,mBAAmB,CAAC;IAE7C,OAAO,CAAC,eAAe,KAAK,KAAK,CAAC;IAClC,OAAO,CAAC,kBAAkB,KAAK,KAAK,CAAC;IACrC,OAAO,CAAC,sBAAsB,KAAK,KAAK,CAAC;IAEzC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC;IAExB,OAAO,OAAmC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/compiler/options.ts"],"names":[],"mappings":"AAgFA,MAAM,UAAU,mBAAmB,CAAC,OAA4C;IAE9E,OAAO,KAAK,EAAE,CAAC;IAEf,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC;IAC7B,OAAO,CAAC,YAAY,KAAK,QAAQ,CAAC;IAClC,OAAO,CAAC,YAAY,KAAK,mBAAmB,CAAC;IAE7C,OAAO,CAAC,eAAe,KAAK,KAAK,CAAC;IAClC,OAAO,CAAC,kBAAkB,KAAK,KAAK,CAAC;IACrC,OAAO,CAAC,sBAAsB,KAAK,KAAK,CAAC;IAEzC,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC;IAC1B,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC;IAExB,OAAO,OAAmC,CAAC;AAC7C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"incantation.d.ts","sourceRoot":"","sources":["../../src/magic/incantation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAgBnE,8BAAsB,WAAW,CAC/B,MAAM,SAAS,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;IAItD,kBAAyB,WAAW,EAAE,MAAM,CAAA;IAG5C,kBAAyB,UAAU,EAAE,MAAM,CAAA;IAG3C,SAAgB,KAAK,CAAC,EAAE,MAAM,CAAA;aAId,KAAK,CACnB,MAAM,EAAE,MAAM,SAAS,MAAM,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,eAAe,EAC1E,IAAI,CAAC,EAAE,OAAO,GACb,IAAI;IAGP,SAAS,CAAC,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,EAClE,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,CAAC,GACV,OAAO,CAAC,MAAM,IAAI,CAAC;CASvB;AAMD,8BAAsB,cAAc,CAClC,MAAM,SAAS,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAEtD,SAAQ,WAAW,CAAC,MAAM,CAAC;IAG3B,SAAgB,YAAY,EAAE,OAAO,CAAO;IAG5C,kBAAyB,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAA;IAY/C,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC;CAiBzD;AAGD,yBAAiB,WAAW,CAC5B;IAEE,KAAY,MAAM;QAGhB,MAAM,IAAA;QAGN,KAAK,IAAA;QAGL,IAAI,IAAA;KACL;IAGD,KAAY,OAAO;QAGjB,MAAM,WAAW;QAGjB,KAAK,UAAU;QAGf,IAAI,SAAS;QAGb,MAAM,WAAW;KAClB;CACF;AAMD,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;AAG/C,MAAM,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;AAG7C,MAAM,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC"}
1
+ {"version":3,"file":"incantation.d.ts","sourceRoot":"","sources":["../../src/magic/incantation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAgBnE,8BAAsB,WAAW,CAC/B,MAAM,SAAS,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;IAItD,kBAAyB,WAAW,EAAE,MAAM,CAAA;IAG5C,kBAAyB,UAAU,EAAE,MAAM,CAAA;IAG3C,SAAgB,KAAK,CAAC,EAAE,MAAM,CAAA;aAId,KAAK,CACnB,MAAM,EAAE,MAAM,SAAS,MAAM,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,eAAe,EAC1E,IAAI,CAAC,EAAE,OAAO,GACb,IAAI;IAGP,SAAS,CAAC,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,EAClE,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,CAAC,GACV,OAAO,CAAC,MAAM,IAAI,CAAC;CASvB;AAMD,8BAAsB,cAAc,CAClC,MAAM,SAAS,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAEtD,SAAQ,WAAW,CAAC,MAAM,CAAC;IAG3B,SAAgB,YAAY,EAAE,OAAO,CAAO;IAG5C,kBAAyB,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAA;IAY/C,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC;CAkBzD;AAGD,yBAAiB,WAAW,CAC5B;IAEE,KAAY,MAAM;QAGhB,MAAM,IAAA;QAGN,KAAK,IAAA;QAGL,IAAI,IAAA;KACL;IAGD,KAAY,OAAO;QAGjB,MAAM,WAAW;QAGjB,KAAK,UAAU;QAGf,IAAI,SAAS;QAGb,MAAM,WAAW;KAClB;CACF;AAMD,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;AAG/C,MAAM,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;AAG7C,MAAM,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC"}
@@ -15,13 +15,14 @@ export class ArgIncantation extends Incantation {
15
15
  case Incantation.ArgType.STRING: return raw;
16
16
  case Incantation.ArgType.LATEX: return raw;
17
17
  case Incantation.ArgType.ENUM: return raw;
18
- case Incantation.ArgType.OBJECT:
18
+ case Incantation.ArgType.OBJECT: {
19
19
  try {
20
20
  return Json5.parse(`{${raw}}`);
21
21
  }
22
22
  catch (e) {
23
23
  throw new UnrecoverableError.InvalidArgument(e.message);
24
24
  }
25
+ }
25
26
  }
26
27
  }
27
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"incantation.js","sourceRoot":"","sources":["../../src/magic/incantation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAsB,MAAM,WAAW,CAAC;AAgBnE,MAAM,OAAgB,WAAW;IAWf,KAAK,CAAS;IAUpB,iBAAiB,CACzB,MAAe,EACf,QAAW;QAGX,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,KAAK,QAAQ,EACzC,CAAC;YACC,MAAM,IAAI,kBAAkB,CAAC,kBAAkB,CAC7C,IAAI,IAAI,CAAC,UAAU,wBAAwB,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,4CAA4C,MAAM,EAAE,CAC9I,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAMD,MAAM,OAAgB,cAGpB,SAAQ,WAAmB;IAGX,YAAY,GAAY,IAAI,CAAA;IAerC,YAAY,CAAC,GAAW;QAE7B,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,KAAK,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC;YAC5C,KAAK,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAE,OAAO,GAAG,CAAC;YAC5C,KAAK,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAG,OAAO,GAAG,CAAC;YAE5C,KAAK,WAAW,CAAC,OAAO,CAAC,MAAM;gBAC7B,IAAI,CAAC;oBACH,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;gBACjC,CAAC;gBACD,OAAO,CAAC,EAAE,CAAC;oBAET,MAAM,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC1D,CAAC;QACL,CAAC;IACH,CAAC;CACF;AAGD,WAAiB,WAAW;IAG1B,IAAY,MAUX;IAVD,WAAY,MAAM;QAGhB,uCAAM,CAAA;QAGN,qCAAK,CAAA;QAGL,mCAAI,CAAA;IACN,CAAC,EAVW,MAAM,GAAN,kBAAM,KAAN,kBAAM,QAUjB;IAGD,IAAY,OAaX;IAbD,WAAY,OAAO;QAGjB,4BAAiB,CAAA;QAGjB,0BAAe,CAAA;QAGf,wBAAa,CAAA;QAGb,4BAAiB,CAAA;IACnB,CAAC,EAbW,OAAO,GAAP,mBAAO,KAAP,mBAAO,QAalB;AACH,CAAC,EA9BgB,WAAW,KAAX,WAAW,QA8B3B"}
1
+ {"version":3,"file":"incantation.js","sourceRoot":"","sources":["../../src/magic/incantation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAsB,MAAM,WAAW,CAAC;AAgBnE,MAAM,OAAgB,WAAW;IAWf,KAAK,CAAS;IAUpB,iBAAiB,CACzB,MAAe,EACf,QAAW;QAGX,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,KAAK,QAAQ,EACzC,CAAC;YACC,MAAM,IAAI,kBAAkB,CAAC,kBAAkB,CAC7C,IAAI,IAAI,CAAC,UAAU,wBAAwB,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,4CAA4C,MAAM,EAAE,CAC9I,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAMD,MAAM,OAAgB,cAGpB,SAAQ,WAAmB;IAGX,YAAY,GAAY,IAAI,CAAA;IAerC,YAAY,CAAC,GAAW;QAE7B,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,KAAK,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC;YAC5C,KAAK,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAE,OAAO,GAAG,CAAC;YAC5C,KAAK,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAG,OAAO,GAAG,CAAC;YAE5C,KAAK,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC;oBACH,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;gBACjC,CAAC;gBACD,OAAO,CAAC,EAAE,CAAC;oBAET,MAAM,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAGD,WAAiB,WAAW;IAG1B,IAAY,MAUX;IAVD,WAAY,MAAM;QAGhB,uCAAM,CAAA;QAGN,qCAAK,CAAA;QAGL,mCAAI,CAAA;IACN,CAAC,EAVW,MAAM,GAAN,kBAAM,KAAN,kBAAM,QAUjB;IAGD,IAAY,OAaX;IAbD,WAAY,OAAO;QAGjB,4BAAiB,CAAA;QAGjB,0BAAe,CAAA;QAGf,wBAAa,CAAA;QAGb,4BAAiB,CAAA;IACnB,CAAC,EAbW,OAAO,GAAP,mBAAO,KAAP,mBAAO,QAalB;AACH,CAAC,EA9BgB,WAAW,KAAX,WAAW,QA8B3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/magic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC5D,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/magic/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC5D,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/magic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/magic/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Incantation, type LOCAL } from "../incantation.js";
2
2
  export declare class AnimIncantation extends Incantation<LOCAL> {
3
- readonly description = "Animates the slider of a block.";
3
+ readonly description = "Animate the slider of a block.";
4
4
  readonly identifier = "anim";
5
5
  apply(target: Desmos.ExpressionState): void;
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"anim.d.ts","sourceRoot":"","sources":["../../../src/magic/local/anim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGzD,qBAAa,eAAgB,SAAQ,WAAW,CAAC,KAAK,CAAC;IAErD,SAAkB,WAAW,qCACQ;IAErC,SAAkB,UAAU,UAAS;IAE5B,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe;CAM9C"}
1
+ {"version":3,"file":"anim.d.ts","sourceRoot":"","sources":["../../../src/magic/local/anim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGzD,qBAAa,eAAgB,SAAQ,WAAW,CAAC,KAAK,CAAC;IAErD,SAAkB,WAAW,oCACO;IAEpC,SAAkB,UAAU,UAAS;IAE5B,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe;CAM9C"}
@@ -1,6 +1,6 @@
1
1
  import { Incantation } from "../incantation.js";
2
2
  export class AnimIncantation extends Incantation {
3
- description = "Animates the slider of a block.";
3
+ description = "Animate the slider of a block.";
4
4
  identifier = "anim";
5
5
  apply(target) {
6
6
  super.require_expr_type(target.type, "expression");
@@ -1 +1 @@
1
- {"version":3,"file":"anim.js","sourceRoot":"","sources":["../../../src/magic/local/anim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AAGzD,MAAM,OAAO,eAAgB,SAAQ,WAAkB;IAEnC,WAAW,GACzB,iCAAiC,CAAA;IAEnB,UAAU,GAAG,MAAM,CAAA;IAE5B,KAAK,CAAC,MAA8B;QAE3C,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAEnD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;CACF"}
1
+ {"version":3,"file":"anim.js","sourceRoot":"","sources":["../../../src/magic/local/anim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AAGzD,MAAM,OAAO,eAAgB,SAAQ,WAAkB;IAEnC,WAAW,GACzB,gCAAgC,CAAA;IAElB,UAAU,GAAG,MAAM,CAAA;IAE5B,KAAK,CAAC,MAA8B;QAE3C,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAEnD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;CACF"}
@@ -12,7 +12,7 @@ export class ColourIncantation extends ArgIncantation {
12
12
  target.color = data;
13
13
  }
14
14
  evaluate_arg(data) {
15
- switch (data.trim()) {
15
+ switch (data.trim().toUpperCase()) {
16
16
  case "RED": return DesmosColour.RED;
17
17
  case "BLUE": return DesmosColour.BLUE;
18
18
  case "GREEN": return DesmosColour.GREEN;
@@ -1 +1 @@
1
- {"version":3,"file":"colour.js","sourceRoot":"","sources":["../../../src/magic/local/colour.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,OAAO,iBAAkB,SAAQ,cAAqB;IAExC,WAAW,GACzB,EAAE,CAAA;IAEY,UAAU,GAAK,OAAO,CAAA;IACtB,KAAK,GAAU,QAAQ,CAAA;IACvB,YAAY,GAAG,IAAI,CAAA;IACnB,QAAQ,GAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAA;IAEhD,KAAK,CAAC,MAA8B,EAAE,IAAkB;QAE/D,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IAEQ,YAAY,CAAC,IAAY;QAEhC,QAAQ,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACpB,KAAK,KAAK,CAAC,CAAI,OAAO,YAAY,CAAC,GAAG,CAAC;YACvC,KAAK,MAAM,CAAC,CAAG,OAAO,YAAY,CAAC,IAAI,CAAC;YACxC,KAAK,OAAO,CAAC,CAAE,OAAO,YAAY,CAAC,KAAK,CAAC;YACzC,KAAK,QAAQ,CAAC,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC;YAC1C,KAAK,QAAQ,CAAC,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC;YAC1C,KAAK,OAAO,CAAC,CAAE,OAAO,YAAY,CAAC,KAAK,CAAC;YACzC;gBACE,MAAM,IAAI,kBAAkB,CAC1B,qBAAqB,IAAI,IAAI,CAC9B,CAAC;QACN,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"colour.js","sourceRoot":"","sources":["../../../src/magic/local/colour.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,OAAO,iBAAkB,SAAQ,cAAqB;IAExC,WAAW,GACzB,EAAE,CAAA;IAEY,UAAU,GAAK,OAAO,CAAA;IACtB,KAAK,GAAU,QAAQ,CAAA;IACvB,YAAY,GAAG,IAAI,CAAA;IACnB,QAAQ,GAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAA;IAEhD,KAAK,CAAC,MAA8B,EAAE,IAAkB;QAE/D,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IAEQ,YAAY,CAAC,IAAY;QAEhC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YAClC,KAAK,KAAK,CAAC,CAAI,OAAO,YAAY,CAAC,GAAG,CAAC;YACvC,KAAK,MAAM,CAAC,CAAG,OAAO,YAAY,CAAC,IAAI,CAAC;YACxC,KAAK,OAAO,CAAC,CAAE,OAAO,YAAY,CAAC,KAAK,CAAC;YACzC,KAAK,QAAQ,CAAC,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC;YAC1C,KAAK,QAAQ,CAAC,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC;YAC1C,KAAK,OAAO,CAAC,CAAE,OAAO,YAAY,CAAC,KAAK,CAAC;YACzC;gBACE,MAAM,IAAI,kBAAkB,CAC1B,qBAAqB,IAAI,IAAI,CAC9B,CAAC;QACN,CAAC;IACH,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/magic/local/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAczD,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,KAAK,CAAC,EAYlD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/magic/local/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAezD,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,KAAK,CAAC,EAalD,CAAC"}
@@ -4,6 +4,7 @@ import { ColourIncantation } from "./colour.js";
4
4
  import { DashedIncantation } from "./dashed.js";
5
5
  import { FillIncantation } from "./fill.js";
6
6
  import { HideIncantation } from "./hide.js";
7
+ import { LabelIncantation } from "./label.js";
7
8
  import { LineIncantation } from "./line.js";
8
9
  import { NoLineIncantation } from "./no-line.js";
9
10
  import { PointIncantation } from "./point.js";
@@ -15,6 +16,7 @@ export const LOCAL_INCANTATIONS = [
15
16
  new DashedIncantation(),
16
17
  new FillIncantation(),
17
18
  new HideIncantation(),
19
+ new LabelIncantation(),
18
20
  new LineIncantation(),
19
21
  new NoLineIncantation(),
20
22
  new PointIncantation(),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/magic/local/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C,MAAM,CAAC,MAAM,kBAAkB,GAC/B;IACE,IAAI,eAAe,EAAE;IACrB,IAAI,iBAAiB,EAAE;IACvB,IAAI,iBAAiB,EAAE;IACvB,IAAI,eAAe,EAAE;IACrB,IAAI,eAAe,EAAE;IACrB,IAAI,eAAe,EAAE;IACrB,IAAI,iBAAiB,EAAE;IACvB,IAAI,gBAAgB,EAAE;IACtB,IAAI,iBAAiB,EAAE;IACvB,IAAI,iBAAiB,EAAE;CACxB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/magic/local/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAI,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAI,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAG,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAI,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAG,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C,MAAM,CAAC,MAAM,kBAAkB,GAC/B;IACE,IAAI,eAAe,EAAE;IACrB,IAAI,iBAAiB,EAAE;IACvB,IAAI,iBAAiB,EAAE;IACvB,IAAI,eAAe,EAAE;IACrB,IAAI,eAAe,EAAE;IACrB,IAAI,gBAAgB,EAAE;IACtB,IAAI,eAAe,EAAE;IACrB,IAAI,iBAAiB,EAAE;IACvB,IAAI,gBAAgB,EAAE;IACtB,IAAI,iBAAiB,EAAE;IACvB,IAAI,iBAAiB,EAAE;CACxB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { Incantation, ArgIncantation, type LOCAL } from "../incantation.js";
2
+ interface LabelOptions {
3
+ text: string;
4
+ show?: boolean;
5
+ size?: number | keyof typeof Desmos.LabelSizes;
6
+ pos?: keyof typeof Desmos.LabelOrientations;
7
+ }
8
+ export declare class LabelIncantation extends ArgIncantation<LOCAL> {
9
+ readonly description = "Label a block that evaluates to a point(s).";
10
+ readonly identifier = "label";
11
+ readonly requires_arg = true;
12
+ readonly arg_type = Incantation.ArgType.OBJECT;
13
+ apply(target: Desmos.ExpressionState, data: LabelOptions): void;
14
+ evaluate_arg(raw: string): LabelOptions;
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../src/magic/local/label.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGzE,UAAU,YAAY;IAEpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,OAAO,MAAM,CAAC,UAAU,CAAC;IAC/C,GAAG,CAAC,EAAE,MAAM,OAAO,MAAM,CAAC,iBAAiB,CAAC;CAC7C;AAGD,qBAAa,gBAAiB,SAAQ,cAAc,CAAC,KAAK,CAAC;IAEzD,SAAkB,WAAW,iDACoB;IAEjD,SAAkB,UAAU,WAAY;IACxC,SAAkB,YAAY,QAAO;IACrC,SAAkB,QAAQ,8BAAiC;IAElD,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,IAAI,EAAE,YAAY;IAUxD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY;CA8BjD"}
@@ -0,0 +1,39 @@
1
+ import { UnrecoverableError } from "../../errors.js";
2
+ import { Incantation, ArgIncantation } from "../incantation.js";
3
+ export class LabelIncantation extends ArgIncantation {
4
+ description = "Label a block that evaluates to a point(s).";
5
+ identifier = "label";
6
+ requires_arg = true;
7
+ arg_type = Incantation.ArgType.OBJECT;
8
+ apply(target, data) {
9
+ super.require_expr_type(target.type, "expression");
10
+ target.label = data.text;
11
+ if (data.show != undefined)
12
+ target.showLabel = data.show;
13
+ if (data.size != undefined)
14
+ target.labelSize = data.size;
15
+ if (data.pos != undefined)
16
+ target.labelOrientation = data.pos;
17
+ }
18
+ evaluate_arg(raw) {
19
+ let out = super.evaluate_arg(raw);
20
+ if (!("text" in out)) {
21
+ throw new UnrecoverableError.InvalidArgument(`/label requires a \`text\` argument, such as: \`/label{ text: "sup world!" }\``);
22
+ }
23
+ if (typeof out.pos != "undefined") {
24
+ let pos = out.pos.trim().toUpperCase();
25
+ switch (pos) {
26
+ case "ABOVE":
27
+ case "BELOW":
28
+ case "LEFT":
29
+ case "RIGHT":
30
+ out.pos = pos;
31
+ break;
32
+ default:
33
+ throw new UnrecoverableError.InvalidArgument(`/label: Invalid label position: ${pos}`);
34
+ }
35
+ }
36
+ return out;
37
+ }
38
+ }
39
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.js","sourceRoot":"","sources":["../../../src/magic/local/label.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAYzE,MAAM,OAAO,gBAAiB,SAAQ,cAAqB;IAEvC,WAAW,GACzB,6CAA6C,CAAA;IAE/B,UAAU,GAAK,OAAO,CAAA;IACtB,YAAY,GAAG,IAAI,CAAA;IACnB,QAAQ,GAAO,WAAW,CAAC,OAAO,CAAC,MAAM,CAAA;IAElD,KAAK,CAAC,MAA8B,EAAE,IAAkB;QAE/D,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,IAAI,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QAEzD,IAAI,IAAI,CAAC,IAAI,IAAI,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QACzD,IAAI,IAAI,CAAC,GAAG,IAAK,SAAS;YAAE,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC;IACjE,CAAC;IAEQ,YAAY,CAAC,GAAW;QAE/B,IAAI,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAiB,CAAC;QAElD,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,kBAAkB,CAAC,eAAe,CAC1C,gFAAgF,CACjF,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC;YAClC,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAEvC,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,OAAO,CAAC;gBACb,KAAK,OAAO,CAAC;gBACb,KAAK,MAAM,CAAC;gBACZ,KAAK,OAAO;oBACV,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;oBACd,MAAM;gBAER;oBACE,MAAM,IAAI,kBAAkB,CAAC,eAAe,CAC1C,mCAAmC,GAAG,EAAE,CACzC,CAAC;YACN,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
@@ -1,11 +1,12 @@
1
1
  import { GenericParser } from "./generic-parser.js";
2
2
  import { Ast } from "./ast.js";
3
+ import type { DesmostOptions } from "../compiler/index.js";
3
4
  import type { RecoverableFail, Unrecoverable, MaybeRecoverable } from "../errors.js";
4
5
  import { Incantation } from "../magic/index.js";
5
6
  import type { GLOBAL, LOCAL } from "../magic/index.js";
6
- import type { DesmostOptions } from "../compiler/index.js";
7
7
  export declare class DesmostParser extends GenericParser {
8
- constructor(source: string, options?: DesmostOptions);
8
+ protected options?: DesmostOptions | undefined;
9
+ constructor(source: string, options?: DesmostOptions | undefined);
9
10
  parse_next(): Ast | null;
10
11
  parse_pre_sep(): Unrecoverable<{
11
12
  global: Ast.IncantationInvocation<GLOBAL> | Ast.InvalidInvocation;
@@ -1 +1 @@
1
- {"version":3,"file":"desmost-parser.d.ts","sourceRoot":"","sources":["../../src/parser/desmost-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG5B,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElF,OAAO,EACL,WAAW,EAEZ,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAQ,MAAM,UAAU,CAAC;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD,qBAAa,aAAc,SAAQ,aAAa;gBAElC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc;IAW7C,UAAU,IAAI,GAAG,GAAG,IAAI;IA4C/B,aAAa,IACX,aAAa,CACT;QAAE,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,GACjC,GAAG,CAAC,iBAAiB,CAAC;KACjC,GACC;QAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAC/B,GAAG,CAAC,iBAAiB,CAAC,CAAC;KACxC,CACF;IA4BH,SAAS,IAAI,aAAa,CAAC,IAAI,CAAC;IAehC,cAAc,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;IAkC/C,gBAAgB,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;IAmBjD,4BAA4B,IACxB,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,GACjC,GAAG,CAAC,iBAAiB,GACrB,eAAe;IA0CnB,2BAA2B,IACvB,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAChC,GAAG,CAAC,iBAAiB,GACrB,eAAe;IAuCnB,0BAA0B,IAAI,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;IA4B9D,oBAAoB,CAAC,MAAM,SAAS,WAAW,CAAC,MAAM,EACpD,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,GAClC,WAAW,CAAC,MAAM,CAAC,GAAG,eAAe;IAuDxC,qBAAqB,CASnB,QAAQ,EAAE,WAAW,CAAC,OAAO,GAC5B,aAAa,CAAC,MAAM,CAAC;CAgGzB"}
1
+ {"version":3,"file":"desmost-parser.d.ts","sourceRoot":"","sources":["../../src/parser/desmost-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAGlF,OAAO,EACL,WAAW,EAEZ,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAQ,MAAM,UAAU,CAAC;AAMpD,qBAAa,aAAc,SAAQ,aAAa;IAElB,SAAS,CAAC,OAAO,CAAC,EAAE,cAAc;gBAAlD,MAAM,EAAE,MAAM,EAAY,OAAO,CAAC,EAAE,cAAc,YAAA;IAWvD,UAAU,IAAI,GAAG,GAAG,IAAI;IA4C/B,aAAa,IACX,aAAa,CACT;QAAE,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,GACjC,GAAG,CAAC,iBAAiB,CAAC;KACjC,GACC;QAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAC/B,GAAG,CAAC,iBAAiB,CAAC,CAAC;KACxC,CACF;IA4BH,SAAS,IAAI,aAAa,CAAC,IAAI,CAAC;IAehC,cAAc,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;IAkC/C,gBAAgB,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;IAmBjD,4BAA4B,IACxB,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,GACjC,GAAG,CAAC,iBAAiB,GACrB,eAAe;IA0CnB,2BAA2B,IACvB,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAChC,GAAG,CAAC,iBAAiB,GACrB,eAAe;IAuCnB,0BAA0B,IAAI,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;IA4B9D,oBAAoB,CAAC,MAAM,SAAS,WAAW,CAAC,MAAM,EACpD,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,GAClC,WAAW,CAAC,MAAM,CAAC,GAAG,eAAe;IAuExC,qBAAqB,CASnB,QAAQ,EAAE,WAAW,CAAC,OAAO,GAC5B,aAAa,CAAC,MAAM,CAAC;CAyFzB"}
@@ -1,10 +1,13 @@
1
1
  import { GenericParser } from "./generic-parser.js";
2
2
  import { Ast } from "./ast.js";
3
3
  import { FAIL, UnrecoverableError } from "../errors.js";
4
+ import * as utils from "../utils.js";
4
5
  import { Incantation, ArgIncantation, GLOBAL_INCANTATIONS, LOCAL_INCANTATIONS, EXPR_INCANTATIONS } from "../magic/index.js";
5
6
  export class DesmostParser extends GenericParser {
7
+ options;
6
8
  constructor(source, options) {
7
- super(options?.ignore_trailing_blanks ? source : (source + "\n"));
9
+ super(source + "\n");
10
+ this.options = options;
8
11
  }
9
12
  parse_next() {
10
13
  this.consume_spaces();
@@ -174,87 +177,136 @@ export class DesmostParser extends GenericParser {
174
177
  parse_incantation_arg(arg_type) {
175
178
  let init = this.i;
176
179
  this.consume("{", `Expected \`{\` to start incantation argument, but found: \`${this.preview()}\``);
177
- let Ctx;
178
- (function (Ctx) {
179
- Ctx["BLOCK"] = "{";
180
- Ctx["STR_1"] = "'";
181
- Ctx["STR_2"] = "\"";
182
- Ctx["STR_F"] = "`";
183
- Ctx["ESCAPE"] = "\\";
184
- })(Ctx || (Ctx = {}));
185
- let stack = [Ctx.BLOCK];
186
- function try_pop(ctx, options) {
187
- if (stack.at(-1) === ctx) {
188
- stack.pop();
189
- return true;
190
- }
191
- else if (options?.force) {
192
- if (stack.includes(ctx)) {
193
- while (stack.at(-1) !== ctx) {
194
- stack.pop();
195
- }
196
- return true;
197
- }
198
- }
199
- return false;
200
- }
180
+ let stack = new ContextStack();
181
+ let indices_to_insert_quotes = [];
201
182
  while (stack.length > 0) {
202
- if (try_pop(Ctx.ESCAPE)) {
203
- this.advance(`Unexpected end of input while parsing incantation argument, stack: ${JSON.stringify(stack)}`);
183
+ if (stack.try_pop(Ctx.ESCAPE)) {
184
+ this.advance(`Unexpected end of input while parsing incantation argument, stack: ${stack.debug()}`);
204
185
  }
205
- let top = stack.at(-1);
186
+ let top = stack.top;
206
187
  switch (this.current) {
207
- case Ctx.ESCAPE:
188
+ case Char.BACKSLASH:
208
189
  stack.push(Ctx.ESCAPE);
209
190
  break;
210
- case Char.L_BRACE:
211
- if (top !== Ctx.BLOCK)
212
- break;
213
- stack.push(Ctx.BLOCK);
191
+ case "{":
192
+ stack.push(Ctx.BLOCK, { unless: [Ctx.STR_1, Ctx.STR_2, Ctx.STR_F] });
214
193
  break;
215
- case Char.R_BRACE:
216
- if (top !== Ctx.BLOCK)
217
- break;
218
- try_pop(Ctx.BLOCK, { force: true });
194
+ case "}":
195
+ stack.force_pop(Ctx.BLOCK, { unless: [Ctx.STR_1, Ctx.STR_2, Ctx.STR_F] });
219
196
  break;
220
197
  }
221
198
  if (arg_type === Incantation.ArgType.OBJECT) {
199
+ if (top === Ctx.VALUE && this.current?.match(/[a-zA-Z]/)) {
200
+ stack.push(Ctx.ENUM);
201
+ indices_to_insert_quotes.push(this.i);
202
+ }
203
+ else if (top === Ctx.ENUM && this.current?.match(/[^a-zA-Z]/)) {
204
+ stack.pop();
205
+ indices_to_insert_quotes.push(this.i);
206
+ if (indices_to_insert_quotes.length % 2 != 0) {
207
+ console.error(`Desmost [INTERNAL]: Logic error in \`parse_incantation_arg()\`: Mismatched inserted quotes`);
208
+ }
209
+ }
222
210
  switch (this.current) {
223
- case Ctx.STR_1:
224
- if (top === Ctx.STR_2)
225
- break;
226
- if (top === Ctx.STR_F)
227
- break;
228
- try_pop(Ctx.STR_1) || stack.push(Ctx.STR_1);
211
+ case ":":
212
+ stack.push(Ctx.VALUE, { when: [Ctx.BLOCK] });
213
+ break;
214
+ case ",":
215
+ stack.try_pop(Ctx.VALUE);
216
+ break;
217
+ case Char.QUOTE_1:
218
+ stack.pop_or_push(Ctx.STR_1, { unless: [Ctx.STR_2, Ctx.STR_F] });
219
+ stack.try_pop(Ctx.VALUE);
229
220
  break;
230
- case Ctx.STR_2:
231
- if (top === Ctx.STR_1)
232
- break;
233
- if (top === Ctx.STR_F)
234
- break;
235
- try_pop(Ctx.STR_2) || stack.push(Ctx.STR_2);
221
+ case Char.QUOTE_2:
222
+ stack.pop_or_push(Ctx.STR_2, { unless: [Ctx.STR_1, Ctx.STR_F] });
223
+ stack.try_pop(Ctx.VALUE);
236
224
  break;
237
- case Ctx.STR_F:
238
- if (top === Ctx.STR_1)
239
- break;
240
- if (top === Ctx.STR_2)
241
- break;
242
- try_pop(Ctx.STR_F) || stack.push(Ctx.STR_F);
225
+ case Char.BACKTICK:
226
+ stack.pop_or_push(Ctx.STR_F, { unless: [Ctx.STR_1, Ctx.STR_2] });
227
+ stack.try_pop(Ctx.VALUE);
243
228
  break;
244
229
  }
245
230
  }
246
231
  this.advance(`Unexpected end of input while parsing incantation argument, stack: ${JSON.stringify(stack)}`);
247
232
  }
248
- return this.source.slice(init + 1, this.i - 1).trim();
233
+ let out = utils.chars(this.source, init + 1, this.i - 1);
234
+ for (let [i, j] of utils.reversing(utils.paired(indices_to_insert_quotes))) {
235
+ i -= init + 1;
236
+ j -= init + 1;
237
+ let value = out.slice(i, j).join("");
238
+ if (["true", "false", "null", "undefined"].includes(value))
239
+ continue;
240
+ out.splice(j, 0, `"`);
241
+ out.splice(i, 0, `"`);
242
+ }
243
+ return out.join("").trim();
244
+ }
245
+ }
246
+ class ContextStack {
247
+ #data = [Ctx.BLOCK];
248
+ get length() {
249
+ return this.#data.length;
250
+ }
251
+ get top() {
252
+ return this.#data.at(-1);
253
+ }
254
+ push(ctx, options) {
255
+ if (this.#should_skip(options))
256
+ return false;
257
+ this.#data.push(ctx);
258
+ return true;
259
+ }
260
+ pop() {
261
+ this.#data.pop();
262
+ }
263
+ try_pop(ctx) {
264
+ if (this.top === ctx) {
265
+ this.#data.pop();
266
+ return true;
267
+ }
268
+ else {
269
+ return false;
270
+ }
271
+ }
272
+ force_pop(ctx, options) {
273
+ if (this.#should_skip(options))
274
+ return false;
275
+ let idx = this.#data.lastIndexOf(ctx);
276
+ if (idx === -1)
277
+ return false;
278
+ this.#data.splice(idx);
279
+ return true;
280
+ }
281
+ pop_or_push(ctx, options) {
282
+ if (this.#should_skip(options))
283
+ return false;
284
+ this.try_pop(ctx) || this.push(ctx);
285
+ return true;
286
+ }
287
+ debug() {
288
+ return JSON.stringify(this.#data);
289
+ }
290
+ #should_skip(options) {
291
+ return Boolean(options?.when != undefined && !options?.when?.includes(this.top)
292
+ || options?.unless?.includes(this.top));
249
293
  }
250
294
  }
251
295
  var Char;
252
296
  (function (Char) {
253
- Char["L_BRACE"] = "{";
254
- Char["R_BRACE"] = "}";
255
- Char["QUOTE_SINGLE"] = "'";
256
- Char["QUOTE_DOUBLE"] = "\"";
257
- Char["BACKTICK"] = "`";
258
297
  Char["BACKSLASH"] = "\\";
298
+ Char["QUOTE_1"] = "'";
299
+ Char["QUOTE_2"] = "\"";
300
+ Char["BACKTICK"] = "`";
259
301
  })(Char || (Char = {}));
302
+ var Ctx;
303
+ (function (Ctx) {
304
+ Ctx["BLOCK"] = "{";
305
+ Ctx["VALUE"] = ":";
306
+ Ctx["ENUM"] = "<enum literal>";
307
+ Ctx["STR_1"] = "'";
308
+ Ctx["STR_2"] = "\"";
309
+ Ctx["STR_F"] = "`";
310
+ Ctx["ESCAPE"] = "\\";
311
+ })(Ctx || (Ctx = {}));
260
312
  //# sourceMappingURL=desmost-parser.js.map