Skip to content

Commit a26f5d2

Browse files
authored
Merge pull request #25 from appleplectic/DEV-v2
Accept infinite function paramaters
2 parents acefe49 + 912042a commit a26f5d2

File tree

2 files changed

+5
-108
lines changed

2 files changed

+5
-108
lines changed

src/evaluator/evaluator.ts

Lines changed: 3 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -88,60 +88,9 @@ export class Evaluator {
8888

8989
private invokeFunction(func: (...args: unknown[]) => unknown, fps: unknown[],
9090
loc: { moduleName: string, line: number, column: number }): unknown {
91-
92-
if (fps.length === 0) { return func(); }
93-
if (fps.length === 1) { return func(fps[0]); }
94-
if (fps.length === 2) { return func(fps[0], fps[1]); }
95-
if (fps.length === 3) { return func(fps[0], fps[1], fps[2]); }
96-
if (fps.length === 4) {
97-
return func(fps[0], fps[1], fps[2], fps[3]);
98-
}
99-
if (fps.length === 5) {
100-
return func(fps[0], fps[1], fps[2], fps[3], fps[4]);
101-
}
102-
103-
if (fps.length === 6) {
104-
return func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5]);
105-
}
106-
107-
if (fps.length === 7) {
108-
return func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6]);
109-
}
110-
111-
if (fps.length === 8) {
112-
return func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6], fps[7]);
113-
}
114-
115-
if (fps.length === 9) {
116-
return func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6], fps[7], fps[8]);
117-
}
118-
119-
if (fps.length === 10) {
120-
return func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6], fps[7], fps[8], fps[9]);
121-
}
122-
123-
if (fps.length === 11) {
124-
return func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6], fps[7], fps[8], fps[9], fps[10]);
125-
}
126-
127-
if (fps.length === 12) {
128-
return func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6], fps[7], fps[8], fps[9], fps[10], fps[11]);
129-
}
130-
131-
if (fps.length === 13) {
132-
return func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6], fps[7], fps[8], fps[9], fps[10], fps[11], fps[12]);
133-
}
134-
135-
if (fps.length === 14) {
136-
return func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6], fps[7], fps[8], fps[9], fps[10], fps[11], fps[12], fps[13]);
137-
}
138-
139-
if (fps.length === 15) {
140-
return func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6], fps[7], fps[8], fps[9], fps[10], fps[11], fps[12], fps[13], fps[14]);
141-
}
142-
143-
throw Error('Function has too many parameters. Current limitation is 15');
144-
91+
92+
return func(...fps);
93+
14594
}
14695

14796
private evalNode(node: AstNode, blockContext: BlockContext): unknown {

src/evaluator/evaluatorAsync.ts

Lines changed: 2 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -165,60 +165,8 @@ export class EvaluatorAsync {
165165

166166
private async invokeFunctionAsync(func: (...args: unknown[]) => unknown, fps: unknown[],
167167
loc?: { moduleName: string, line: number, column: number }): Promise<unknown> {
168-
169-
if (fps.length === 0) { return await func(); }
170-
if (fps.length === 1) { return await func(fps[0]); }
171-
if (fps.length === 2) { return await func(fps[0], fps[1]); }
172-
if (fps.length === 3) { return await func(fps[0], fps[1], fps[2]); }
173-
if (fps.length === 4) {
174-
return await func(fps[0], fps[1], fps[2], fps[3]);
175-
}
176-
if (fps.length === 5) {
177-
return await func(fps[0], fps[1], fps[2], fps[3], fps[4]);
178-
}
179-
180-
if (fps.length === 6) {
181-
return await func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5]);
182-
}
183-
184-
if (fps.length === 7) {
185-
return await func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6]);
186-
}
187-
188-
if (fps.length === 8) {
189-
return await func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6], fps[7]);
190-
}
191-
192-
if (fps.length === 9) {
193-
return await func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6], fps[7], fps[8]);
194-
}
195-
196-
if (fps.length === 10) {
197-
return await func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6], fps[7], fps[8], fps[9]);
198-
}
199-
200-
if (fps.length === 11) {
201-
return await func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6], fps[7], fps[8], fps[9], fps[10]);
202-
}
203-
204-
if (fps.length === 12) {
205-
return await func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6], fps[7], fps[8], fps[9], fps[10], fps[11]);
206-
}
207-
208-
if (fps.length === 13) {
209-
return await func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6], fps[7], fps[8], fps[9], fps[10], fps[11], fps[12]);
210-
}
211-
212-
if (fps.length === 14) {
213-
return await func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6], fps[7], fps[8], fps[9], fps[10], fps[11], fps[12], fps[13]);
214-
}
215-
216-
if (fps.length === 15) {
217-
return await func(fps[0], fps[1], fps[2], fps[3], fps[4], fps[5], fps[6], fps[7], fps[8], fps[9], fps[10], fps[11], fps[12], fps[13], fps[14]);
218-
}
219-
220-
throw Error('Function has too many parameters. Current limitation is 15');
221-
168+
169+
return await func(...fps);
222170
}
223171

224172
private async evalNodeAsync(node: AstNode, blockContext: BlockContext): Promise<unknown> {

0 commit comments

Comments
 (0)