notations 0.0.46 → 0.0.49

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