desmost 0.10.0 → 0.11.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 (167) hide show
  1. package/README.md +6 -6
  2. package/dist/compiler/compile.d.ts +1 -1
  3. package/dist/compiler/compile.js +1 -1
  4. package/dist/compiler/compiler.d.ts.map +1 -1
  5. package/dist/compiler/compiler.js +9 -8
  6. package/dist/compiler/compiler.js.map +1 -1
  7. package/dist/compiler/format.js +1 -1
  8. package/dist/compiler/format.js.map +1 -1
  9. package/dist/decompiler/decompile.d.ts +13 -5
  10. package/dist/decompiler/decompile.d.ts.map +1 -1
  11. package/dist/decompiler/decompile.js +24 -13
  12. package/dist/decompiler/decompile.js.map +1 -1
  13. package/dist/decompiler/emit.d.ts +5 -2
  14. package/dist/decompiler/emit.d.ts.map +1 -1
  15. package/dist/decompiler/emit.js +41 -20
  16. package/dist/decompiler/emit.js.map +1 -1
  17. package/dist/decompiler/extract.d.ts +1 -9
  18. package/dist/decompiler/extract.d.ts.map +1 -1
  19. package/dist/decompiler/extract.js +24 -58
  20. package/dist/decompiler/extract.js.map +1 -1
  21. package/dist/decompiler/format.d.ts +0 -1
  22. package/dist/decompiler/format.d.ts.map +1 -1
  23. package/dist/decompiler/format.js +3 -9
  24. package/dist/decompiler/format.js.map +1 -1
  25. package/dist/errors.d.ts +14 -7
  26. package/dist/errors.d.ts.map +1 -1
  27. package/dist/errors.js +20 -2
  28. package/dist/errors.js.map +1 -1
  29. package/dist/magic/expr/index.js +6 -6
  30. package/dist/magic/expr/index.js.map +1 -1
  31. package/dist/magic/expr/latex.d.ts +5 -2
  32. package/dist/magic/expr/latex.d.ts.map +1 -1
  33. package/dist/magic/expr/latex.js +4 -2
  34. package/dist/magic/expr/latex.js.map +1 -1
  35. package/dist/magic/expr/text.d.ts +5 -2
  36. package/dist/magic/expr/text.d.ts.map +1 -1
  37. package/dist/magic/expr/text.js +4 -2
  38. package/dist/magic/expr/text.js.map +1 -1
  39. package/dist/magic/global/{dark-mode.d.ts → dark.d.ts} +6 -2
  40. package/dist/magic/global/dark.d.ts.map +1 -0
  41. package/dist/magic/global/dark.js +20 -0
  42. package/dist/magic/global/dark.js.map +1 -0
  43. package/dist/magic/global/desmos.d.ts +4 -1
  44. package/dist/magic/global/desmos.d.ts.map +1 -1
  45. package/dist/magic/global/desmos.js +23 -0
  46. package/dist/magic/global/desmos.js.map +1 -1
  47. package/dist/magic/global/index.d.ts +5 -5
  48. package/dist/magic/global/index.d.ts.map +1 -1
  49. package/dist/magic/global/index.js +8 -11
  50. package/dist/magic/global/index.js.map +1 -1
  51. package/dist/magic/global/viewport.d.ts +3 -0
  52. package/dist/magic/global/viewport.d.ts.map +1 -1
  53. package/dist/magic/global/viewport.js +20 -0
  54. package/dist/magic/global/viewport.js.map +1 -1
  55. package/dist/magic/incantation.d.ts +15 -2
  56. package/dist/magic/incantation.d.ts.map +1 -1
  57. package/dist/magic/incantation.js +8 -1
  58. package/dist/magic/incantation.js.map +1 -1
  59. package/dist/magic/local/anim.d.ts +5 -1
  60. package/dist/magic/local/anim.d.ts.map +1 -1
  61. package/dist/magic/local/anim.js +12 -1
  62. package/dist/magic/local/anim.js.map +1 -1
  63. package/dist/magic/local/colour.d.ts +7 -3
  64. package/dist/magic/local/colour.d.ts.map +1 -1
  65. package/dist/magic/local/colour.js +13 -3
  66. package/dist/magic/local/colour.js.map +1 -1
  67. package/dist/magic/local/dashed.d.ts +5 -1
  68. package/dist/magic/local/dashed.d.ts.map +1 -1
  69. package/dist/magic/local/dashed.js +12 -1
  70. package/dist/magic/local/dashed.js.map +1 -1
  71. package/dist/magic/local/fill.d.ts +5 -1
  72. package/dist/magic/local/fill.d.ts.map +1 -1
  73. package/dist/magic/local/fill.js +15 -1
  74. package/dist/magic/local/fill.js.map +1 -1
  75. package/dist/magic/local/hide.d.ts +5 -1
  76. package/dist/magic/local/hide.d.ts.map +1 -1
  77. package/dist/magic/local/hide.js +12 -1
  78. package/dist/magic/local/hide.js.map +1 -1
  79. package/dist/magic/local/index.d.ts +13 -2
  80. package/dist/magic/local/index.d.ts.map +1 -1
  81. package/dist/magic/local/index.js +24 -24
  82. package/dist/magic/local/index.js.map +1 -1
  83. package/dist/magic/local/label.d.ts +6 -2
  84. package/dist/magic/local/label.d.ts.map +1 -1
  85. package/dist/magic/local/label.js +19 -1
  86. package/dist/magic/local/label.js.map +1 -1
  87. package/dist/magic/local/line.d.ts +5 -1
  88. package/dist/magic/local/line.d.ts.map +1 -1
  89. package/dist/magic/local/line.js +19 -1
  90. package/dist/magic/local/line.js.map +1 -1
  91. package/dist/magic/local/no-line.d.ts +5 -1
  92. package/dist/magic/local/no-line.d.ts.map +1 -1
  93. package/dist/magic/local/no-line.js +12 -1
  94. package/dist/magic/local/no-line.js.map +1 -1
  95. package/dist/magic/local/point.d.ts +5 -1
  96. package/dist/magic/local/point.d.ts.map +1 -1
  97. package/dist/magic/local/point.js +19 -1
  98. package/dist/magic/local/point.js.map +1 -1
  99. package/dist/magic/local/secret.d.ts +5 -1
  100. package/dist/magic/local/secret.d.ts.map +1 -1
  101. package/dist/magic/local/secret.js +12 -1
  102. package/dist/magic/local/secret.js.map +1 -1
  103. package/dist/magic/local/slider.d.ts +5 -1
  104. package/dist/magic/local/slider.d.ts.map +1 -1
  105. package/dist/magic/local/slider.js +13 -1
  106. package/dist/magic/local/slider.js.map +1 -1
  107. package/dist/parser/ast.d.ts +9 -3
  108. package/dist/parser/ast.d.ts.map +1 -1
  109. package/dist/parser/ast.js +3 -1
  110. package/dist/parser/ast.js.map +1 -1
  111. package/dist/parser/desmost-parser.d.ts +2 -2
  112. package/dist/parser/desmost-parser.d.ts.map +1 -1
  113. package/dist/parser/desmost-parser.js +21 -19
  114. package/dist/parser/desmost-parser.js.map +1 -1
  115. package/dist/parser/errors.d.ts +11 -0
  116. package/dist/parser/errors.d.ts.map +1 -0
  117. package/dist/parser/errors.js +4 -0
  118. package/dist/parser/errors.js.map +1 -0
  119. package/dist/parser/generic-parser.d.ts +13 -11
  120. package/dist/parser/generic-parser.d.ts.map +1 -1
  121. package/dist/parser/generic-parser.js +21 -24
  122. package/dist/parser/generic-parser.js.map +1 -1
  123. package/dist/utils.js +1 -1
  124. package/dist/utils.js.map +1 -1
  125. package/package.json +1 -1
  126. package/src/compiler/compile.ts +1 -1
  127. package/src/compiler/compiler.ts +10 -9
  128. package/src/compiler/format.ts +1 -1
  129. package/src/decompiler/decompile.ts +30 -14
  130. package/src/decompiler/emit.ts +57 -25
  131. package/src/decompiler/extract.ts +30 -89
  132. package/src/decompiler/format.ts +3 -14
  133. package/src/decompiler/readme.md +2 -2
  134. package/src/errors.ts +13 -7
  135. package/src/magic/.template.ts +8 -0
  136. package/src/magic/expr/index.ts +6 -7
  137. package/src/magic/expr/latex.ts +8 -4
  138. package/src/magic/expr/text.ts +8 -4
  139. package/src/magic/global/dark.ts +29 -0
  140. package/src/magic/global/desmos.ts +35 -5
  141. package/src/magic/global/index.ts +8 -14
  142. package/src/magic/global/viewport.ts +29 -0
  143. package/src/magic/incantation.ts +28 -6
  144. package/src/magic/local/anim.ts +16 -3
  145. package/src/magic/local/colour.ts +18 -6
  146. package/src/magic/local/dashed.ts +16 -2
  147. package/src/magic/local/fill.ts +20 -3
  148. package/src/magic/local/hide.ts +16 -2
  149. package/src/magic/local/index.ts +24 -25
  150. package/src/magic/local/label.ts +31 -8
  151. package/src/magic/local/line.ts +25 -3
  152. package/src/magic/local/no-line.ts +16 -2
  153. package/src/magic/local/point.ts +27 -3
  154. package/src/magic/local/secret.ts +16 -2
  155. package/src/magic/local/slider.ts +18 -3
  156. package/src/parser/ast.ts +10 -7
  157. package/src/parser/desmost-parser.ts +25 -21
  158. package/src/parser/errors.ts +10 -0
  159. package/src/parser/generic-parser.ts +23 -25
  160. package/src/utils.ts +1 -1
  161. package/svelte/desmost.svelte +107 -107
  162. package/dist/magic/expr/index.d.ts +0 -3
  163. package/dist/magic/expr/index.d.ts.map +0 -1
  164. package/dist/magic/global/dark-mode.d.ts.map +0 -1
  165. package/dist/magic/global/dark-mode.js +0 -9
  166. package/dist/magic/global/dark-mode.js.map +0 -1
  167. package/src/magic/global/dark-mode.ts +0 -15
