notations 0.0.47 → 0.0.50

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 (113) hide show
  1. package/lib/cjs/beats.d.ts +34 -69
  2. package/lib/cjs/beats.js +178 -439
  3. package/lib/cjs/beats.js.map +1 -1
  4. package/lib/cjs/beatutils.d.ts +3 -0
  5. package/lib/cjs/beatutils.js +64 -0
  6. package/lib/cjs/beatutils.js.map +1 -0
  7. package/lib/cjs/beatview.d.ts +18 -0
  8. package/lib/cjs/beatview.js +62 -0
  9. package/lib/cjs/beatview.js.map +1 -0
  10. package/lib/cjs/carnatic/LineView.d.ts +2 -7
  11. package/lib/cjs/carnatic/LineView.js +13 -31
  12. package/lib/cjs/carnatic/LineView.js.map +1 -1
  13. package/lib/cjs/carnatic/NotationView.d.ts +8 -7
  14. package/lib/cjs/carnatic/NotationView.js +73 -153
  15. package/lib/cjs/carnatic/NotationView.js.map +1 -1
  16. package/lib/cjs/carnatic/atomviews.js +149 -287
  17. package/lib/cjs/carnatic/atomviews.js.map +1 -1
  18. package/lib/cjs/carnatic/beatviews.d.ts +4 -13
  19. package/lib/cjs/carnatic/beatviews.js +23 -118
  20. package/lib/cjs/carnatic/beatviews.js.map +1 -1
  21. package/lib/cjs/carnatic/embelishments.d.ts +1 -1
  22. package/lib/cjs/carnatic/embelishments.js +189 -283
  23. package/lib/cjs/carnatic/embelishments.js.map +1 -1
  24. package/lib/cjs/carnatic/gamakas.js +15 -47
  25. package/lib/cjs/carnatic/gamakas.js.map +1 -1
  26. package/lib/cjs/commands.js +111 -271
  27. package/lib/cjs/commands.js.map +1 -1
  28. package/lib/cjs/core.d.ts +14 -1
  29. package/lib/cjs/core.js +291 -477
  30. package/lib/cjs/core.js.map +1 -1
  31. package/lib/cjs/cycle.js +175 -367
  32. package/lib/cjs/cycle.js.map +1 -1
  33. package/lib/cjs/entity.js +48 -102
  34. package/lib/cjs/entity.js.map +1 -1
  35. package/lib/cjs/grids.d.ts +125 -0
  36. package/lib/cjs/grids.js +550 -0
  37. package/lib/cjs/grids.js.map +1 -0
  38. package/lib/cjs/iterators.js +96 -234
  39. package/lib/cjs/iterators.js.map +1 -1
  40. package/lib/cjs/layouts.d.ts +1 -1
  41. package/lib/cjs/layouts.js +62 -98
  42. package/lib/cjs/layouts.js.map +1 -1
  43. package/lib/cjs/loader.d.ts +2 -2
  44. package/lib/cjs/loader.js +23 -123
  45. package/lib/cjs/loader.js.map +1 -1
  46. package/lib/cjs/notation.d.ts +0 -3
  47. package/lib/cjs/notation.js +139 -241
  48. package/lib/cjs/notation.js.map +1 -1
  49. package/lib/cjs/parser.d.ts +2 -0
  50. package/lib/cjs/parser.js +230 -214
  51. package/lib/cjs/parser.js.map +1 -1
  52. package/lib/cjs/shapes.js +149 -283
  53. package/lib/cjs/shapes.js.map +1 -1
  54. package/lib/cjs/utils.d.ts +8 -0
  55. package/lib/cjs/utils.js +60 -55
  56. package/lib/cjs/utils.js.map +1 -1
  57. package/lib/esm/beats.d.ts +34 -69
  58. package/lib/esm/beats.js +172 -438
  59. package/lib/esm/beats.js.map +1 -1
  60. package/lib/esm/beatutils.d.ts +3 -0
  61. package/lib/esm/beatutils.js +37 -0
  62. package/lib/esm/beatutils.js.map +1 -0
  63. package/lib/esm/beatview.d.ts +18 -0
  64. package/lib/esm/beatview.js +35 -0
  65. package/lib/esm/beatview.js.map +1 -0
  66. package/lib/esm/carnatic/LineView.d.ts +2 -7
  67. package/lib/esm/carnatic/LineView.js +12 -31
  68. package/lib/esm/carnatic/LineView.js.map +1 -1
  69. package/lib/esm/carnatic/NotationView.d.ts +8 -7
  70. package/lib/esm/carnatic/NotationView.js +71 -152
  71. package/lib/esm/carnatic/NotationView.js.map +1 -1
  72. package/lib/esm/carnatic/atomviews.js +144 -284
  73. package/lib/esm/carnatic/atomviews.js.map +1 -1
  74. package/lib/esm/carnatic/beatviews.d.ts +4 -13
  75. package/lib/esm/carnatic/beatviews.js +21 -94
  76. package/lib/esm/carnatic/beatviews.js.map +1 -1
  77. package/lib/esm/carnatic/embelishments.d.ts +1 -1
  78. package/lib/esm/carnatic/embelishments.js +187 -296
  79. package/lib/esm/carnatic/embelishments.js.map +1 -1
  80. package/lib/esm/carnatic/gamakas.js +14 -48
  81. package/lib/esm/carnatic/gamakas.js.map +1 -1
  82. package/lib/esm/commands.js +100 -271
  83. package/lib/esm/commands.js.map +1 -1
  84. package/lib/esm/core.d.ts +14 -1
  85. package/lib/esm/core.js +287 -484
  86. package/lib/esm/core.js.map +1 -1
  87. package/lib/esm/cycle.js +172 -367
  88. package/lib/esm/cycle.js.map +1 -1
  89. package/lib/esm/entity.js +48 -104
  90. package/lib/esm/entity.js.map +1 -1
  91. package/lib/esm/grids.d.ts +125 -0
  92. package/lib/esm/grids.js +517 -0
  93. package/lib/esm/grids.js.map +1 -0
  94. package/lib/esm/iterators.js +93 -235
  95. package/lib/esm/iterators.js.map +1 -1
  96. package/lib/esm/layouts.d.ts +1 -1
  97. package/lib/esm/layouts.js +60 -97
  98. package/lib/esm/layouts.js.map +1 -1
  99. package/lib/esm/loader.d.ts +2 -2
  100. package/lib/esm/loader.js +20 -120
  101. package/lib/esm/loader.js.map +1 -1
  102. package/lib/esm/notation.d.ts +0 -3
  103. package/lib/esm/notation.js +135 -242
  104. package/lib/esm/notation.js.map +1 -1
  105. package/lib/esm/parser.d.ts +2 -0
  106. package/lib/esm/parser.js +225 -210
  107. package/lib/esm/parser.js.map +1 -1
  108. package/lib/esm/shapes.js +148 -288
  109. package/lib/esm/shapes.js.map +1 -1
  110. package/lib/esm/utils.d.ts +8 -0
  111. package/lib/esm/utils.js +55 -51
  112. package/lib/esm/utils.js.map +1 -1
  113. package/package.json +18 -17
