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/esm/parser.js CHANGED
@@ -1,81 +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
- 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 -> 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
- toOctavedNote: function (token, tape, owner) {
145
+ toMarker: (token, tape, owner) => {
146
+ if (token.tag != "PRE_MARKER" && token.tag != "POST_MARKER") {
147
+ throw new Error("Invalid token for converting to note: " + token.tag);
148
+ }
149
+ const isBefore = token.tag == "PRE_MARKER";
150
+ const markerText = isBefore
151
+ ? token.value.substring(1, token.value.length - 3)
152
+ : token.value.substring(3, token.value.length - 1);
153
+ token.value = new Marker(markerText, isBefore);
154
+ return token;
155
+ },
156
+ toOctavedNote: (token, tape, owner) => {
71
157
  if (token.tag == "DOTS_IDENT") {
72
- var octave = token.positions[1][1] - token.positions[1][0];
73
- var note = token.value.substring(octave);
158
+ const octave = token.positions[1][1] - token.positions[1][0];
159
+ const note = token.value.substring(octave);
74
160
  token.value = new Note(note, ONE, -octave);
75
161
  }
76
162
  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);
163
+ const octave = token.positions[2][1] - token.positions[2][0];
164
+ const note = token.value.substring(0, token.value.length - octave);
79
165
  token.value = new Note(note, ONE, octave);
80
166
  }