package/README.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  [**Docs**](https://github.com/Sup2point0/desmost/tree/main/docs)  ·  [**Changelog**](https://github.com/Sup2point0/desmost/blob/main/CHANGELOG.md)  ·  [**Learn**](https://github.com/Sup2point0/desmost/blob/main/docs/writing/learn-x-in-y.md)  ·  [**Playground**](https://sup2point0.github.io/desmost)
4
4
 
5
+ <a href="https://brainmade.org">
6
+ <img align="right" height="40" src=".github/brainmade-black.svg" />
7
+ </a>
8
+
5
9
  A tiny DSL for compiling LaTeX to Desmos.
6
10
 
7
11
 
@@ -9,6 +13,7 @@ A tiny DSL for compiling LaTeX to Desmos.
9
13
 
10
14
 
11
15
  <table>
16
+ <tr></tr>
12
17
  <tr>
13
18
  <th> You write this: </th>
14
19
  <th> and Desmost gives you this: </th>
@@ -35,7 +40,7 @@ f(x) = A \sin(x-t)
35
40
  <a href="https://sup2point0.github.io/desmost">
36
41
  <img
37
42
  width="600"
38
- src=".assets/demo.png"
43
+ src=".github/demo.png"
39
44
  alt="“Desmos(t) is awesome!”, but in a fully-fledged Desmos graphing calculator embed"
40
45
  />
41
46
  </a>
@@ -97,8 +102,3 @@ This will replace all ` ```desmos ` blocks from your Markdown source with Desmos
97
102
 
98
103
 
99
104
  <br>
100
-
101
-
102
- <a href="https://brainmade.org">
103
- <img height="40" src=".assets/brainmade-black.svg" />
104
- </a>
@@ -25,7 +25,7 @@ source: string,
25
25
  /**
26
26
  * Compilation options.
27
27
  *
28
- * See {@linkcode DesmostOptions} for the options available.
28
+ * See {@linkcode DesmostOptions} for available options.
29
29
  */
30
30
  options?: Partial<DesmostOptions>): void | DesmostDebug;
31
31
  //# sourceMappingURL=compile.d.ts.map
@@ -25,7 +25,7 @@ source,
25
25
  /**
26
26
  * Compilation options.
27
27
  *
28
- * See {@linkcode DesmostOptions} for the options available.
28
+ * See {@linkcode DesmostOptions} for available options.
29
29
  */
30
30
  options) {
31
31
  if (desmos == undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAiB,GAAG,EAAE,MAAM,WAAW,CAAC;AAI/C,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAE5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,GAAG,EAAE,CAAC;CACX;AAGD,qBAAa,eAAe;IAE3B,OAAO,CAAC,MAAM,CAAmB;IAEjC,kCAAkC;IAClC,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO,CAAC,OAAO,CAAgB;IAE/B,OAAO,CAAC,MAAM,CAAe;IAE7B,8CAA8C;IAC9C,OAAO,CAAC,MAAM,CAAqB;IAEnC;;;;OAIG;IACH,OAAO,CAAC,cAAc,CAAQ;IAE9B;;;;OAIG;IACH,OAAO,CAAC,cAAc,CAAY;IAElC,OAAO,CAAC,KAAK,CAA4B;IAGzC,8DAA8D;gBAE7D,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc;IAUxB;;OAEG;IACI,OAAO,IAAI,IAAI,GAAG,YAAY;IAuDrC;;OAEG;IACH,YAAY,IAAI,QAAQ,CAAC,OAAO,CAAC;IAkBjC,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAoC/B;;OAEG;IACH,2BAA2B,CAAC,UAAU,EAAE,GAAG,CAAC,qBAAqB,GAAG,QAAQ,CAAC,IAAI,CAAC;IAgBlF;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC;IAsCnD;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC;IA0B5D,oBAAoB,IAAI,IAAI;CAM5B"}
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAiB,GAAG,EAAE,MAAM,WAAW,CAAC;AAI/C,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAE5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,GAAG,EAAE,CAAC;CACX;AAGD,qBAAa,eAAe;IAE3B,OAAO,CAAC,MAAM,CAAmB;IAEjC,kCAAkC;IAClC,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO,CAAC,OAAO,CAAgB;IAE/B,OAAO,CAAC,MAAM,CAAe;IAE7B,8CAA8C;IAC9C,OAAO,CAAC,MAAM,CAAqB;IAEnC;;;;OAIG;IACH,OAAO,CAAC,cAAc,CAAQ;IAE9B;;;;OAIG;IACH,OAAO,CAAC,cAAc,CAAY;IAElC,OAAO,CAAC,KAAK,CAA4B;IAGzC,8DAA8D;gBAE7D,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc;IAUxB;;OAEG;IACI,OAAO,IAAI,IAAI,GAAG,YAAY;IAuDrC;;OAEG;IACH,YAAY,IAAI,QAAQ,CAAC,OAAO,CAAC;IAkBjC,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAoC/B;;OAEG;IACH,2BAA2B,CAAC,UAAU,EAAE,GAAG,CAAC,qBAAqB,GAAG,QAAQ,CAAC,IAAI,CAAC;IAgBlF;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC;IAsCnD;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC;IA2B5D,oBAAoB,IAAI,IAAI;CAM5B"}
@@ -44,7 +44,7 @@ export class DesmostCompiler {
44
44
  }
45
45
  /* To aggregate errors at the start, we need a target to retroactively inject errors into */
46
46
  if (this.options.place_errors === "start") {
47
- this.desmos.setExpression({ id: "deferred", latex: " " }); // FIXME check if ` ` needed
47
+ this.desmos.setExpression({ id: "desmost-deferred", type: "text", text: "" });
48
48
  }
49
49
  /* The compiler is lazy, parsing and evaluating one block at a time (as opposed to first parsing the entire AST). We don't need the whole AST, so this saves memory. */
50
50
  /* NOTE: It also doesn't sacrifice performance, since `.setExpressions()` internally just calls `.setExpression()` in a loop anyway. Benchmarks in the frontend produce similar times for both, so there's no performance improvement. */
@@ -53,12 +53,12 @@ export class DesmostCompiler {
53
53
  while (!done) {
54
54
  done = this.compile_next();
55
55
  }
56
+ if (this.options.keep_trailing_blanks) {
57
+ this.flush_pending_blanks();
58
+ }
56
59
  }
57
60
  catch (e) {
58
- this.errors.push(e); // FIXME Should probably override as critical
59
- }
60
- if (this.options.keep_trailing_blanks) {
61
- this.flush_pending_blanks();
61
+ this.evaluate_error(e);
62
62
  }
63
63
  /* NOTE: No need to check `options.place_errors`!
64
64
 
@@ -68,13 +68,13 @@ export class DesmostCompiler {
68
68
  */
69
69
  if (this.errors.length > 0) {
70
70
  this.desmos.setExpression({
71
- id: "deferred",
71
+ id: "desmost-deferred",
72
72
  type: "text",
73
- text: this.errors.map(err => format_error(err, this.options)).join("\n\n"),
73
+ text: this.errors.map(err => format_error(err, this.options)).join(`\n\n`),
74
74
  });
75
75
  }
76
76
  else {
77
- this.desmos.removeExpression({ id: "deferred" });
77
+ this.desmos.removeExpression({ id: "desmost-deferred" });
78
78
  }
79
79
  if (this.options.debug) {
80
80
  this.debug.duration = performance.now() - this.debug.duration;
@@ -182,6 +182,7 @@ export class DesmostCompiler {
182
182
  evaluate_error(error) {
183
183
  switch (this.options.errors) {
184
184
  case "crash":
185
+ this.desmos.setBlank();
185
186
  throw error;
186
187
  case "suppress":
187
188
  console.error(format_error(error, this.options));
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"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"}
@@ -46,7 +46,7 @@ export function prettify_latex(latex) {
46
46
  latex = latex.replaceAll(/(?<!\\right)(\)|\]|\\\})/g, "\\right$1");
47
47
  latex = latex.replaceAll(/(?:\\right\s?)+/g, "\\right");
48
48
  latex = latex.replaceAll(/(:|,)(?!\\ ) */g, "$1\\ ");
49
- latex = latex.replaceAll(/(?<=[^\w]|^)\\?(length|mean|median|count|total|repeat|join|sort|shuffle|unique|mod|ceil|floor|round|sign) ?(?=\(|\\left\()/g, "\\operatorname{$1}");
49
+ latex = latex.replaceAll(/(?<=[^\w]|^)\\?(length|mean|median|min|max|count|total|repeat|join|sort|shuffle|unique|mod|ceil|floor|round|sign) ?(?=\(|\\left\()/g, "\\operatorname{$1}");
50
50
  latex = latex.replaceAll(/\s(and|or)\s/g, "\\operatorname{$1}");
51
51
  return latex;
52
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/compiler/format.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGhC,MAAM,UAAU,YAAY,CAC3B,CAAe,EACf,OAAuB;IAGvB,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,4CAA4C;IAC5C,IAAI,OAAO,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IAEvD,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,KAAK,IAAI,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAE5B,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;YACnC,OAAO,IAAI,IAAI,CAAC;YAChB,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;IACF,CAAC;IAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAK,SAAS;YAAE,OAAO,IAAI,KAAK,IAAI,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5E,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAK,SAAS;YAAE,OAAO,IAAI,KAAK,IAAI,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7E,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC;AAGD;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAE5C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC;AACd,CAAC;AAGD;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAE3C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,0BAA0B,EAAE,UAAU,CAAC,CAAC;IACjE,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IACtD,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,2BAA2B,EAAE,WAAW,CAAC,CAAC;IACnE,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IACxD,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAErD,KAAK,GAAG,KAAK,CAAC,UAAU,CACvB,6HAA6H,EAC7H,oBAAoB,CACpB,CAAC;IAEF,KAAK,GAAG,KAAK,CAAC,UAAU,CACvB,eAAe,EACf,oBAAoB,CACpB,CAAC;IAEF,OAAO,KAAK,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/compiler/format.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGhC,MAAM,UAAU,YAAY,CAC3B,CAAe,EACf,OAAuB;IAGvB,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,4CAA4C;IAC5C,IAAI,OAAO,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IAEvD,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,KAAK,IAAI,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAE5B,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;YACnC,OAAO,IAAI,IAAI,CAAC;YAChB,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;IACF,CAAC;IAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAK,SAAS;YAAE,OAAO,IAAI,KAAK,IAAI,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5E,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAK,SAAS;YAAE,OAAO,IAAI,KAAK,IAAI,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7E,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC;AAGD;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAE5C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC;AACd,CAAC;AAGD;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAE3C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,0BAA0B,EAAE,UAAU,CAAC,CAAC;IACjE,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IACtD,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,2BAA2B,EAAE,WAAW,CAAC,CAAC;IACnE,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IACxD,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAErD,KAAK,GAAG,KAAK,CAAC,UAAU,CACvB,qIAAqI,EACrI,oBAAoB,CACpB,CAAC;IAEF,KAAK,GAAG,KAAK,CAAC,UAAU,CACvB,eAAe,EACf,oBAAoB,CACpB,CAAC;IAEF,OAAO,KAAK,CAAC;AACd,CAAC"}
@@ -1,11 +1,13 @@
1
+ import { type DesmostOptions } from "../options.js";
1
2
  import { Ast } from "../parser/index.js";
2
- import type { DesmostOptions } from "../options.js";
3
3
  export interface SemiStructuredAst {
4
4
  globals: Ast.IncantationInvocation[];
5
5
  locals: Ast.Expression[];
6
6
  }
7
7
  /**
8
- * Decompile Desmos into raw Desmost source code.
8
+ * Decompile Desmos into Desmost.
9
+ *
10
+ * This extracts relevant state from the given `desmos` calculator instance, emitting the minimal raw source code that would reconstruct that calculator instance.
9
11
  *
10
12
  * The caller must also supply a `blank` calculator instance. This is used as a reference for default field values, so that emitted incantations like `/desmos{}` don't get filled with a huge amount of noise.
11
13
  */
@@ -19,13 +21,19 @@ desmos: Desmos.Calculator,
19
21
  *
20
22
  * This is used in deciding what settings are noise that can be omitted. For instance, most of your calculator settings are probably set to their default values, so there's no need to include *every single one of them* in `/desmos{}`.
21
23
  */
22
- blank?: Desmos.Calculator, options?: Partial<DesmostOptions>): string;
24
+ blank?: Desmos.Calculator,
25
+ /**
26
+ * Decompilation options.
27
+ *
28
+ * See {@linkcode DesmostOptions} for available options.
29
+ */
30
+ options?: Partial<DesmostOptions>): string;
23
31
  /**
24
32
  * Decompile `desmos` into a semi-structured AST.
25
33
  */
26
- export declare function desmos_to_ast(desmos: Desmos.Calculator, blank: Desmos.Calculator): SemiStructuredAst;
34
+ export declare function desmos_to_ast(desmos: Desmos.Calculator, blank: Desmos.Calculator, options: DesmostOptions): SemiStructuredAst;
27
35
  /**
28
36
  * Emit the Desmost source code representation of `ast`.
29
37
  */
30
- export declare function ast_to_source(ast: SemiStructuredAst): string;
38
+ export declare function ast_to_source(ast: SemiStructuredAst, options: DesmostOptions): string;
31
39
  //# sourceMappingURL=decompile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decompile.d.ts","sourceRoot":"","sources":["../../src/decompiler/decompile.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,MAAM,WAAW,iBAAiB;IAE/B,OAAO,EAAE,GAAG,CAAC,qBAAqB,EAAE,CAAC;IACvC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;CACzB;AAGD;;;;GAIG;AACH,wBAAgB,SAAS;AACxB,mDAAmD;AACnD,MAAM,EAAE,MAAM,CAAC,UAAU;AAEzB;;;;;;GAMG;AACH,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,EAGzB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAC/B,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,GAAG,iBAAiB,CASpG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,CAO5D"}
1
+ {"version":3,"file":"decompile.d.ts","sourceRoot":"","sources":["../../src/decompiler/decompile.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAIhC,MAAM,WAAW,iBAAiB;IAE/B,OAAO,EAAE,GAAG,CAAC,qBAAqB,EAAE,CAAC;IACvC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;CACzB;AAGD;;;;;;GAMG;AACH,wBAAgB,SAAS;AACxB,mDAAmD;AACnD,MAAM,EAAE,MAAM,CAAC,UAAU;AAEzB;;;;;;GAMG;AACH,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU;AAEzB;;;;GAIG;AACH,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAC/B,MAAM,CAQR;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC5B,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,KAAK,EAAE,MAAM,CAAC,UAAU,EACxB,OAAO,EAAE,cAAc,GACrB,iBAAiB,CASnB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CAOrF"}
@@ -1,8 +1,12 @@
1
- import { emit_global_incantation, emit_expression } from "./emit.js";
2
- import { extract_settings, extract_viewport, extract_expression } from "./extract.js";
1
+ import { emit_incantation, emit_expression } from "./emit.js";
2
+ import { extract_expression } from "./extract.js";
3
+ import { fill_defaults } from "../options.js";
3
4
  import { Ast } from "../parser/index.js";
5
+ import { GLOBAL_INCANTATIONS } from "../magic/index.js";
4
6
  /**
5
- * Decompile Desmos into raw Desmost source code.
7
+ * Decompile Desmos into Desmost.
8
+ *
9
+ * This extracts relevant state from the given `desmos` calculator instance, emitting the minimal raw source code that would reconstruct that calculator instance.
6
10
  *
7
11
  * The caller must also supply a `blank` calculator instance. This is used as a reference for default field values, so that emitted incantations like `/desmos{}` don't get filled with a huge amount of noise.
8
12
  */
@@ -17,28 +21,35 @@ desmos,
17
21
  * This is used in deciding what settings are noise that can be omitted. For instance, most of your calculator settings are probably set to their default values, so there's no need to include *every single one of them* in `/desmos{}`.
18
22
  */
19
23
  blank,
20
- // TODO doc
24
+ /**
25
+ * Decompilation options.
26
+ *
27
+ * See {@linkcode DesmostOptions} for available options.
28
+ */
21
29
  options) {
22
- return ast_to_source(desmos_to_ast(desmos, blank ?? desmos));
30
+ let opts = fill_defaults(options);
31
+ let ast = desmos_to_ast(desmos, blank ?? desmos, opts);
32
+ let src = ast_to_source(ast, opts);
33
+ return src;
23
34
  }
24
35
  /**
25
36
  * Decompile `desmos` into a semi-structured AST.
26
37
  */
27
- export function desmos_to_ast(desmos, blank) {
38
+ export function desmos_to_ast(desmos, blank, options) {
28
39
  return {
29
40
  globals: [
30
- extract_settings(desmos, blank),
31
- extract_viewport(desmos, blank),
32
- ].filter(x => x != null),
41
+ GLOBAL_INCANTATIONS.desmos.extract(desmos, blank),
42
+ GLOBAL_INCANTATIONS.viewport.extract(desmos, blank),
43
+ ].filter(x => x != undefined),
33
44
  locals: desmos.getExpressions().map(extract_expression),
34
45
  };
35
46
  }
36
47
  /**
37
48
  * Emit the Desmost source code representation of `ast`.
38
49
  */
39
- export function ast_to_source(ast) {
40
- return (ast.globals.map(emit_global_incantation).join("\n")
41
- + "\n\n"
42
- + ast.locals.map(emit_expression).join("\n"));
50
+ export function ast_to_source(ast, options) {
51
+ return (ast.globals.map(inc => emit_incantation(inc, options, { expand: true })).join("\n")
52
+ + (options.keep_leading_blanks ? "\n" : "\n\n")
53
+ + ast.locals.map(expr => emit_expression(expr, options)).join("\n"));
43
54
  }
44
55
  //# sourceMappingURL=decompile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decompile.js","sourceRoot":"","sources":["../../src/decompiler/decompile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEnF,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAWhC;;;;GAIG;AACH,MAAM,UAAU,SAAS;AACxB,mDAAmD;AACnD,MAAyB;AAEzB;;;;;;GAMG;AACH,KAAyB;AAEzB,WAAW;AACX,OAAiC;IAGjC,OAAO,aAAa,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAyB,EAAE,KAAwB;IAEhF,OAAO;QACN,OAAO,EAAE;YACR,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC;YAC/B,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC;SAC/B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC;KACvD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAsB;IAEnD,OAAO,CACF,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;UACjD,MAAM;UACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAChD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"decompile.js","sourceRoot":"","sources":["../../src/decompiler/decompile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAuB,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAU/C;;;;;;GAMG;AACH,MAAM,UAAU,SAAS;AACxB,mDAAmD;AACnD,MAAyB;AAEzB;;;;;;GAMG;AACH,KAAyB;AAEzB;;;;GAIG;AACH,OAAiC;IAGjC,IAAI,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAElC,IAAI,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,IAAI,CAAC,CAAC;IACvD,IAAI,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAEnC,OAAO,GAAG,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC5B,MAAyB,EACzB,KAAwB,EACxB,OAAuB;IAGvB,OAAO;QACN,OAAO,EAAE;YACR,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;YACjD,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;SACnD,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC;QAC7B,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC;KACvD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAsB,EAAE,OAAuB;IAE5E,OAAO,CACA,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;UACnF,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;UAC7C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACvE,CAAC;AACH,CAAC"}
@@ -1,10 +1,13 @@
1
+ import { type DesmostOptions } from "../options.js";
1
2
  import type { Ast } from "../parser/index.js";
2
3
  /**
3
4
  * Emit the source code for a global incantation `invocation`.
4
5
  */
5
- export declare function emit_global_incantation(invocation?: Ast.IncantationInvocation): string;
6
+ export declare function emit_incantation(invocation: Ast.IncantationInvocation, options: DesmostOptions, _?: {
7
+ expand: boolean;
8
+ }): string;
6
9
  /**
7
10
  * Emit the source code for an `expr`.
8
11
  */
9
- export declare function emit_expression(expr?: Ast.Expression): string;
12
+ export declare function emit_expression(expr: Ast.Expression, options: DesmostOptions): string;
10
13
  //# sourceMappingURL=emit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../src/decompiler/emit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAGrC;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,qBAAqB,GAAG,MAAM,CAQtF;AAGD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,UAAU,GAAG,MAAM,CAmC7D"}
1
+ {"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../src/decompiler/emit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAGrC;;GAEG;AACH,wBAAgB,gBAAgB,CAC7B,UAAU,EAAE,GAAG,CAAC,qBAAqB,EACrC,OAAO,EAAE,cAAc,EACvB,CAAC,CAAC,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACvB,MAAM,CAiBR;AAGD;;GAEG;AACH,wBAAgB,eAAe,CAC5B,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,OAAO,EAAE,cAAc,GACvB,MAAM,CA+CR"}
@@ -1,44 +1,65 @@
1
+ import { prettify_source } from "./format.js";
2
+ import { DEFAULT_OPTIONS } from "../options.js";
3
+ import { Incantation } from "../magic/index.js";
1
4
  /**
2
5
  * Emit the source code for a global incantation `invocation`.
3
6
  */
4
- export function emit_global_incantation(invocation) {
7
+ export function emit_incantation(invocation, options, _) {
5
8
  if (invocation == undefined)
6
9
  return "";
7
10
  let ident = invocation.incantation.identifier;
8
- let arg_raw = invocation.arg_raw;
9
- return `/${ident}{\n ${arg_raw}\n}`;
11
+ if ("arg_raw" in invocation) {
12
+ let arg_raw = invocation.arg_raw;
13
+ if (_?.expand && invocation.incantation.arg_type === Incantation.ArgType.OBJECT) {
14
+ return `/${ident}{\n ${arg_raw}\n}`;
15
+ }
16
+ else {
17
+ return `/${ident}{${arg_raw}}`;
18
+ }
19
+ }
20
+ else {
21
+ return `/${ident}`;
22
+ }
10
23
  }
11
24
  /**
12
25
  * Emit the source code for an `expr`.
13
26
  */
14
- export function emit_expression(expr) {
27
+ export function emit_expression(expr, options) {
15
28
  if (expr == undefined)
16
29
  return "";
17
- // TODO
18
- let locals = [];
19
- let sep = expr.incantations.length > 0 ? " :: " : "";
20
- let content;
21
30
  switch (expr.data.type) {
22
31
  case "text":
23
- expr.data.text ??= "";
24
- if (expr.data.text.includes("\n")) {
25
- content = `/text{\n${expr.data.text}\n}`;
32
+ if (expr.data.text?.startsWith(DEFAULT_OPTIONS.error_prefix)) {
33
+ var content = `% [invalid]`;
34
+ }
35
+ else if (expr.data.text?.includes("\n")) {
36
+ if (options.prettify) {
37
+ let indented = (expr.data.text
38
+ .split("\n")
39
+ .map(line => ` ${line}`)
40
+ .join("\n"));
41
+ var content = `/text{\n${indented}\n}`;
42
+ }
43
+ else {
44
+ var content = `/text{\n${expr.data.text}\n}`;
45
+ }
26
46
  }
27
47
  else {
28
- content = `% ${expr.data.text}`;
48
+ var content = `% ${expr.data.text ?? ""}`;
29
49
  }
30
50
  break;
31
51
  case "table":
32
- content = "[tables are currently unsupported]";
52
+ var content = "% [tables are currently unsupported]";
33
53
  break;
34
54
  default:
35
- if (expr.data.latex?.trim() !== "") {
36
- content = expr.data.latex ?? "[unsupported]";
37
- }
38
- else {
39
- content = "";
40
- }
55
+ var content = (expr.data.latex?.trim() === "" ? ""
56
+ : expr.data.latex == undefined ? "% [unsupported]"
57
+ : options.prettify ? prettify_source(expr.data.latex)
58
+ : expr.data.latex);
41
59
  }
42
- return `${locals.join(" ")}${sep}${content}`;
60
+ let locals = expr.incantations.map(inc => emit_incantation(inc, options));
61
+ let sep = (locals.length > 0) ? " :: " : "";
62
+ let space = (locals.length >= 3) ? '\n' : ' ';
63
+ return `${locals.join(space)}${sep}${content}`;
43
64
  }
44
65
  //# sourceMappingURL=emit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/decompiler/emit.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAAsC;IAE7E,IAAI,UAAU,IAAI,SAAS;QAAE,OAAO,EAAE,CAAC;IAErC,IAAI,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC;IAC9C,IAAI,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IAEjC,OAAO,IAAI,KAAK,QAAQ,OAAO,KAAK,CAAC;AACxC,CAAC;AAGD;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAqB;IAEpD,IAAI,IAAI,IAAI,SAAS;QAAE,OAAO,EAAE,CAAC;IAEjC,OAAO;IACL,IAAI,MAAM,GAAa,EAAE,CAAC;IAE1B,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAErD,IAAI,OAAO,CAAC;IAEZ,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,MAAM;YACR,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;YAEtB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,OAAO,GAAG,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACL,OAAO,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACnC,CAAC;YACD,MAAM;QAET,KAAK,OAAO;YACT,OAAO,GAAG,oCAAoC,CAAC;YAC/C,MAAM;QAET;YACG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAClC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,eAAe,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACL,OAAO,GAAG,EAAE,CAAC;YAChB,CAAC;IACP,CAAC;IAED,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,OAAO,EAAE,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/decompiler/emit.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,6 @@
1
1
  import { Ast } from "../parser/index.js";
2
- /**
3
- * Extract a `/desmos` incantation from the settings of `desmos`.
4
- */
5
- export declare function extract_settings(desmos: Desmos.Calculator, blank: Desmos.Calculator): Ast.IncantationInvocation | null;
6
- /**
7
- * Extract a `/viewport` incantation from the viewport bounds of `desmos`.
8
- */
9
- export declare function extract_viewport(desmos: Desmos.Calculator, blank: Desmos.Calculator): Ast.IncantationInvocation | null;
10
2
  /**
11
3
  * Extract an expression and the local incantations that reproduce its state.
12
4
  */
13
- export declare function extract_expression(expression: Desmos.ExpressionState): Ast.Expression;
5
+ export declare function extract_expression(expr: Desmos.ExpressionState): Ast.Expression;
14
6
  //# sourceMappingURL=extract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/decompiler/extract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAMhC;;GAEG;AACH,wBAAgB,gBAAgB,CAC7B,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,KAAK,EAAE,MAAM,CAAC,UAAU,GACxB,GAAG,CAAC,qBAAqB,GAAG,IAAI,CAwBlC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC7B,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,KAAK,EAAE,MAAM,CAAC,UAAU,GACxB,GAAG,CAAC,qBAAqB,GAAG,IAAI,CAmBlC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,eAAe,GAAG,GAAG,CAAC,UAAU,CAuBrF"}
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/decompiler/extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAKhC;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,GAAG,GAAG,CAAC,UAAU,CAc/E"}
@@ -1,68 +1,34 @@
1
- import { stringify_json5, prettify_source } from "./format.js";
2
1
  import { Ast } from "../parser/index.js";
3
- import { is_latex } from "../utils.js";
4
- import { DesmosIncantation, ViewportIncantation } from "../magic/global/index.js";
5
- /**
6
- * Extract a `/desmos` incantation from the settings of `desmos`.
7
- */
8
- export function extract_settings(desmos, blank) {
9
- let defaults = blank.settings;
10
- let arg_raw = stringify_json5(desmos.settings, (k, v) => (
11
- // @ts-expect-error: weird
12
- v === defaults[k]
13
- || k === "__observers"
14
- || k === "guid"
15
- || k === "randomSeed"
16
- || k === "colors") ? undefined : v, " ");
17
- if (arg_raw.trim() === "")
18
- return null;
19
- return {
20
- kind: Ast.Kind.INCANTATION_INVOCATION,
21
- incantation: new DesmosIncantation(),
22
- arg_raw,
23
- };
24
- }
25
- /**
26
- * Extract a `/viewport` incantation from the viewport bounds of `desmos`.
27
- */
28
- export function extract_viewport(desmos, blank) {
29
- let defaults = blank.graphpaperBounds.mathCoordinates;
30
- let { left, right, bottom, top } = desmos.graphpaperBounds.mathCoordinates;
31
- let arg_raw = stringify_json5({ left, right, bottom, top },
32
- /// @ts-expect-error: weird
33
- (k, v) => v === defaults[k] ? undefined : v, " ");
34
- if (arg_raw.trim() === "")
35
- return null;
36
- return {
37
- kind: Ast.Kind.INCANTATION_INVOCATION,
38
- incantation: new ViewportIncantation(),
39
- arg_raw,
40
- };
41
- }
2
+ import { LOCAL_INCANTATIONS } from "../magic/index.js";
42
3
  /**
43
4
  * Extract an expression and the local incantations that reproduce its state.
44
5
  */
45
- export function extract_expression(expression) {
46
- let data;
47
- // @ts-expect-error: check type-narrows
48
- if (expression.latex?.trim() === "") {
49
- data = { latex: ` ` };
50
- }
51
- else {
52
- data = Object.fromEntries(Object.entries(expression)
53
- .filter(([key, value]) => !is_insignificant(key, value)));
54
- }
55
- if (is_latex(expression)) {
56
- data.latex = prettify_source(data.latex);
57
- }
6
+ export function extract_expression(expr) {
58
7
  return {
59
8
  kind: Ast.Kind.EXPRESSION,
60
- data,
61
- incantations: [], // TODO
9
+ data: (expr.latex?.trim() === "" ? { latex: ` ` }
10
+ : {
11
+ type: expr.type,
12
+ latex: expr.latex,
13
+ text: expr.text,
14
+ }),
15
+ incantations: extract_locals(expr),
62
16
  };
63
17
  }
64
- function is_insignificant(key, value) {
65
- return (value === ""
66
- || typeof value === "object" && Object.values(value).every(v => v === ""));
18
+ function extract_locals(expr) {
19
+ /* NOTE: Currently only LaTeX expressions can have local incantations applied to them, this will change in future */
20
+ switch (expr.type) {
21
+ case "text": return [];
22
+ case "table": return [];
23
+ default:
24
+ if (expr.latex?.trim() === "") {
25
+ return [];
26
+ }
27
+ else {
28
+ return (Object.values(LOCAL_INCANTATIONS)
29
+ .map(inc => inc.extract(expr))
30
+ .filter(each => each != undefined));
31
+ }
32
+ }
67
33
  }
68
34
  //# sourceMappingURL=extract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/decompiler/extract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/decompiler/extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAI9C;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAA4B;IAE9D,OAAO;QACN,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU;QACzB,IAAI,EAAE,CACC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE;YAC1C,CAAC,CAAC;gBACC,IAAI,EAAG,IAAI,CAAC,IAAI;gBAChB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAG,IAAI,CAAC,IAAI;aACQ,CAC7B;QACL,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC;KAClC,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAA4B;IAEjD,oHAAoH;IACpH,QAAQ,IAAI,CAAC,IAAI,EACjB,CAAC;QACE,KAAK,MAAM,CAAC,CAAE,OAAO,EAAE,CAAC;QACxB,KAAK,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;QACxB;YACG,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC7B,OAAO,EAAE,CAAC;YACb,CAAC;iBACI,CAAC;gBACH,OAAO,CACJ,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC;qBAChC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;qBAC7B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,SAAS,CAAC,CACpC,CAAC;YACL,CAAC;IACP,CAAC;AACJ,CAAC"}
@@ -1,3 +1,2 @@
1
- export declare const stringify_json5: (typeof JSON.stringify);
2
1
  export declare function prettify_source(source: string): string;
3
2
  //# sourceMappingURL=format.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/decompiler/format.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS,CAWnD,CAAA;AAGD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKtD"}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/decompiler/format.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQtD"}
@@ -1,14 +1,8 @@
1
- export const stringify_json5 = (data, replacer, space) => {
2
- return (
3
- // @ts-expect-error: random `null`??
4
- JSON.stringify(data, replacer, space)
5
- .slice(1, -1) // strip surrounding {}
6
- .trim()
7
- .replaceAll(/"([^"]+)":/g, "$1:") // "key": <value> -> key: <value>
8
- );
9
- };
10
1
  export function prettify_source(source) {
11
2
  source = source.replaceAll(/(?<=[^ ])=(?=[^ ])/g, " = ");
3
+ source = source.replaceAll(/\\left\s*(\(|\[|\\\{)/g, "$1");
4
+ source = source.replaceAll(/\\right\s*(\)|\]|\\\})/g, "$1");
5
+ source = source.replaceAll(/(:|,)\\ /g, "$1 ");
12
6
  return source;
13
7
  }
14
8
  //# sourceMappingURL=format.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/decompiler/format.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAA4B,CACrD,IAAI,EAAE,QAAQ,EAAE,KAAK,EACtB,EAAE;IAED,OAAO;IACJ,oCAAoC;IACpC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;SACpC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,uBAAuB;SACrC,IAAI,EAAE;SACN,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,CAAE,iCAAiC;KACtE,CAAC;AACL,CAAC,CAAA;AAGD,MAAM,UAAU,eAAe,CAAC,MAAc;IAE3C,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAEzD,OAAO,MAAM,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/decompiler/format.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,MAAc;IAE3C,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IACzD,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;IAC3D,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAE7C,OAAO,MAAM,CAAC;AACjB,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -1,10 +1,13 @@
1
1
  import type { Range } from "./utils.js";
2
- /** The parser failed to parse something (usually during speculative parsing), which only results in internal backtracking. */
3
- export declare const NO_MATCH: unique symbol;
4
- /** The compiler encountered a non-fatal recoverable failure (usually during speculative parsing), which only results in internal backtracking. */
5
- export type NoMatch = typeof NO_MATCH & {
6
- readonly __brand?: unique symbol;
7
- };
2
+ /**
3
+ * Multiple aggregated errors.
4
+ *
5
+ * Since the compiler does its best to recover from errors, it often needs to aggregate errors to report later, instead of immediately throwing.
6
+ */
7
+ export declare class DesmostErrors {
8
+ errors: DesmostError[];
9
+ constructor(errors?: DesmostError[]);
10
+ }
8
11
  /**
9
12
  * The compiler encountered a fatal unrecoverable error, which will reach the end user.
10
13
  *
@@ -17,7 +20,6 @@ export declare class DesmostError extends Error {
17
20
  export declare namespace DesmostError {
18
21
  interface Data {
19
22
  msg?: string;
20
- while?: string;
21
23
  hint?: string;
22
24
  note?: string;
23
25
  debug?: string;
@@ -46,6 +48,11 @@ export declare namespace DesmostError {
46
48
  data: Data;
47
49
  constructor(data: Data);
48
50
  }
51
+ /** No incantation with this identifier exists. */
52
+ class UnknownIncantation extends DesmostError {
53
+ data: Data;
54
+ constructor(data: Data);
55
+ }
49
56
  /** An incantation can't be applied here. */
50
57
  class IllegalIncantation extends DesmostError {
51
58
  data: Data;