occam-languages 3.0.29 → 3.0.30
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.
- package/lib/context/file.js +7 -7
- package/lib/context/release.js +7 -7
- package/lib/context.js +3 -3
- package/lib/element.js +5 -5
- package/lib/pass/continuation.js +14 -14
- package/lib/pass/continuationZip.js +15 -15
- package/lib/utilities/breakPoint.js +4 -4
- package/lib/utilities/continuation.js +120 -94
- package/lib/utilities/verification.js +24 -21
- package/lib/utilities/verify.js +5 -5
- package/package.json +1 -1
- package/src/context/file.js +6 -6
- package/src/context/release.js +6 -6
- package/src/context.js +1 -1
- package/src/element.js +4 -4
- package/src/pass/continuation.js +17 -17
- package/src/pass/continuationZip.js +20 -20
- package/src/utilities/breakPoint.js +3 -3
- package/src/utilities/continuation.js +162 -118
- package/src/utilities/verification.js +24 -22
- package/src/utilities/verify.js +4 -4
|
@@ -5,16 +5,18 @@ import { arrayUtilities } from "necessary";
|
|
|
5
5
|
const { filter: arrayFilter } = arrayUtilities;
|
|
6
6
|
|
|
7
7
|
export function one(array, callback, ...initialArguments) {
|
|
8
|
-
const
|
|
9
|
-
|
|
8
|
+
const back = initialArguments.pop(),
|
|
9
|
+
forward = initialArguments.pop(),
|
|
10
10
|
length = array.length,
|
|
11
11
|
index = 0;
|
|
12
12
|
|
|
13
13
|
function next(index, ...nextArguments) {
|
|
14
14
|
if (index === length) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
if (count !== 1) {
|
|
16
|
+
return back();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return forward(...nextArguments, back);
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
const element = array[index];
|
|
@@ -22,21 +24,25 @@ export function one(array, callback, ...initialArguments) {
|
|
|
22
24
|
return callback(
|
|
23
25
|
element,
|
|
24
26
|
...initialArguments,
|
|
25
|
-
(
|
|
26
|
-
|
|
27
|
-
return back(exception);
|
|
28
|
-
}
|
|
27
|
+
(...forwardArguments) => {
|
|
28
|
+
forwardArguments.pop(); ///
|
|
29
29
|
|
|
30
|
-
return next(index + 1, ...nextArguments);
|
|
31
|
-
},
|
|
32
|
-
(...callbackArguments) => {
|
|
33
30
|
count++;
|
|
34
31
|
|
|
35
32
|
if (count === 2) {
|
|
36
33
|
return back();
|
|
37
34
|
}
|
|
38
35
|
|
|
39
|
-
return next(index + 1, ...
|
|
36
|
+
return next(index + 1, ...forwardArguments);
|
|
37
|
+
},
|
|
38
|
+
(...backArguments) => {
|
|
39
|
+
const exception = backArguments.pop();
|
|
40
|
+
|
|
41
|
+
if (exception) {
|
|
42
|
+
return back(exception);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return next(index + 1, ...nextArguments);
|
|
40
46
|
},
|
|
41
47
|
index
|
|
42
48
|
);
|
|
@@ -48,8 +54,8 @@ export function one(array, callback, ...initialArguments) {
|
|
|
48
54
|
}
|
|
49
55
|
|
|
50
56
|
export function some(array, callback, ...initialArguments) {
|
|
51
|
-
const
|
|
52
|
-
|
|
57
|
+
const back = initialArguments.pop(),
|
|
58
|
+
forward = initialArguments.pop(),
|
|
53
59
|
length = array.length;
|
|
54
60
|
|
|
55
61
|
function next(index) {
|
|
@@ -62,14 +68,16 @@ export function some(array, callback, ...initialArguments) {
|
|
|
62
68
|
return callback(
|
|
63
69
|
element,
|
|
64
70
|
...initialArguments,
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
forward,
|
|
72
|
+
(...backArguments) => {
|
|
73
|
+
const exception = backArguments.pop();
|
|
74
|
+
|
|
75
|
+
if (exception) {
|
|
67
76
|
return back(exception);
|
|
68
77
|
}
|
|
69
78
|
|
|
70
79
|
return next(index + 1);
|
|
71
80
|
},
|
|
72
|
-
forward,
|
|
73
81
|
index
|
|
74
82
|
);
|
|
75
83
|
}
|
|
@@ -80,16 +88,18 @@ export function some(array, callback, ...initialArguments) {
|
|
|
80
88
|
}
|
|
81
89
|
|
|
82
90
|
export function each(array, callback, ...initialArguments) {
|
|
83
|
-
const
|
|
84
|
-
|
|
91
|
+
const back = initialArguments.pop(),
|
|
92
|
+
forward = initialArguments.pop(),
|
|
85
93
|
length = array.length,
|
|
86
94
|
index = 0;
|
|
87
95
|
|
|
88
96
|
function next(index, ...nextArguments) {
|
|
89
97
|
if (index === length) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
98
|
+
if (count === 0) {
|
|
99
|
+
return back();
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return forward(...nextArguments, back);
|
|
93
103
|
}
|
|
94
104
|
|
|
95
105
|
const element = array[index];
|
|
@@ -97,12 +107,14 @@ export function each(array, callback, ...initialArguments) {
|
|
|
97
107
|
return callback(
|
|
98
108
|
element,
|
|
99
109
|
...nextArguments,
|
|
100
|
-
|
|
101
|
-
|
|
110
|
+
(...forwardArguments) => {
|
|
111
|
+
forwardArguments.pop(); ///
|
|
112
|
+
|
|
102
113
|
count++;
|
|
103
114
|
|
|
104
|
-
return next(index + 1, ...
|
|
115
|
+
return next(index + 1, ...forwardArguments);
|
|
105
116
|
},
|
|
117
|
+
back,
|
|
106
118
|
index
|
|
107
119
|
);
|
|
108
120
|
}
|
|
@@ -113,14 +125,14 @@ export function each(array, callback, ...initialArguments) {
|
|
|
113
125
|
}
|
|
114
126
|
|
|
115
127
|
export function every(array, callback, ...initialArguments) {
|
|
116
|
-
const
|
|
117
|
-
|
|
128
|
+
const back = initialArguments.pop(),
|
|
129
|
+
forward = initialArguments.pop(),
|
|
118
130
|
length = array.length,
|
|
119
131
|
index = 0;
|
|
120
132
|
|
|
121
133
|
function next(index, ...nextArguments) {
|
|
122
134
|
if (index === length) {
|
|
123
|
-
return forward(...nextArguments);
|
|
135
|
+
return forward(...nextArguments, back);
|
|
124
136
|
}
|
|
125
137
|
|
|
126
138
|
const element = array[index];
|
|
@@ -128,10 +140,12 @@ export function every(array, callback, ...initialArguments) {
|
|
|
128
140
|
return callback(
|
|
129
141
|
element,
|
|
130
142
|
...nextArguments,
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
143
|
+
(...forwardArguments) => {
|
|
144
|
+
forwardArguments.pop(); ///
|
|
145
|
+
|
|
146
|
+
return next(index + 1, ...forwardArguments);
|
|
134
147
|
},
|
|
148
|
+
back,
|
|
135
149
|
index
|
|
136
150
|
);
|
|
137
151
|
}
|
|
@@ -140,14 +154,14 @@ export function every(array, callback, ...initialArguments) {
|
|
|
140
154
|
}
|
|
141
155
|
|
|
142
156
|
export function map(array, callback, ...initialArguments) {
|
|
143
|
-
const
|
|
144
|
-
|
|
157
|
+
const back = initialArguments.pop(),
|
|
158
|
+
forward = initialArguments.pop(),
|
|
145
159
|
length = array.length,
|
|
146
160
|
index = 0;
|
|
147
161
|
|
|
148
162
|
function next(index, arrayB, ...nextArguments) {
|
|
149
163
|
if (index === length) {
|
|
150
|
-
return forward(arrayB, ...nextArguments);
|
|
164
|
+
return forward(arrayB, ...nextArguments, back);
|
|
151
165
|
}
|
|
152
166
|
|
|
153
167
|
const elementA = arrayA[index];
|
|
@@ -155,15 +169,17 @@ export function map(array, callback, ...initialArguments) {
|
|
|
155
169
|
return callback(
|
|
156
170
|
elementA,
|
|
157
171
|
...nextArguments,
|
|
158
|
-
|
|
159
|
-
|
|
172
|
+
(elementB, ...forwardArguments) => {
|
|
173
|
+
forwardArguments.pop(); ///
|
|
174
|
+
|
|
160
175
|
arrayB = [ ///
|
|
161
176
|
...arrayB,
|
|
162
177
|
elementB
|
|
163
178
|
];
|
|
164
179
|
|
|
165
|
-
return next(index + 1, arrayB, ...
|
|
180
|
+
return next(index + 1, arrayB, ...forwardArguments);
|
|
166
181
|
},
|
|
182
|
+
back,
|
|
167
183
|
index
|
|
168
184
|
);
|
|
169
185
|
}
|
|
@@ -175,8 +191,8 @@ export function map(array, callback, ...initialArguments) {
|
|
|
175
191
|
}
|
|
176
192
|
|
|
177
193
|
export function find(array, callback, ...initialArguments) {
|
|
178
|
-
const
|
|
179
|
-
|
|
194
|
+
const back = initialArguments.pop(),
|
|
195
|
+
forward = initialArguments.pop(),
|
|
180
196
|
length = array.length,
|
|
181
197
|
index = 0;
|
|
182
198
|
|
|
@@ -190,16 +206,20 @@ export function find(array, callback, ...initialArguments) {
|
|
|
190
206
|
return callback(
|
|
191
207
|
element,
|
|
192
208
|
...nextArguments,
|
|
193
|
-
(
|
|
194
|
-
|
|
209
|
+
(...forwardArguments) => {
|
|
210
|
+
forwardArguments.pop(); ///
|
|
211
|
+
|
|
212
|
+
return forward(element, ...forwardArguments, back);
|
|
213
|
+
},
|
|
214
|
+
(...backArguments) => {
|
|
215
|
+
const exception = backArguments.pop();
|
|
216
|
+
|
|
217
|
+
if (exception) {
|
|
195
218
|
return back(exception);
|
|
196
219
|
}
|
|
197
220
|
|
|
198
221
|
return next(index + 1, ...nextArguments);
|
|
199
222
|
},
|
|
200
|
-
(...callbackArguments) => {
|
|
201
|
-
return forward(element, ...callbackArguments);
|
|
202
|
-
},
|
|
203
223
|
index
|
|
204
224
|
);
|
|
205
225
|
}
|
|
@@ -208,14 +228,14 @@ export function find(array, callback, ...initialArguments) {
|
|
|
208
228
|
}
|
|
209
229
|
|
|
210
230
|
export function reduce(array, initialValue, callback, ...initialArguments) {
|
|
211
|
-
const
|
|
212
|
-
|
|
231
|
+
const back = initialArguments.pop(),
|
|
232
|
+
forward = initialArguments.pop(),
|
|
213
233
|
length = array.length,
|
|
214
234
|
index = 0;
|
|
215
235
|
|
|
216
236
|
function next(index, value, ...nextArguments) {
|
|
217
237
|
if (index === length) {
|
|
218
|
-
return forward(value, ...nextArguments);
|
|
238
|
+
return forward(value, ...nextArguments, back);
|
|
219
239
|
}
|
|
220
240
|
|
|
221
241
|
const element = array[index];
|
|
@@ -224,10 +244,12 @@ export function reduce(array, initialValue, callback, ...initialArguments) {
|
|
|
224
244
|
element,
|
|
225
245
|
value,
|
|
226
246
|
...nextArguments,
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
247
|
+
(value, ...forwardArguments) => {
|
|
248
|
+
forwardArguments.pop(); ///
|
|
249
|
+
|
|
250
|
+
return next(index + 1, value, ...forwardArguments);
|
|
230
251
|
},
|
|
252
|
+
back,
|
|
231
253
|
index
|
|
232
254
|
);
|
|
233
255
|
}
|
|
@@ -236,14 +258,14 @@ export function reduce(array, initialValue, callback, ...initialArguments) {
|
|
|
236
258
|
}
|
|
237
259
|
|
|
238
260
|
export function forEach(array, callback, ...initialArguments) {
|
|
239
|
-
const
|
|
240
|
-
|
|
261
|
+
const back = initialArguments.pop(),
|
|
262
|
+
forward = initialArguments.pop(),
|
|
241
263
|
length = array.length,
|
|
242
264
|
index = 0;
|
|
243
265
|
|
|
244
266
|
function next(index, ...nextArguments) {
|
|
245
267
|
if (index === length) {
|
|
246
|
-
return forward(...nextArguments);
|
|
268
|
+
return forward(...nextArguments, back);
|
|
247
269
|
}
|
|
248
270
|
|
|
249
271
|
const element = array[index];
|
|
@@ -251,10 +273,12 @@ export function forEach(array, callback, ...initialArguments) {
|
|
|
251
273
|
return callback(
|
|
252
274
|
element,
|
|
253
275
|
...nextArguments,
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
276
|
+
(...forwardArguments) => {
|
|
277
|
+
forwardArguments.pop(); ///
|
|
278
|
+
|
|
279
|
+
return next(index + 1, ...forwardArguments);
|
|
257
280
|
},
|
|
281
|
+
back,
|
|
258
282
|
index
|
|
259
283
|
);
|
|
260
284
|
}
|
|
@@ -263,15 +287,15 @@ export function forEach(array, callback, ...initialArguments) {
|
|
|
263
287
|
}
|
|
264
288
|
|
|
265
289
|
export function filter(array, callback, ...initialArguments) {
|
|
266
|
-
const
|
|
267
|
-
|
|
290
|
+
const back = initialArguments.pop(),
|
|
291
|
+
forward = initialArguments.pop(),
|
|
268
292
|
length = array.length,
|
|
269
293
|
deletedElements = [],
|
|
270
294
|
index = length - 1;
|
|
271
295
|
|
|
272
296
|
function next(index, ...nextArguments) {
|
|
273
297
|
if (index === -1) {
|
|
274
|
-
return forward(deletedElements, ...nextArguments);
|
|
298
|
+
return forward(deletedElements, ...nextArguments, back);
|
|
275
299
|
}
|
|
276
300
|
|
|
277
301
|
const element = array[index];
|
|
@@ -279,8 +303,9 @@ export function filter(array, callback, ...initialArguments) {
|
|
|
279
303
|
return callback(
|
|
280
304
|
element,
|
|
281
305
|
...nextArguments,
|
|
282
|
-
|
|
283
|
-
|
|
306
|
+
(passed, ...forwardArguments) => {
|
|
307
|
+
forwardArguments.pop(); ///
|
|
308
|
+
|
|
284
309
|
if (!passed) {
|
|
285
310
|
const startIndex = index, ///
|
|
286
311
|
deleteCount = 1,
|
|
@@ -291,8 +316,9 @@ export function filter(array, callback, ...initialArguments) {
|
|
|
291
316
|
deletedElements.unshift(deletedElement);
|
|
292
317
|
}
|
|
293
318
|
|
|
294
|
-
return next(index - 1, ...
|
|
319
|
+
return next(index - 1, ...forwardArguments);
|
|
295
320
|
},
|
|
321
|
+
back,
|
|
296
322
|
index
|
|
297
323
|
);
|
|
298
324
|
}
|
|
@@ -301,8 +327,8 @@ export function filter(array, callback, ...initialArguments) {
|
|
|
301
327
|
}
|
|
302
328
|
|
|
303
329
|
export function prune(array, callback, ...initialArguments) {
|
|
304
|
-
const
|
|
305
|
-
|
|
330
|
+
const back = initialArguments.pop(),
|
|
331
|
+
forward = initialArguments.pop(),
|
|
306
332
|
length = array.length,
|
|
307
333
|
index = 0;
|
|
308
334
|
|
|
@@ -310,7 +336,7 @@ export function prune(array, callback, ...initialArguments) {
|
|
|
310
336
|
if (index === length) {
|
|
311
337
|
const deletedElement = undefined;
|
|
312
338
|
|
|
313
|
-
return forward(deletedElement, ...nextArguments);
|
|
339
|
+
return forward(deletedElement, ...nextArguments, back);
|
|
314
340
|
}
|
|
315
341
|
|
|
316
342
|
const element = array[index];
|
|
@@ -318,8 +344,9 @@ export function prune(array, callback, ...initialArguments) {
|
|
|
318
344
|
return callback(
|
|
319
345
|
element,
|
|
320
346
|
...nextArguments,
|
|
321
|
-
|
|
322
|
-
|
|
347
|
+
(passed, ...forwardArguments) => {
|
|
348
|
+
forwardArguments.pop(); ///
|
|
349
|
+
|
|
323
350
|
if (!passed) {
|
|
324
351
|
const startIndex = index, ///
|
|
325
352
|
deleteCount = 1,
|
|
@@ -327,11 +354,12 @@ export function prune(array, callback, ...initialArguments) {
|
|
|
327
354
|
|
|
328
355
|
array.splice(startIndex, deleteCount);
|
|
329
356
|
|
|
330
|
-
return forward(deletedElement, ...
|
|
357
|
+
return forward(deletedElement, ...forwardArguments, back);
|
|
331
358
|
}
|
|
332
359
|
|
|
333
|
-
return next(index + 1, ...
|
|
360
|
+
return next(index + 1, ...forwardArguments);
|
|
334
361
|
},
|
|
362
|
+
back,
|
|
335
363
|
index
|
|
336
364
|
);
|
|
337
365
|
}
|
|
@@ -340,8 +368,8 @@ export function prune(array, callback, ...initialArguments) {
|
|
|
340
368
|
}
|
|
341
369
|
|
|
342
370
|
export function extract(array, callback, ...initialArguments) {
|
|
343
|
-
const
|
|
344
|
-
|
|
371
|
+
const back = initialArguments.pop(),
|
|
372
|
+
forward = initialArguments.pop(),
|
|
345
373
|
length = array.length,
|
|
346
374
|
index = 0;
|
|
347
375
|
|
|
@@ -349,7 +377,7 @@ export function extract(array, callback, ...initialArguments) {
|
|
|
349
377
|
if (index === length) {
|
|
350
378
|
const deletedElement = undefined;
|
|
351
379
|
|
|
352
|
-
return forward(deletedElement, ...nextArguments);
|
|
380
|
+
return forward(deletedElement, ...nextArguments, back);
|
|
353
381
|
}
|
|
354
382
|
|
|
355
383
|
const element = array[index];
|
|
@@ -357,8 +385,9 @@ export function extract(array, callback, ...initialArguments) {
|
|
|
357
385
|
return callback(
|
|
358
386
|
element,
|
|
359
387
|
...nextArguments,
|
|
360
|
-
|
|
361
|
-
|
|
388
|
+
(passed, ...forwardArguments) => {
|
|
389
|
+
forwardArguments.pop(); ///
|
|
390
|
+
|
|
362
391
|
if (passed) {
|
|
363
392
|
const startIndex = index, ///
|
|
364
393
|
deleteCount = 1,
|
|
@@ -366,11 +395,12 @@ export function extract(array, callback, ...initialArguments) {
|
|
|
366
395
|
|
|
367
396
|
array.splice(startIndex, deleteCount);
|
|
368
397
|
|
|
369
|
-
return forward(deletedElement, ...
|
|
398
|
+
return forward(deletedElement, ...forwardArguments, back);
|
|
370
399
|
}
|
|
371
400
|
|
|
372
|
-
return next(index + 1, ...
|
|
401
|
+
return next(index + 1, ...forwardArguments);
|
|
373
402
|
},
|
|
403
|
+
back,
|
|
374
404
|
index
|
|
375
405
|
);
|
|
376
406
|
}
|
|
@@ -379,8 +409,8 @@ export function extract(array, callback, ...initialArguments) {
|
|
|
379
409
|
}
|
|
380
410
|
|
|
381
411
|
export function match(arrayA, arrayB, callback, ...initialArguments) {
|
|
382
|
-
const
|
|
383
|
-
|
|
412
|
+
const back = initialArguments.pop(),
|
|
413
|
+
forward = initialArguments.pop(),
|
|
384
414
|
arrayALength = arrayA.length,
|
|
385
415
|
arrayBLength = arrayB.length;
|
|
386
416
|
|
|
@@ -393,7 +423,7 @@ export function match(arrayA, arrayB, callback, ...initialArguments) {
|
|
|
393
423
|
|
|
394
424
|
function next(index, ...nextArguments) {
|
|
395
425
|
if (index === length) {
|
|
396
|
-
return forward(...nextArguments);
|
|
426
|
+
return forward(...nextArguments, back);
|
|
397
427
|
}
|
|
398
428
|
|
|
399
429
|
const elementA = arrayA[index],
|
|
@@ -403,10 +433,12 @@ export function match(arrayA, arrayB, callback, ...initialArguments) {
|
|
|
403
433
|
elementA,
|
|
404
434
|
elementB,
|
|
405
435
|
...nextArguments,
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
436
|
+
(...forwardArguments) => {
|
|
437
|
+
forwardArguments.pop(); ///
|
|
438
|
+
|
|
439
|
+
return next(index + 1, ...forwardArguments);
|
|
409
440
|
},
|
|
441
|
+
back,
|
|
410
442
|
index
|
|
411
443
|
);
|
|
412
444
|
}
|
|
@@ -419,14 +451,14 @@ export function resolve(arrayA, arrayB, callback, ...initialArguments) {
|
|
|
419
451
|
...arrayA
|
|
420
452
|
];
|
|
421
453
|
|
|
422
|
-
const
|
|
423
|
-
|
|
454
|
+
const back = initialArguments.pop(),
|
|
455
|
+
forward = initialArguments.pop();
|
|
424
456
|
|
|
425
457
|
function nextPass(...nextPassArguments) {
|
|
426
458
|
const length = arrayA.length; ///
|
|
427
459
|
|
|
428
460
|
if (length === 0) {
|
|
429
|
-
return forward(...nextPassArguments);
|
|
461
|
+
return forward(...nextPassArguments, back);
|
|
430
462
|
}
|
|
431
463
|
|
|
432
464
|
function nextElement(index, success, ...nextElementArguments) {
|
|
@@ -451,19 +483,23 @@ export function resolve(arrayA, arrayB, callback, ...initialArguments) {
|
|
|
451
483
|
return callback(
|
|
452
484
|
elementA,
|
|
453
485
|
...nextElementArguments,
|
|
454
|
-
(
|
|
455
|
-
|
|
456
|
-
return back(exception);
|
|
457
|
-
}
|
|
486
|
+
(...forwardArguments) => {
|
|
487
|
+
forwardArguments.pop(); ///
|
|
458
488
|
|
|
459
|
-
return nextElement(index + 1, success, ...nextElementArguments);
|
|
460
|
-
},
|
|
461
|
-
(...callbackArguments) => {
|
|
462
489
|
const elementB = elementA; ///
|
|
463
490
|
|
|
464
491
|
arrayB.push(elementB);
|
|
465
492
|
|
|
466
|
-
return nextElement(index + 1, true, ...
|
|
493
|
+
return nextElement(index + 1, true, ...forwardArguments);
|
|
494
|
+
},
|
|
495
|
+
(...backArguments) => {
|
|
496
|
+
const exception = backArguments.pop();
|
|
497
|
+
|
|
498
|
+
if (exception) {
|
|
499
|
+
return back(exception);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
return nextElement(index + 1, success, ...nextElementArguments);
|
|
467
503
|
},
|
|
468
504
|
index
|
|
469
505
|
);
|
|
@@ -479,14 +515,14 @@ export function resolve(arrayA, arrayB, callback, ...initialArguments) {
|
|
|
479
515
|
}
|
|
480
516
|
|
|
481
517
|
export function forwardsEvery(array, callback, ...initialArguments) {
|
|
482
|
-
const
|
|
483
|
-
|
|
518
|
+
const back = initialArguments.pop(),
|
|
519
|
+
forward = initialArguments.pop(),
|
|
484
520
|
length = array.length,
|
|
485
521
|
index = 0;
|
|
486
522
|
|
|
487
523
|
function next(index, ...nextArguments) {
|
|
488
524
|
if (index === length) {
|
|
489
|
-
return forward(...nextArguments);
|
|
525
|
+
return forward(...nextArguments, back);
|
|
490
526
|
}
|
|
491
527
|
|
|
492
528
|
const element = array[index];
|
|
@@ -494,10 +530,12 @@ export function forwardsEvery(array, callback, ...initialArguments) {
|
|
|
494
530
|
return callback(
|
|
495
531
|
element,
|
|
496
532
|
...nextArguments,
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
533
|
+
(...forwardArguments) => {
|
|
534
|
+
forwardArguments.pop(); ///
|
|
535
|
+
|
|
536
|
+
return next(index + 1, ...forwardArguments);
|
|
500
537
|
},
|
|
538
|
+
back,
|
|
501
539
|
index
|
|
502
540
|
);
|
|
503
541
|
}
|
|
@@ -506,14 +544,14 @@ export function forwardsEvery(array, callback, ...initialArguments) {
|
|
|
506
544
|
}
|
|
507
545
|
|
|
508
546
|
export function backwardsEvery(array, callback, ...initialArguments) {
|
|
509
|
-
const
|
|
510
|
-
|
|
547
|
+
const back = initialArguments.pop(),
|
|
548
|
+
forward = initialArguments.pop(),
|
|
511
549
|
length = array.length,
|
|
512
550
|
index = length - 1;
|
|
513
551
|
|
|
514
552
|
function next(index, ...nextArguments) {
|
|
515
553
|
if (index === -1) {
|
|
516
|
-
return forward(...nextArguments);
|
|
554
|
+
return forward(...nextArguments, back);
|
|
517
555
|
}
|
|
518
556
|
|
|
519
557
|
const element = array[index];
|
|
@@ -521,10 +559,12 @@ export function backwardsEvery(array, callback, ...initialArguments) {
|
|
|
521
559
|
return callback(
|
|
522
560
|
element,
|
|
523
561
|
...nextArguments,
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
562
|
+
(...forwardArguments) => {
|
|
563
|
+
forwardArguments.pop(); ///
|
|
564
|
+
|
|
565
|
+
return next(index - 1, ...forwardArguments);
|
|
527
566
|
},
|
|
567
|
+
back,
|
|
528
568
|
index
|
|
529
569
|
);
|
|
530
570
|
}
|
|
@@ -533,14 +573,14 @@ export function backwardsEvery(array, callback, ...initialArguments) {
|
|
|
533
573
|
}
|
|
534
574
|
|
|
535
575
|
export function forwardsForEach(array, callback, ...initialArguments) {
|
|
536
|
-
const
|
|
537
|
-
|
|
576
|
+
const back = initialArguments.pop(),
|
|
577
|
+
forward = initialArguments.pop(),
|
|
538
578
|
length = array.length,
|
|
539
579
|
index = 0;
|
|
540
580
|
|
|
541
581
|
function next(index, ...nextArguments) {
|
|
542
582
|
if (index === length) {
|
|
543
|
-
return forward(...nextArguments);
|
|
583
|
+
return forward(...nextArguments, back);
|
|
544
584
|
}
|
|
545
585
|
|
|
546
586
|
const element = array[index];
|
|
@@ -548,10 +588,12 @@ export function forwardsForEach(array, callback, ...initialArguments) {
|
|
|
548
588
|
return callback(
|
|
549
589
|
element,
|
|
550
590
|
...nextArguments,
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
591
|
+
(...forwardArguments) => {
|
|
592
|
+
forwardArguments.pop(); ///
|
|
593
|
+
|
|
594
|
+
return next(index + 1, ...forwardArguments);
|
|
554
595
|
},
|
|
596
|
+
back,
|
|
555
597
|
index
|
|
556
598
|
);
|
|
557
599
|
}
|
|
@@ -560,14 +602,14 @@ export function forwardsForEach(array, callback, ...initialArguments) {
|
|
|
560
602
|
}
|
|
561
603
|
|
|
562
604
|
export function backwardsForEach(array, callback, ...initialArguments) {
|
|
563
|
-
const
|
|
564
|
-
|
|
605
|
+
const back = initialArguments.pop(),
|
|
606
|
+
forward = initialArguments.pop(),
|
|
565
607
|
length = array.length,
|
|
566
608
|
index = length - 1;
|
|
567
609
|
|
|
568
610
|
function next(index, ...nextArguments) {
|
|
569
611
|
if (index === -1) {
|
|
570
|
-
return forward(...nextArguments);
|
|
612
|
+
return forward(...nextArguments, back);
|
|
571
613
|
}
|
|
572
614
|
|
|
573
615
|
const element = array[index];
|
|
@@ -575,10 +617,12 @@ export function backwardsForEach(array, callback, ...initialArguments) {
|
|
|
575
617
|
return callback(
|
|
576
618
|
element,
|
|
577
619
|
...nextArguments,
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
620
|
+
(...forwardArguments) => {
|
|
621
|
+
forwardArguments.pop(); ///
|
|
622
|
+
|
|
623
|
+
return next(index - 1, ...forwardArguments);
|
|
581
624
|
},
|
|
625
|
+
back,
|
|
582
626
|
index
|
|
583
627
|
);
|
|
584
628
|
}
|