notations 0.0.48 → 0.0.51

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