package/lib/cjs/parser.js CHANGED
@@ -1,8 +1,4 @@
1
1
  "use strict";
2
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
- return cooked;
5
- };
6
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
3
  if (k2 === undefined) k2 = k;
8
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -26,82 +22,172 @@ var __importStar = (this && this.__importStar) || function (mod) {
26
22
  __setModuleDefault(result, mod);
27
23
  return result;
28
24
  };
29
- var __read = (this && this.__read) || function (o, n) {
30
- var m = typeof Symbol === "function" && o[Symbol.iterator];
31
- if (!m) return o;
32
- var i = m.call(o), r, ar = [], e;
33
- try {
34
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
35
- }
36
- catch (error) { e = { error: error }; }
37
- finally {
38
- try {
39
- if (r && !r.done && (m = i["return"])) m.call(i);
40
- }
41
- finally { if (e) throw e.error; }
42
- }
43
- return ar;
44
- };
45
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
46
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
47
- if (ar || !(i in from)) {
48
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
49
- ar[i] = from[i];
50
- }
51
- }
52
- return to.concat(ar || Array.prototype.slice.call(from));
53
- };
54
25
  Object.defineProperty(exports, "__esModule", { value: true });
55
26
  exports.Parser = void 0;
56
- var TSU = __importStar(require("@panyam/tsutils"));
57
- var G = __importStar(require("galore"));
58
- var TLEX = __importStar(require("tlex"));
59
- var core_1 = require("./core");
60
- var commands_1 = require("./commands");
61
- var carnatic = __importStar(require("./carnatic"));
62
- var ONE = TSU.Num.Fraction.ONE;
63
- var TWO = ONE.timesNum(2);
64
- var _a = __read(G.newParser(String.raw(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n %define IdentChar /[^%!@&^|[]={}()+-,;~: \t\f\r\n\v\\.]/\n\n %token BSLASH \"\\\"\n %token OPEN_SQ \"[\"\n %token CLOSE_SQ \"]\"\n %token EQUALS \"=\"\n %token OPEN_PAREN \"(\"\n %token CLOSE_PAREN \")\"\n %token OPEN_BRACE \"{\"\n %token CLOSE_BRACE \"}\"\n %token SLASH \"/\"\n %token STAR \"*\"\n %token CARET \"^\"\n // %skip \"-\"\n %token COMMA \",\"\n %token SEMI_COLON \";\"\n %token COLON \":\"\n\n %token SINGLE_LINE_RAW_STRING />(.*)$/m { toSingleLineRawString }\n %token MULTI_LINE_RAW_STRING /r(#{0,})\"/ { toMultiLineRawString }\n\n %token EMBELISHMENT /~[^s]*/ { toEmbelishment }\n %token NUMBER /-?d+/ { toNumber }\n %token BOOLEAN /true|false/ { toBoolean }\n %token STRING /\"([^\"\\\n]|\\.|\\\n)*\"/ { toString }\n %token STRING /'([^'\\\n]|\\.|\\\n)*'/ { toString }\n %token DOTS_IDENT /(.+)({IdentChar}+)/ { toOctavedNote }\n %token IDENT_DOTS /({IdentChar}+)(.+)/ { toOctavedNote }\n %token IDENT_COLON /{IdentChar}+:/ { toRoleSelector }\n %token IDENT /{IdentChar}+/\n %token BSLASH_IDENT /\\{IDENT}/ { toCommandName }\n %token BSLASH_NUMBER /\\{NUMBER}/\n %token HYPHEN /-/\n %skip /[ \t\n\f\r]+/\n %skip_flex \"//.*$\"\n %skip //*.*?*//\n\n Elements -> Elements Command Atoms { appendCommand } \n | Elements RoleSelector Atoms { appendRoleSelector } \n | Elements Embedding Atoms { insertEmbedding }\n | Atoms { appendAtoms }\n ;\n\n Embedding -> SINGLE_LINE_RAW_STRING | MULTI_LINE_RAW_STRING ;\n\n Command -> BSLASH_IDENT CommandParams ? { newCommand } ;\n CommandParams -> OPEN_PAREN ParamList ? CLOSE_PAREN { $2 } ;\n\n ParamList -> ParamList COMMA Param { concatParamList } ;\n ParamList -> Param { newParamList };\n Param -> ParamValue { newParam } ;\n Param -> ParamKey EQUALS ParamValue { newParam } ;\n ParamKey -> IDENT ;\n ParamValue -> ( STRING | Fraction | NUMBER | BOOLEAN ) ;\n\n RoleSelector -> IDENT_COLON ;\n\n Atoms -> Atoms Atom { concatAtoms } ;\n Atoms -> { newArray } ;\n\n Atom -> Leaf ;\n Atom -> Duration Leaf { applyDuration } ;\n Leaf -> Space | Lit | Group | Rest ;\n Rest -> HYPHEN { newRest };\n\n Space -> COMMA { newSpace } \n | SEMI_COLON { newDoubleSpace } \n | UNDER_SCORE { newSilentSpace } \n ;\n\n /*\n Lit -> DOTS_IDENT { litToAtom } \n | IDENT { litToAtom } \n | IDENT_DOTS { litToAtom } \n | STRING { litToAtom }\n | PRE_EMB Lit { litWithPreEmb }\n // | Lit POST_EMB { litWithPostEmb }\n ;\n */\n\n /* - An alternative representation to support both pre and post embelishment operators. */\n Lit -> Lit POST_EMB { litWithPostEmb }\n | PreEmbLit\n ;\n\n PreEmbLit -> LitToken \n | LitToken CARET NUMBER { litWithCaret }\n | LitToken CARET STAR { litWithCaret }\n | PRE_EMB PreEmbLit { litWithPreEmb }\n ;\n \n LitToken -> DOTS_IDENT { litToAtom }\n | IDENT { litToAtom }\n | IDENT_DOTS { litToAtom }\n | STRING { litToAtom }\n ;\n\n Group -> OPEN_SQ Atoms CLOSE_SQ { newGroup };\n\n Duration -> Fraction | NUMBER;\n Fraction -> NUMBER SLASH NUMBER { newFraction } ;\n "], ["\n %define IdentChar /[^%!@&\\^|\\[\\]={}()+\\-,;~: \\t\\f\\r\\n\\v\\\\\\.]/\n\n %token BSLASH \"\\\\\"\n %token OPEN_SQ \"[\"\n %token CLOSE_SQ \"]\"\n %token EQUALS \"=\"\n %token OPEN_PAREN \"(\"\n %token CLOSE_PAREN \")\"\n %token OPEN_BRACE \"{\"\n %token CLOSE_BRACE \"}\"\n %token SLASH \"/\"\n %token STAR \"*\"\n %token CARET \"^\"\n // %skip \"-\"\n %token COMMA \",\"\n %token SEMI_COLON \";\"\n %token COLON \":\"\n\n %token SINGLE_LINE_RAW_STRING />(.*)$/m { toSingleLineRawString }\n %token MULTI_LINE_RAW_STRING /r(#{0,})\"/ { toMultiLineRawString }\n\n %token EMBELISHMENT /~[^\\s]*/ { toEmbelishment }\n %token NUMBER /-?\\d+/ { toNumber }\n %token BOOLEAN /true|false/ { toBoolean }\n %token STRING /\"([^\"\\\\\\n]|\\\\.|\\\\\\n)*\"/ { toString }\n %token STRING /'([^'\\\\\\n]|\\\\.|\\\\\\n)*'/ { toString }\n %token DOTS_IDENT /(\\.+)({IdentChar}+)/ { toOctavedNote }\n %token IDENT_DOTS /({IdentChar}+)(\\.+)/ { toOctavedNote }\n %token IDENT_COLON /{IdentChar}+:/ { toRoleSelector }\n %token IDENT /{IdentChar}+/\n %token BSLASH_IDENT /\\\\{IDENT}/ { toCommandName }\n %token BSLASH_NUMBER /\\\\{NUMBER}/\n %token HYPHEN /-/\n %skip /[ \\t\\n\\f\\r]+/\n %skip_flex \"//.*$\"\n %skip /\\/\\*.*?\\*\\//\n\n Elements -> Elements Command Atoms { appendCommand } \n | Elements RoleSelector Atoms { appendRoleSelector } \n | Elements Embedding Atoms { insertEmbedding }\n | Atoms { appendAtoms }\n ;\n\n Embedding -> SINGLE_LINE_RAW_STRING | MULTI_LINE_RAW_STRING ;\n\n Command -> BSLASH_IDENT CommandParams ? { newCommand } ;\n CommandParams -> OPEN_PAREN ParamList ? CLOSE_PAREN { $2 } ;\n\n ParamList -> ParamList COMMA Param { concatParamList } ;\n ParamList -> Param { newParamList };\n Param -> ParamValue { newParam } ;\n Param -> ParamKey EQUALS ParamValue { newParam } ;\n ParamKey -> IDENT ;\n ParamValue -> ( STRING | Fraction | NUMBER | BOOLEAN ) ;\n\n RoleSelector -> IDENT_COLON ;\n\n Atoms -> Atoms Atom { concatAtoms } ;\n Atoms -> { newArray } ;\n\n Atom -> Leaf ;\n Atom -> Duration Leaf { applyDuration } ;\n Leaf -> Space | Lit | Group | Rest ;\n Rest -> HYPHEN { newRest };\n\n Space -> COMMA { newSpace } \n | SEMI_COLON { newDoubleSpace } \n | UNDER_SCORE { newSilentSpace } \n ;\n\n /*\n Lit -> DOTS_IDENT { litToAtom } \n | IDENT { litToAtom } \n | IDENT_DOTS { litToAtom } \n | STRING { litToAtom }\n | PRE_EMB Lit { litWithPreEmb }\n // | Lit POST_EMB { litWithPostEmb }\n ;\n */\n\n /* - An alternative representation to support both pre and post embelishment operators. */\n Lit -> Lit POST_EMB { litWithPostEmb }\n | PreEmbLit\n ;\n\n PreEmbLit -> LitToken \n | LitToken CARET NUMBER { litWithCaret }\n | LitToken CARET STAR { litWithCaret }\n | PRE_EMB PreEmbLit { litWithPreEmb }\n ;\n \n LitToken -> DOTS_IDENT { litToAtom }\n | IDENT { litToAtom }\n | IDENT_DOTS { litToAtom }\n | STRING { litToAtom }\n ;\n\n Group -> OPEN_SQ Atoms CLOSE_SQ { newGroup };\n\n Duration -> Fraction | NUMBER;\n Fraction -> NUMBER SLASH NUMBER { newFraction } ;\n "]))), {
27
+ const TSU = __importStar(require("@panyam/tsutils"));
28
+ const G = __importStar(require("galore"));
29
+ const TLEX = __importStar(require("tlex"));
30
+ const core_1 = require("./core");
31
+ const commands_1 = require("./commands");
32
+ const carnatic = __importStar(require("./carnatic"));
33
+ const ONE = TSU.Num.Fraction.ONE;
34
+ const TWO = ONE.timesNum(2);
35
+ const [parser, itemGraph] = G.newParser(String.raw `
36
+ %define IdentChar /[^%!@&\^|\[\]={}()+\-,;~: \t\f\r\n\v\\\.]/
37
+
38
+ %token BSLASH "\\"
39
+ %token OPEN_SQ "["
40
+ %token CLOSE_SQ "]"
41
+ %token EQUALS "="
42
+ %token OPEN_PAREN "("
43
+ %token CLOSE_PAREN ")"
44
+ %token OPEN_BRACE "{"
45
+ %token CLOSE_BRACE "}"
46
+ %token SLASH "/"
47
+ %token STAR "*"
48
+ %token CARET "^"
49
+ // %skip "-"
50
+ %token COMMA ","
51
+ %token SEMI_COLON ";"
52
+ %token COLON ":"
53
+
54
+ %token SINGLE_LINE_RAW_STRING />(.*)$/m { toSingleLineRawString }
55
+ %token MULTI_LINE_RAW_STRING /r(#{0,})"/ { toMultiLineRawString }
56
+
57
+ %token EMBELISHMENT /~[^\s]*/ { toEmbelishment }
58
+ %token NUMBER /-?\d+/ { toNumber }
59
+ %token BOOLEAN /true|false/ { toBoolean }
60
+ %token POST_MARKER /<<"(([^"\\\n]|\\.|\\\n)*)"/ { toMarker }
61
+ %token POST_MARKER /<<'(([^'\\\n]|\\.|\\\n)*)'/ { toMarker }
62
+ %token PRE_MARKER /"(([^"\\\n]|\\.|\\\n)*)">>/ { toMarker }
63
+ %token PRE_MARKER /'(([^'\\\n]|\\.|\\\n)*)'>>/ { toMarker }
64
+ %token STRING /"([^"\\\n]|\\.|\\\n)*"/ { toString }
65
+ %token STRING /'([^'\\\n]|\\.|\\\n)*'/ { toString }
66
+ %token DOTS_IDENT /(\.+)({IdentChar}+)/ { toOctavedNote }
67
+ %token IDENT_DOTS /({IdentChar}+)(\.+)/ { toOctavedNote }
68
+ %token IDENT_COLON /{IdentChar}+:/ { toRoleSelector }
69
+ %token IDENT /{IdentChar}+/
70
+ %token BSLASH_IDENT /\\{IDENT}/ { toCommandName }
71
+ %token BSLASH_NUMBER /\\{NUMBER}/
72
+ %token HYPHEN /-/
73
+ %skip /[ \t\n\f\r]+/
74
+ %skip_flex "//.*$"
75
+ %skip /\/\*.*?\*\//
76
+
77
+ Elements -> Elements Command Atoms { appendCommand }
78
+ | Elements RoleSelector Atoms { appendRoleSelector }
79
+ | Elements Embedding Atoms { insertEmbedding }
80
+ | Atoms { appendAtoms }
81
+ ;
82
+
83
+ Embedding -> SINGLE_LINE_RAW_STRING | MULTI_LINE_RAW_STRING ;
84
+
85
+ Command -> BSLASH_IDENT CommandParams ? { newCommand } ;
86
+ CommandParams -> OPEN_PAREN ParamList ? CLOSE_PAREN { $2 } ;
87
+
88
+ ParamList -> ParamList COMMA Param { concatParamList } ;
89
+ ParamList -> Param { newParamList };
90
+ Param -> ParamValue { newParam } ;
91
+ Param -> ParamKey EQUALS ParamValue { newParam } ;
92
+ ParamKey -> IDENT ;
93
+ ParamValue -> ( STRING | Fraction | NUMBER | BOOLEAN ) ;
94
+
95
+ RoleSelector -> IDENT_COLON ;
96
+
97
+ Atoms -> Atoms Atom { concatAtoms } ;
98
+ Atoms -> { newArray } ;
99
+
100
+ Atom -> Atom POST_MARKER { applyPostMarker }
101
+ | PreMarkedAtom
102
+ ;
103
+ PreMarkedAtom -> Leaf
104
+ | PRE_MARKER PreMarkedAtom { applyPreMarker }
105
+ ;
106
+
107
+ Leaf -> Space | Lit | Group | Rest ;
108
+ Leaf -> Duration Leaf { applyDuration } ;
109
+ Rest -> HYPHEN { newRest };
110
+ Space -> COMMA { newSpace }
111
+ | SEMI_COLON { newDoubleSpace }
112
+ | UNDER_SCORE { newSilentSpace }
113
+ ;
114
+
115
+ /* - An alternative representation to support both pre and
116
+ * post embelishment operators. Here PRE_EMBs have a higher
117
+ * associativity over POST_EMBs
118
+ */
119
+ Lit -> Lit POST_EMB { litWithPostEmb }
120
+ | PreEmbLit
121
+ ;
122
+
123
+ PreEmbLit -> LitToken
124
+ | LitToken CARET NUMBER { litWithCaret }
125
+ | LitToken CARET STAR { litWithCaret }
126
+ | PRE_EMB PreEmbLit { litWithPreEmb }
127
+ ;
128
+
129
+ LitToken -> DOTS_IDENT { litToAtom }
130
+ | IDENT { litToAtom }
131
+ | IDENT_DOTS { litToAtom }
132
+ | STRING { litToAtom }
133
+ ;
134
+
135
+ Group -> OPEN_SQ Atoms CLOSE_SQ { newGroup };
136
+
137
+ Duration -> Fraction | NUMBER;
138
+ Fraction -> NUMBER SLASH NUMBER { newFraction } ;
139
+ `, {
65
140
  allowLeftRecursion: true,
66
141
  debug: "",
67
142
  type: "lalr",
68
143
  tokenHandlers: {
69
- toEmbelishment: function (token, tape, owner) {
70
- var _a = __read(owner.parseEmbelishment(token.value), 2), emb = _a[0], pre = _a[1];
144
+ toEmbelishment: (token, tape, owner) => {
145
+ const [emb, pre] = owner.parseEmbelishment(token.value);
71
146
  if (emb == null) {
72
147
  console.log("Skipping Embelishment: ", token.value);
73
- owner.errors.push(new TLEX.TokenizerError("Invalid embelishment: ".concat(token.value), token.start, 1 + token.end - token.start, "InvalidEmbelishment", token.value));
148
+ owner.errors.push(new TLEX.TokenizerError(`Invalid embelishment: ${token.value}`, token.start, 1 + token.end - token.start, "InvalidEmbelishment", token.value));
74
149
  return null;
75
150
  }
76
151
  token.value = emb;
77
152
  token.tag = pre ? "PRE_EMB" : "POST_EMB";
78
153
  return token;
79
154
  },
80
- toCommandName: function (token, tape, owner) {
155
+ toCommandName: (token, tape, owner) => {
81
156
  token.value = token.value.substring(1);
82
157
  return token;
83
158
  },
84
- toBoolean: function (token, tape, owner) {
159
+ toBoolean: (token, tape, owner) => {
85
160
  token.value = token.value == "true";
86
161
  return token;
87
162
  },
88
- toNumber: function (token, tape, owner) {
163
+ toNumber: (token, tape, owner) => {
89
164
  token.value = parseInt(token.value);
90
165
  return token;
91
166
  },
92
- toString: function (token, tape, owner) {
167
+ toString: (token, tape, owner) => {
93
168
  token.value = token.value.substring(1, token.value.length - 1);
94
169
  return token;
95
170
  },
96
- toOctavedNote: function (token, tape, owner) {
171
+ toMarker: (token, tape, owner) => {
172
+ if (token.tag != "PRE_MARKER" && token.tag != "POST_MARKER") {
173
+ throw new Error("Invalid token for converting to note: " + token.tag);
174
+ }
175
+ const isBefore = token.tag == "PRE_MARKER";
176
+ const markerText = isBefore
177
+ ? token.value.substring(1, token.value.length - 3)
178
+ : token.value.substring(3, token.value.length - 1);
179
+ token.value = new core_1.Marker(markerText, isBefore);
180
+ return token;
181
+ },
182
+ toOctavedNote: (token, tape, owner) => {
97
183
  if (token.tag == "DOTS_IDENT") {
98
- var octave = token.positions[1][1] - token.positions[1][0];
99
- var note = token.value.substring(octave);
184
+ const octave = token.positions[1][1] - token.positions[1][0];
185
+ const note = token.value.substring(octave);
100
186
  token.value = new core_1.Note(note, ONE, -octave);
101
187
  }
102
188
  else if (token.tag == "IDENT_DOTS") {
103
- var octave = token.positions[2][1] - token.positions[2][0];
104
- var note = token.value.substring(0, token.value.length - octave);
189
+ const octave = token.positions[2][1] - token.positions[2][0];
190
+ const note = token.value.substring(0, token.value.length - octave);
105
191
  token.value = new core_1.Note(note, ONE, octave);
106
192
  }
107
193
  else {
@@ -109,23 +195,23 @@ var _a = __read(G.newParser(String.raw(templateObject_1 || (templateObject_1 = _
109
195
  }
110
196
  return token;
111
197
  },
112
- toRoleSelector: function (token, tape, owner) {
198
+ toRoleSelector: (token, tape, owner) => {
113
199
  token.value = token.value.substring(0, token.value.length - 1);
114
200
  return token;
115
201
  },
116
- toLineAnnotation: function (token, tape, owner) {
202
+ toLineAnnotation: (token, tape, owner) => {
117
203
  token.value = token.value.substring(1);
118
204
  return token;
119
205
  },
120
- toSingleLineRawString: function (token, tape, owner) {
206
+ toSingleLineRawString: (token, tape, owner) => {
121
207
  token.value = token.value.substring(1);
122
208
  return token;
123
209
  },
124
- toMultiLineRawString: function (token, tape, owner) {
125
- var hashes = tape.substring(token.positions[1][0], token.positions[1][1]);
126
- var endPat = '"' + hashes;
127
- var startPos = tape.index;
128
- var endPos = TLEX.TapeHelper.advanceAfter(tape, endPat) - endPat.length;
210
+ toMultiLineRawString: (token, tape, owner) => {
211
+ const hashes = tape.substring(token.positions[1][0], token.positions[1][1]);
212
+ const endPat = '"' + hashes;
213
+ const startPos = tape.index;
214
+ const endPos = TLEX.TapeHelper.advanceAfter(tape, endPat) - endPat.length;
129
215
  if (endPos < 0) {
130
216
  throw new Error("EOF expected while finding end of Raw String Literal: '" + endPat + "'");
131
217
  }
@@ -133,19 +219,14 @@ var _a = __read(G.newParser(String.raw(templateObject_1 || (templateObject_1 = _
133
219
  return token;
134
220
  },
135
221
  },
136
- }), 2), parser = _a[0], itemGraph = _a[1];
137
- var Parser = (function () {
138
- function Parser(config) {
139
- var _this = this;
222
+ });
223
+ class Parser {
224
+ constructor(config) {
140
225
  this.errors = [];
141
226
  this.commands = [];
142
227
  this.runCommandFound = false;
143
228
  this.ruleHandlers = {
144
- newFraction: function (rule, parent) {
145
- var children = [];
146
- for (var _i = 2; _i < arguments.length; _i++) {
147
- children[_i - 2] = arguments[_i];
148
- }
229
+ newFraction: (rule, parent, ...children) => {
149
230
  if (children.length == 1) {
150
231
  return new TSU.Num.Fraction(children[0].value);
151
232
  }
@@ -153,51 +234,31 @@ var Parser = (function () {
153
234
  return new TSU.Num.Fraction(children[0].value, children[2].value);
154
235
  }
155
236
  },
156
- newGroup: function (rule, parent) {
157
- var children = [];
158
- for (var _i = 2; _i < arguments.length; _i++) {
159
- children[_i - 2] = arguments[_i];
160
- }
161
- var out = new (core_1.Group.bind.apply(core_1.Group, __spreadArray([void 0], __read(children[1].value), false)))().setDuration(TWO, true);
237
+ newGroup: (rule, parent, ...children) => {
238
+ const out = new core_1.Group(...children[1].value).setDuration(TWO, true);
162
239
  return out;
163
240
  },
164
- litWithCaret: function (rule, parent) {
165
- var children = [];
166
- for (var _i = 2; _i < arguments.length; _i++) {
167
- children[_i - 2] = arguments[_i];
168
- }
169
- var lit = core_1.Note.fromLit(children[0].value);
170
- var opnode = children[2];
171
- var shiftValue = opnode.sym.label == "STAR" ? true : opnode.value;
241
+ litWithCaret: (rule, parent, ...children) => {
242
+ const lit = core_1.Note.fromLit(children[0].value);
243
+ const opnode = children[2];
244
+ const shiftValue = opnode.sym.label == "STAR" ? true : opnode.value;
172
245
  lit.shift = shiftValue;
173
246
  return lit;
174
247
  },
175
- litWithPreEmb: function (rule, parent) {
176
- var children = [];
177
- for (var _i = 2; _i < arguments.length; _i++) {
178
- children[_i - 2] = arguments[_i];
179
- }
180
- var emb = children[0];
181
- var lit = children[1].value;
248
+ litWithPreEmb: (rule, parent, ...children) => {
249
+ const emb = children[0];
250
+ const lit = children[1].value;
182
251
  lit.embelishments.splice(0, 0, emb.value);
183
252
  return lit;
184
253
  },
185
- litWithPostEmb: function (rule, parent) {
186
- var children = [];
187
- for (var _i = 2; _i < arguments.length; _i++) {
188
- children[_i - 2] = arguments[_i];
189
- }
190
- var lit = children[0].value;
191
- var emb = children[1];
254
+ litWithPostEmb: (rule, parent, ...children) => {
255
+ const lit = children[0].value;
256
+ const emb = children[1];
192
257
  lit.embelishments.push(emb);
193
258
  return lit;
194
259
  },
195
- litToAtom: function (rule, parent) {
196
- var children = [];
197
- for (var _i = 2; _i < arguments.length; _i++) {
198
- children[_i - 2] = arguments[_i];
199
- }
200
- var lit = children[0];
260
+ litToAtom: (rule, parent, ...children) => {
261
+ const lit = children[0];
201
262
  if (lit.sym.label == "DOTS_IDENT" || lit.sym.label == "IDENT_DOTS") {
202
263
  return lit.value;
203
264
  }
@@ -211,41 +272,39 @@ var Parser = (function () {
211
272
  throw new Error("Invalid lit: " + lit);
212
273
  }
213
274
  },
214
- newSpace: function (rule, parent) {
215
- var children = [];
216
- for (var _i = 2; _i < arguments.length; _i++) {
217
- children[_i - 2] = arguments[_i];
218
- }
275
+ newSpace: (rule, parent, ...children) => {
219
276
  return new core_1.Space();
220
277
  },
221
- newRest: function (rule, parent) {
222
- var children = [];
223
- for (var _i = 2; _i < arguments.length; _i++) {
224
- children[_i - 2] = arguments[_i];
225
- }
278
+ newRest: (rule, parent, ...children) => {
226
279
  return new core_1.Rest();
227
280
  },
228
- newDoubleSpace: function (rule, parent) {
229
- var children = [];
230
- for (var _i = 2; _i < arguments.length; _i++) {
231
- children[_i - 2] = arguments[_i];
232
- }
281
+ newDoubleSpace: (rule, parent, ...children) => {
233
282
  return new core_1.Space(ONE.timesNum(2));
234
283
  },
235
- newSilentSpace: function (rule, parent) {
236
- var children = [];
237
- for (var _i = 2; _i < arguments.length; _i++) {
238
- children[_i - 2] = arguments[_i];
239
- }
284
+ newSilentSpace: (rule, parent, ...children) => {
240
285
  return new core_1.Space(ONE, true);
241
286
  },
242
- applyDuration: function (rule, parent) {
243
- var children = [];
244
- for (var _i = 2; _i < arguments.length; _i++) {
245
- children[_i - 2] = arguments[_i];
287
+ applyPreMarker: (rule, parent, ...children) => {
288
+ const marker = children[0].value;
289
+ const leaf = children[1].value;
290
+ if (!leaf.markersBefore) {
291
+ leaf.markersBefore = [];
292
+ }
293
+ leaf.markersBefore.splice(0, 0, marker);
294
+ return leaf;
295
+ },
296
+ applyPostMarker: (rule, parent, ...children) => {
297
+ const leaf = children[0].value;
298
+ const marker = children[1].value;
299
+ if (!leaf.markersAfter) {
300
+ leaf.markersAfter = [];
246
301
  }
247
- var dur = children[0].value;
248
- var leaf = children[1].value;
302
+ leaf.markersAfter.push(marker);
303
+ return leaf;
304
+ },
305
+ applyDuration: (rule, parent, ...children) => {
306
+ let dur = children[0].value;
307
+ const leaf = children[1].value;
249
308
  if (typeof dur === "number") {
250
309
  dur = ONE.timesNum(dur);
251
310
  }
@@ -257,28 +316,16 @@ var Parser = (function () {
257
316
  }
258
317
  return leaf;
259
318
  },
260
- newArray: function (rule, parent) {
261
- var children = [];
262
- for (var _i = 2; _i < arguments.length; _i++) {
263
- children[_i - 2] = arguments[_i];
264
- }
265
- return children.map(function (c) { return c.value; });
319
+ newArray: (rule, parent, ...children) => {
320
+ return children.map((c) => c.value);
266
321
  },
267
- concatAtoms: function (rule, parent) {
268
- var children = [];
269
- for (var _i = 2; _i < arguments.length; _i++) {
270
- children[_i - 2] = arguments[_i];
271
- }
272
- var atoms = children[0].value;
273
- var atom = children[1].value;
322
+ concatAtoms: (rule, parent, ...children) => {
323
+ const atoms = children[0].value;
324
+ const atom = children[1].value;
274
325
  atoms.push(atom);
275
326
  return atoms;
276
327
  },
277
- newParam: function (rule, parent) {
278
- var children = [];
279
- for (var _i = 2; _i < arguments.length; _i++) {
280
- children[_i - 2] = arguments[_i];
281
- }
328
+ newParam: (rule, parent, ...children) => {
282
329
  if (children.length == 1) {
283
330
  return { key: null, value: children[0].value };
284
331
  }
@@ -286,86 +333,58 @@ var Parser = (function () {
286
333
  return { key: children[0].value, value: children[2].value };
287
334
  }
288
335
  },
289
- newParamList: function (rule, parent) {
290
- var children = [];
291
- for (var _i = 2; _i < arguments.length; _i++) {
292
- children[_i - 2] = arguments[_i];
293
- }
336
+ newParamList: (rule, parent, ...children) => {
294
337
  return [children[0].value];
295
338
  },
296
- concatParamList: function (rule, parent) {
297
- var children = [];
298
- for (var _i = 2; _i < arguments.length; _i++) {
299
- children[_i - 2] = arguments[_i];
300
- }
301
- var params = children[0].value;
302
- var newParam = children[2].value;
339
+ concatParamList: (rule, parent, ...children) => {
340
+ const params = children[0].value;
341
+ const newParam = children[2].value;
303
342
  params.push(newParam);
304
343
  return params;
305
344
  },
306
- newCommand: function (rule, parent) {
307
- var children = [];
308
- for (var _i = 2; _i < arguments.length; _i++) {
309
- children[_i - 2] = arguments[_i];
310
- }
311
- return _this.createCommand(children[0].value, children[1].value);
345
+ newCommand: (rule, parent, ...children) => {
346
+ return this.createCommand(children[0].value, children[1].value);
312
347
  },
313
- appendAtoms: function (rule, parent) {
314
- var children = [];
315
- for (var _i = 2; _i < arguments.length; _i++) {
316
- children[_i - 2] = arguments[_i];
317
- }
318
- var atoms = children[0].value;
348
+ appendAtoms: (rule, parent, ...children) => {
349
+ const atoms = children[0].value;
319
350
  if (atoms.length > 0) {
320
- _this.addCommand(new (commands_1.AddAtoms.bind.apply(commands_1.AddAtoms, __spreadArray([void 0], __read(atoms), false)))());
351
+ this.addCommand(new commands_1.AddAtoms(...atoms));
321
352
  }
322
353
  return null;
323
354
  },
324
- appendCommand: function (rule, parent) {
325
- var children = [];
326
- for (var _i = 2; _i < arguments.length; _i++) {
327
- children[_i - 2] = arguments[_i];
328
- }
329
- var command = children[1].value;
330
- _this.addCommand(command);
331
- var atoms = children[2].value;
355
+ appendCommand: (rule, parent, ...children) => {
356
+ const command = children[1].value;
357
+ this.addCommand(command);
358
+ const atoms = children[2].value;
332
359
  if (atoms.length > 0) {
333
- _this.addCommand(new (commands_1.AddAtoms.bind.apply(commands_1.AddAtoms, __spreadArray([void 0], __read(atoms), false)))());
360
+ this.addCommand(new commands_1.AddAtoms(...atoms));
334
361
  }
335
362
  return null;
336
363
  },
337
- appendRoleSelector: function (rule, parent) {
338
- var children = [];
339
- for (var _i = 2; _i < arguments.length; _i++) {
340
- children[_i - 2] = arguments[_i];
341
- }
342
- var roleName = children[1].value;
343
- var lName = roleName.toLowerCase().trim();
344
- _this.addCommand(new commands_1.ActivateRole([{ key: null, value: lName }]));
345
- var atoms = children[2].value;
364
+ appendRoleSelector: (rule, parent, ...children) => {
365
+ const roleName = children[1].value;
366
+ const lName = roleName.toLowerCase().trim();
367
+ this.addCommand(new commands_1.ActivateRole([{ key: null, value: lName }]));
368
+ const atoms = children[2].value;
346
369
  if (atoms.length > 0) {
347
- _this.addCommand(new (commands_1.AddAtoms.bind.apply(commands_1.AddAtoms, __spreadArray([void 0], __read(atoms), false)))());
370
+ this.addCommand(new commands_1.AddAtoms(...atoms));
348
371
  }
349
372
  return null;
350
373
  },
351
- insertEmbedding: function (rule, parent) {
352
- var children = [];
353
- for (var _i = 2; _i < arguments.length; _i++) {
354
- children[_i - 2] = arguments[_i];
355
- }
356
- var rawVal = children[1].value;
357
- _this.addCommand(new commands_1.RawEmbedding([{ key: null, value: rawVal }]));
358
- var atoms = children[2].value;
374
+ insertEmbedding: (rule, parent, ...children) => {
375
+ const rawVal = children[1].value;
376
+ this.addCommand(new commands_1.RawEmbedding([{ key: null, value: rawVal }]));
377
+ const atoms = children[2].value;
359
378
  if (atoms.length > 0) {
360
- _this.addCommand(new (commands_1.AddAtoms.bind.apply(commands_1.AddAtoms, __spreadArray([void 0], __read(atoms), false)))());
379
+ this.addCommand(new commands_1.AddAtoms(...atoms));
361
380
  }
362
381
  return null;
363
382
  },
364
383
  };
365
384
  config = config || {};
366
385
  }
367
- Parser.prototype.createCommand = function (name, params) {
368
- var lName = name.trim().toLowerCase();
386
+ createCommand(name, params) {
387
+ const lName = name.trim().toLowerCase();
369
388
  params = params || [];
370
389
  if (lName == "line") {
371
390
  return new commands_1.CreateLine(params);
@@ -391,29 +410,26 @@ var Parser = (function () {
391
410
  else {
392
411
  throw new Error("Invalid command: " + lName);
393
412
  }
394
- };
395
- Parser.prototype.addCommand = function (cmd) {
413
+ }
414
+ addCommand(cmd) {
396
415
  cmd.index = this.commands.length;
397
416
  this.commands.push(cmd);
398
- };
399
- Parser.prototype.parse = function (input) {
400
- var _this = this;
417
+ }
418
+ parse(input) {
401
419
  this.errors = [];
402
- var ptree = parser.parse(input, {
420
+ const ptree = parser.parse(input, {
403
421
  tokenizerContext: this,
404
422
  ruleHandlers: this.ruleHandlers,
405
- onTokenError: function (err) {
406
- _this.errors.push(err);
423
+ onTokenError: (err) => {
424
+ this.errors.push(err);
407
425
  return true;
408
426
  },
409
427
  });
410
428
  return ptree;
411
- };
412
- Parser.prototype.parseEmbelishment = function (value) {
429
+ }
430
+ parseEmbelishment(value) {
413
431
  return carnatic.parseEmbelishment(value);
414
- };
415
- return Parser;
416
- }());
432
+ }
433
+ }
417
434
  exports.Parser = Parser;
418
- var templateObject_1;
419
435
  //# sourceMappingURL=parser.js.map