81
167
  else {
@@ -83,23 +169,23 @@ var _a = __read(G.newParser(String.raw(templateObject_1 || (templateObject_1 = _
83
169
  }
84
170
  return token;
85
171
  },
86
- toRoleSelector: function (token, tape, owner) {
172
+ toRoleSelector: (token, tape, owner) => {
87
173
  token.value = token.value.substring(0, token.value.length - 1);
88
174
  return token;
89
175
  },
90
- toLineAnnotation: function (token, tape, owner) {
176
+ toLineAnnotation: (token, tape, owner) => {
91
177
  token.value = token.value.substring(1);
92
178
  return token;
93
179
  },
94
- toSingleLineRawString: function (token, tape, owner) {
180
+ toSingleLineRawString: (token, tape, owner) => {
95
181
  token.value = token.value.substring(1);
96
182
  return token;
97
183
  },
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;
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;
103
189
  if (endPos < 0) {
104
190
  throw new Error("EOF expected while finding end of Raw String Literal: '" + endPat + "'");
105
191
  }
@@ -107,19 +193,14 @@ var _a = __read(G.newParser(String.raw(templateObject_1 || (templateObject_1 = _
107
193
  return token;
108
194
  },
109
195
  },
110
- }), 2), parser = _a[0], itemGraph = _a[1];
111
- var Parser = (function () {
112
- function Parser(config) {
113
- var _this = this;
196
+ });
197
+ export class Parser {
198
+ constructor(config) {
114
199
  this.errors = [];
115
200
  this.commands = [];
116
201
  this.runCommandFound = false;
117
202
  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
- }
203
+ newFraction: (rule, parent, ...children) => {
123
204
  if (children.length == 1) {
124
205
  return new TSU.Num.Fraction(children[0].value);
125
206
  }
@@ -127,51 +208,31 @@ var Parser = (function () {
127
208
  return new TSU.Num.Fraction(children[0].value, children[2].value);
128
209
  }
129
210
  },
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);
211
+ newGroup: (rule, parent, ...children) => {
212
+ const out = new Group(...children[1].value).setDuration(TWO, true);
136
213
  return out;
137
214
  },
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;
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;
146
219
  lit.shift = shiftValue;
147
220
  return lit;
148
221
  },
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;
222
+ litWithPreEmb: (rule, parent, ...children) => {
223
+ const emb = children[0];
224
+ const lit = children[1].value;
156
225
  lit.embelishments.splice(0, 0, emb.value);
157
226
  return lit;
158
227
  },
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];
228
+ litWithPostEmb: (rule, parent, ...children) => {
229
+ const lit = children[0].value;
230
+ const emb = children[1];
166
231
  lit.embelishments.push(emb);
167
232
  return lit;
168
233
  },
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];
234
+ litToAtom: (rule, parent, ...children) => {
235
+ const lit = children[0];
175
236
  if (lit.sym.label == "DOTS_IDENT" || lit.sym.label == "IDENT_DOTS") {
176
237
  return lit.value;
177
238
  }
@@ -185,41 +246,39 @@ var Parser = (function () {
185
246
  throw new Error("Invalid lit: " + lit);
186
247
  }
187
248
  },
188
- newSpace: function (rule, parent) {
189
- var children = [];
190
- for (var _i = 2; _i < arguments.length; _i++) {
191
- children[_i - 2] = arguments[_i];
192
- }
249
+ newSpace: (rule, parent, ...children) => {
193
250
  return new Space();
194
251
  },
195
- newRest: function (rule, parent) {
196
- var children = [];
197
- for (var _i = 2; _i < arguments.length; _i++) {
198
- children[_i - 2] = arguments[_i];
199
- }
252
+ newRest: (rule, parent, ...children) => {
200
253
  return new Rest();
201
254
  },
202
- newDoubleSpace: function (rule, parent) {
203
- var children = [];
204
- for (var _i = 2; _i < arguments.length; _i++) {
205
- children[_i - 2] = arguments[_i];
206
- }
255
+ newDoubleSpace: (rule, parent, ...children) => {
207
256
  return new Space(ONE.timesNum(2));
208
257
  },
209
- newSilentSpace: function (rule, parent) {
210
- var children = [];
211
- for (var _i = 2; _i < arguments.length; _i++) {
212
- children[_i - 2] = arguments[_i];
213
- }
258
+ newSilentSpace: (rule, parent, ...children) => {
214
259
  return new Space(ONE, true);
215
260
  },
216
- applyDuration: function (rule, parent) {
217
- var children = [];
218
- for (var _i = 2; _i < arguments.length; _i++) {
219
- 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 = [];
220
266
  }
221
- var dur = children[0].value;
222
- var leaf = children[1].value;
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 = [];
275
+ }
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;
223
282
  if (typeof dur === "number") {
224
283
  dur = ONE.timesNum(dur);
225
284
  }
@@ -231,28 +290,16 @@ var Parser = (function () {
231
290
  }
232
291
  return leaf;
233
292
  },
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; });
293
+ newArray: (rule, parent, ...children) => {
294
+ return children.map((c) => c.value);
240
295
  },
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;
296
+ concatAtoms: (rule, parent, ...children) => {
297
+ const atoms = children[0].value;
298
+ const atom = children[1].value;
248
299
  atoms.push(atom);
249
300
  return atoms;
250
301
  },
251
- newParam: function (rule, parent) {
252
- var children = [];
253
- for (var _i = 2; _i < arguments.length; _i++) {
254
- children[_i - 2] = arguments[_i];
255
- }
302
+ newParam: (rule, parent, ...children) => {
256
303
  if (children.length == 1) {
257
304
  return { key: null, value: children[0].value };
258
305
  }
@@ -260,86 +307,58 @@ var Parser = (function () {
260
307
  return { key: children[0].value, value: children[2].value };
261
308
  }
262
309
  },
263
- newParamList: function (rule, parent) {
264
- var children = [];
265
- for (var _i = 2; _i < arguments.length; _i++) {
266
- children[_i - 2] = arguments[_i];
267
- }
310
+ newParamList: (rule, parent, ...children) => {
268
311
  return [children[0].value];
269
312
  },
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;
313
+ concatParamList: (rule, parent, ...children) => {
314
+ const params = children[0].value;
315
+ const newParam = children[2].value;
277
316
  params.push(newParam);
278
317
  return params;
279
318
  },
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);
319
+ newCommand: (rule, parent, ...children) => {
320
+ return this.createCommand(children[0].value, children[1].value);
286
321
  },
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;
322
+ appendAtoms: (rule, parent, ...children) => {
323
+ const atoms = children[0].value;
293
324
  if (atoms.length > 0) {
294
- _this.addCommand(new (AddAtoms.bind.apply(AddAtoms, __spreadArray([void 0], __read(atoms), false)))());
325
+ this.addCommand(new AddAtoms(...atoms));
295
326
  }
296
327
  return null;
297
328
  },
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;
329
+ appendCommand: (rule, parent, ...children) => {
330
+ const command = children[1].value;
331
+ this.addCommand(command);
332
+ const atoms = children[2].value;
306
333
  if (atoms.length > 0) {
307
- _this.addCommand(new (AddAtoms.bind.apply(AddAtoms, __spreadArray([void 0], __read(atoms), false)))());
334
+ this.addCommand(new AddAtoms(...atoms));
308
335
  }
309
336
  return null;
310
337
  },
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;
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;
320
343
  if (atoms.length > 0) {
321
- _this.addCommand(new (AddAtoms.bind.apply(AddAtoms, __spreadArray([void 0], __read(atoms), false)))());
344
+ this.addCommand(new AddAtoms(...atoms));
322
345
  }
323
346
  return null;
324
347
  },
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;
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;
333
352
  if (atoms.length > 0) {
334
- _this.addCommand(new (AddAtoms.bind.apply(AddAtoms, __spreadArray([void 0], __read(atoms), false)))());
353
+ this.addCommand(new AddAtoms(...atoms));
335
354
  }
336
355
  return null;
337
356
  },
338
357
  };
339
358
  config = config || {};
340
359
  }
341
- Parser.prototype.createCommand = function (name, params) {
342
- var lName = name.trim().toLowerCase();
360
+ createCommand(name, params) {
361
+ const lName = name.trim().toLowerCase();
343
362
  params = params || [];
344
363
  if (lName == "line") {
345
364
  return new CreateLine(params);
@@ -365,29 +384,25 @@ var Parser = (function () {
365
384
  else {
366
385
  throw new Error("Invalid command: " + lName);
367
386
  }
368
- };
369
- Parser.prototype.addCommand = function (cmd) {
387
+ }
388
+ addCommand(cmd) {
370
389
  cmd.index = this.commands.length;
371
390
  this.commands.push(cmd);
372
- };
373
- Parser.prototype.parse = function (input) {
374
- var _this = this;
391
+ }
392
+ parse(input) {
375
393
  this.errors = [];
376
- var ptree = parser.parse(input, {
394
+ const ptree = parser.parse(input, {
377
395
  tokenizerContext: this,
378
396
  ruleHandlers: this.ruleHandlers,
379
- onTokenError: function (err) {
380
- _this.errors.push(err);
397
+ onTokenError: (err) => {
398
+ this.errors.push(err);
381
399
  return true;
382
400
  },
383
401
  });
384
402
  return ptree;
385
- };
386
- Parser.prototype.parseEmbelishment = function (value) {
403
+ }
404
+ parseEmbelishment(value) {
387
405
  return carnatic.parseEmbelishment(value);
388
- };
389
- return Parser;
390
- }());
391
- export { Parser };
392
- var templateObject_1;
406
+ }
407
+ }
393
408
  //# sourceMappingURL=parser.js.map