code-ruby 1.5.7 → 1.6.1
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -0
- data/Gemfile.lock +1 -1
- data/VERSION +1 -1
- data/docs/precedence.txt +36 -0
- data/lib/code/node/if.rb +5 -0
- data/lib/code/object/date.rb +670 -46
- data/lib/code/object/decimal.rb +722 -78
- data/lib/code/object/dictionary.rb +415 -44
- data/lib/code/object/global.rb +8 -1
- data/lib/code/object/http.rb +1 -1
- data/lib/code/object/integer.rb +724 -87
- data/lib/code/object/list.rb +545 -101
- data/lib/code/object/number.rb +8 -0
- data/lib/code/object/parameter.rb +7 -11
- data/lib/code/object/range.rb +5 -0
- data/lib/code/object/string.rb +7 -0
- data/lib/code/object/time.rb +647 -116
- data/lib/code/parser/equal.rb +1 -1
- data/lib/code/parser/equality.rb +1 -1
- data/lib/code/parser/if.rb +7 -2
- data/lib/code/parser/name.rb +41 -6
- data/lib/code.rb +1 -1
- data/spec/code/object/decimal_spec.rb +0 -1
- data/spec/code/object/http_spec.rb +72 -68
- data/spec/code/object/integer_spec.rb +0 -1
- data/spec/code/parser/if_modifier_spec.rb +2 -2
- data/spec/code_spec.rb +3 -2
- metadata +4 -2
data/lib/code/object/list.rb
CHANGED
@@ -3,25 +3,124 @@
|
|
3
3
|
class Code
|
4
4
|
class Object
|
5
5
|
class List < Object
|
6
|
-
delegate
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
6
|
+
delegate(
|
7
|
+
:code_many?,
|
8
|
+
:code_positive?,
|
9
|
+
:code_negative?,
|
10
|
+
:code_zero?,
|
11
|
+
:code_one?,
|
12
|
+
:code_two?,
|
13
|
+
:code_three?,
|
14
|
+
:code_four?,
|
15
|
+
:code_five?,
|
16
|
+
:code_six?,
|
17
|
+
:code_seven?,
|
18
|
+
:code_eight?,
|
19
|
+
:code_nine?,
|
20
|
+
:code_ten?,
|
21
|
+
:code_eleven?,
|
22
|
+
:code_twelve?,
|
23
|
+
:code_thirteen?,
|
24
|
+
:code_fourteen?,
|
25
|
+
:code_fifteen?,
|
26
|
+
:code_sixteen?,
|
27
|
+
:code_seventeen?,
|
28
|
+
:code_eighteen?,
|
29
|
+
:code_nineteen?,
|
30
|
+
:code_twenty?,
|
31
|
+
:code_twenty_one?,
|
32
|
+
:code_twenty_two?,
|
33
|
+
:code_twenty_three?,
|
34
|
+
:code_twenty_four?,
|
35
|
+
:code_twenty_five?,
|
36
|
+
:code_twenty_six?,
|
37
|
+
:code_twenty_seven?,
|
38
|
+
:code_twenty_eight?,
|
39
|
+
:code_twenty_nine?,
|
40
|
+
:code_thirty?,
|
41
|
+
:code_thirty_one?,
|
42
|
+
:code_thirty_two?,
|
43
|
+
:code_thirty_three?,
|
44
|
+
:code_thirty_four?,
|
45
|
+
:code_thirty_five?,
|
46
|
+
:code_thirty_six?,
|
47
|
+
:code_thirty_seven?,
|
48
|
+
:code_thirty_eight?,
|
49
|
+
:code_thirty_nine?,
|
50
|
+
:code_forty?,
|
51
|
+
:code_forty_one?,
|
52
|
+
:code_forty_two?,
|
53
|
+
:code_forty_three?,
|
54
|
+
:code_forty_four?,
|
55
|
+
:code_forty_five?,
|
56
|
+
:code_forty_six?,
|
57
|
+
:code_forty_seven?,
|
58
|
+
:code_forty_eight?,
|
59
|
+
:code_forty_nine?,
|
60
|
+
:code_fifty?,
|
61
|
+
:code_fifty_one?,
|
62
|
+
:code_fifty_two?,
|
63
|
+
:code_fifty_three?,
|
64
|
+
:code_fifty_four?,
|
65
|
+
:code_fifty_five?,
|
66
|
+
:code_fifty_six?,
|
67
|
+
:code_fifty_seven?,
|
68
|
+
:code_fifty_eight?,
|
69
|
+
:code_fifty_nine?,
|
70
|
+
:code_sixty?,
|
71
|
+
:code_sixty_one?,
|
72
|
+
:code_sixty_two?,
|
73
|
+
:code_sixty_three?,
|
74
|
+
:code_sixty_four?,
|
75
|
+
:code_sixty_five?,
|
76
|
+
:code_sixty_six?,
|
77
|
+
:code_sixty_seven?,
|
78
|
+
:code_sixty_eight?,
|
79
|
+
:code_sixty_nine?,
|
80
|
+
:code_seventy?,
|
81
|
+
:code_seventy_one?,
|
82
|
+
:code_seventy_two?,
|
83
|
+
:code_seventy_three?,
|
84
|
+
:code_seventy_four?,
|
85
|
+
:code_seventy_five?,
|
86
|
+
:code_seventy_six?,
|
87
|
+
:code_seventy_seven?,
|
88
|
+
:code_seventy_eight?,
|
89
|
+
:code_seventy_nine?,
|
90
|
+
:code_eighty?,
|
91
|
+
:code_eighty_one?,
|
92
|
+
:code_eighty_two?,
|
93
|
+
:code_eighty_three?,
|
94
|
+
:code_eighty_four?,
|
95
|
+
:code_eighty_five?,
|
96
|
+
:code_eighty_six?,
|
97
|
+
:code_eighty_seven?,
|
98
|
+
:code_eighty_eight?,
|
99
|
+
:code_eighty_nine?,
|
100
|
+
:code_ninety?,
|
101
|
+
:code_ninety_one?,
|
102
|
+
:code_ninety_two?,
|
103
|
+
:code_ninety_three?,
|
104
|
+
:code_ninety_four?,
|
105
|
+
:code_ninety_five?,
|
106
|
+
:code_ninety_six?,
|
107
|
+
:code_ninety_seven?,
|
108
|
+
:code_ninety_eight?,
|
109
|
+
:code_ninety_nine?,
|
110
|
+
:code_one_hundred?,
|
111
|
+
to: :code_size
|
112
|
+
)
|
18
113
|
|
19
114
|
def initialize(*args, **_kargs, &_block)
|
20
115
|
self.raw =
|
21
116
|
if args.first.is_a?(List)
|
22
117
|
args.first.raw.map(&:to_code)
|
118
|
+
elsif args.first.is_a?(Dictionary)
|
119
|
+
args.first.raw.to_a.map(&:to_code)
|
23
120
|
elsif args.first.is_an?(::Array)
|
24
121
|
args.first.map(&:to_code)
|
122
|
+
elsif args.first.is_a?(::Hash)
|
123
|
+
args.first.to_a.map(&:to_code)
|
25
124
|
else
|
26
125
|
[]
|
27
126
|
end
|
@@ -47,13 +146,13 @@ class Code
|
|
47
146
|
sig(args) { List }
|
48
147
|
code_minus(code_value)
|
49
148
|
when "any?"
|
50
|
-
sig(args) { Function.maybe }
|
149
|
+
sig(args) { (Function | Class).maybe }
|
51
150
|
code_any?(code_value, **globals)
|
52
151
|
when "detect"
|
53
|
-
sig(args) { Function }
|
152
|
+
sig(args) { (Function | Class).maybe }
|
54
153
|
code_detect(code_value, **globals)
|
55
154
|
when "each"
|
56
|
-
sig(args) { Function }
|
155
|
+
sig(args) { (Function | Class).maybe }
|
57
156
|
code_each(code_value, **globals)
|
58
157
|
when "first"
|
59
158
|
sig(args) { Integer.maybe }
|
@@ -70,6 +169,9 @@ class Code
|
|
70
169
|
when "pop"
|
71
170
|
sig(args) { Integer.maybe }
|
72
171
|
code_pop(code_value)
|
172
|
+
when "pop!"
|
173
|
+
sig(args) { Integer.maybe }
|
174
|
+
code_pop!(code_value)
|
73
175
|
when "shift"
|
74
176
|
sig(args) { Integer.maybe }
|
75
177
|
code_shift(code_value)
|
@@ -80,43 +182,40 @@ class Code
|
|
80
182
|
sig(args)
|
81
183
|
code_last
|
82
184
|
when "map"
|
83
|
-
sig(args) { Function }
|
185
|
+
sig(args) { (Function | Class).maybe }
|
84
186
|
code_map(code_value, **globals)
|
85
187
|
when "map!"
|
86
|
-
sig(args) { Function }
|
188
|
+
sig(args) { (Function | Class).maybe }
|
87
189
|
code_map!(code_value, **globals)
|
88
190
|
when "max"
|
89
|
-
sig(args)
|
90
|
-
code_max
|
91
|
-
when "max_by"
|
92
|
-
sig(args) { Function }
|
93
|
-
code_max_by(code_value, **globals)
|
191
|
+
sig(args) { (Function | Class).maybe }
|
192
|
+
code_max(code_value, **globals)
|
94
193
|
when "none?"
|
95
|
-
sig(args) { Function.maybe }
|
194
|
+
sig(args) { (Function | Class).maybe }
|
96
195
|
code_none?(code_value, **globals)
|
97
196
|
when "reduce"
|
98
|
-
sig(args) { Function }
|
197
|
+
sig(args) { (Function | Class).maybe }
|
99
198
|
code_reduce(code_value, **globals)
|
100
199
|
when "reverse"
|
101
200
|
sig(args)
|
102
201
|
code_reverse
|
103
202
|
when "select"
|
104
|
-
sig(args) { Function }
|
203
|
+
sig(args) { (Function | Class).maybe }
|
105
204
|
code_select(code_value, **globals)
|
106
205
|
when "select!"
|
107
|
-
sig(args) { Function }
|
206
|
+
sig(args) { (Function | Class).maybe }
|
108
207
|
code_select!(code_value, **globals)
|
109
208
|
when "compact"
|
110
|
-
sig(args) { Function.maybe }
|
209
|
+
sig(args) { (Function | Class).maybe }
|
111
210
|
code_compact(code_value, **globals)
|
112
211
|
when "compact!"
|
113
|
-
sig(args) { Function.maybe }
|
212
|
+
sig(args) { (Function | Class).maybe }
|
114
213
|
code_compact!(code_value, **globals)
|
115
214
|
when "reject"
|
116
|
-
sig(args) { Function }
|
215
|
+
sig(args) { (Function | Class).maybe }
|
117
216
|
code_reject(code_value, **globals)
|
118
217
|
when "reject!"
|
119
|
-
sig(args) { Function }
|
218
|
+
sig(args) { (Function | Class).maybe }
|
120
219
|
code_reject!(code_value, **globals)
|
121
220
|
when "size"
|
122
221
|
sig(args)
|
@@ -127,6 +226,15 @@ class Code
|
|
127
226
|
when "uniq"
|
128
227
|
sig(args)
|
129
228
|
code_uniq
|
229
|
+
when "many?"
|
230
|
+
sig(args)
|
231
|
+
code_many?
|
232
|
+
when "positive?"
|
233
|
+
sig(args)
|
234
|
+
code_positive?
|
235
|
+
when "negative?"
|
236
|
+
sig(args)
|
237
|
+
code_negative?
|
130
238
|
when "zero?"
|
131
239
|
sig(args)
|
132
240
|
code_zero?
|
@@ -160,9 +268,276 @@ class Code
|
|
160
268
|
when "ten?"
|
161
269
|
sig(args)
|
162
270
|
code_ten?
|
163
|
-
when "
|
271
|
+
when "eleven?"
|
164
272
|
sig(args)
|
165
|
-
|
273
|
+
code_eleven?
|
274
|
+
when "twelve?"
|
275
|
+
sig(args)
|
276
|
+
code_twelve?
|
277
|
+
when "thirteen?"
|
278
|
+
sig(args)
|
279
|
+
code_thirteen?
|
280
|
+
when "fourteen?"
|
281
|
+
sig(args)
|
282
|
+
code_fourteen?
|
283
|
+
when "fifteen?"
|
284
|
+
sig(args)
|
285
|
+
code_fifteen?
|
286
|
+
when "sixteen?"
|
287
|
+
sig(args)
|
288
|
+
code_sixteen?
|
289
|
+
when "seventeen?"
|
290
|
+
sig(args)
|
291
|
+
code_seventeen?
|
292
|
+
when "eighteen?"
|
293
|
+
sig(args)
|
294
|
+
code_eighteen?
|
295
|
+
when "nineteen?"
|
296
|
+
sig(args)
|
297
|
+
code_nineteen?
|
298
|
+
when "twenty?"
|
299
|
+
sig(args)
|
300
|
+
code_twenty?
|
301
|
+
when "twenty_one?"
|
302
|
+
sig(args)
|
303
|
+
code_twenty_one?
|
304
|
+
when "twenty_two?"
|
305
|
+
sig(args)
|
306
|
+
code_twenty_two?
|
307
|
+
when "twenty_three?"
|
308
|
+
sig(args)
|
309
|
+
code_twenty_three?
|
310
|
+
when "twenty_four?"
|
311
|
+
sig(args)
|
312
|
+
code_twenty_four?
|
313
|
+
when "twenty_five?"
|
314
|
+
sig(args)
|
315
|
+
code_twenty_five?
|
316
|
+
when "twenty_six?"
|
317
|
+
sig(args)
|
318
|
+
code_twenty_six?
|
319
|
+
when "twenty_seven?"
|
320
|
+
sig(args)
|
321
|
+
code_twenty_seven?
|
322
|
+
when "twenty_eight?"
|
323
|
+
sig(args)
|
324
|
+
code_twenty_eight?
|
325
|
+
when "twenty_nine?"
|
326
|
+
sig(args)
|
327
|
+
code_twenty_nine?
|
328
|
+
when "thirty?"
|
329
|
+
sig(args)
|
330
|
+
code_thirty?
|
331
|
+
when "thirty_one?"
|
332
|
+
sig(args)
|
333
|
+
code_thirty_one?
|
334
|
+
when "thirty_two?"
|
335
|
+
sig(args)
|
336
|
+
code_thirty_two?
|
337
|
+
when "thirty_three?"
|
338
|
+
sig(args)
|
339
|
+
code_thirty_three?
|
340
|
+
when "thirty_four?"
|
341
|
+
sig(args)
|
342
|
+
code_thirty_four?
|
343
|
+
when "thirty_five?"
|
344
|
+
sig(args)
|
345
|
+
code_thirty_five?
|
346
|
+
when "thirty_six?"
|
347
|
+
sig(args)
|
348
|
+
code_thirty_six?
|
349
|
+
when "thirty_seven?"
|
350
|
+
sig(args)
|
351
|
+
code_thirty_seven?
|
352
|
+
when "thirty_eight?"
|
353
|
+
sig(args)
|
354
|
+
code_thirty_eight?
|
355
|
+
when "thirty_nine?"
|
356
|
+
sig(args)
|
357
|
+
code_thirty_nine?
|
358
|
+
when "forty?"
|
359
|
+
sig(args)
|
360
|
+
code_forty?
|
361
|
+
when "forty_one?"
|
362
|
+
sig(args)
|
363
|
+
code_forty_one?
|
364
|
+
when "forty_two?"
|
365
|
+
sig(args)
|
366
|
+
code_forty_two?
|
367
|
+
when "forty_three?"
|
368
|
+
sig(args)
|
369
|
+
code_forty_three?
|
370
|
+
when "forty_four?"
|
371
|
+
sig(args)
|
372
|
+
code_forty_four?
|
373
|
+
when "forty_five?"
|
374
|
+
sig(args)
|
375
|
+
code_forty_five?
|
376
|
+
when "forty_six?"
|
377
|
+
sig(args)
|
378
|
+
code_forty_six?
|
379
|
+
when "forty_seven?"
|
380
|
+
sig(args)
|
381
|
+
code_forty_seven?
|
382
|
+
when "forty_eight?"
|
383
|
+
sig(args)
|
384
|
+
code_forty_eight?
|
385
|
+
when "forty_nine?"
|
386
|
+
sig(args)
|
387
|
+
code_forty_nine?
|
388
|
+
when "fifty?"
|
389
|
+
sig(args)
|
390
|
+
code_fifty?
|
391
|
+
when "fifty_one?"
|
392
|
+
sig(args)
|
393
|
+
code_fifty_one?
|
394
|
+
when "fifty_two?"
|
395
|
+
sig(args)
|
396
|
+
code_fifty_two?
|
397
|
+
when "fifty_three?"
|
398
|
+
sig(args)
|
399
|
+
code_fifty_three?
|
400
|
+
when "fifty_four?"
|
401
|
+
sig(args)
|
402
|
+
code_fifty_four?
|
403
|
+
when "fifty_five?"
|
404
|
+
sig(args)
|
405
|
+
code_fifty_five?
|
406
|
+
when "fifty_six?"
|
407
|
+
sig(args)
|
408
|
+
code_fifty_six?
|
409
|
+
when "fifty_seven?"
|
410
|
+
sig(args)
|
411
|
+
code_fifty_seven?
|
412
|
+
when "fifty_eight?"
|
413
|
+
sig(args)
|
414
|
+
code_fifty_eight?
|
415
|
+
when "fifty_nine?"
|
416
|
+
sig(args)
|
417
|
+
code_fifty_nine?
|
418
|
+
when "sixty?"
|
419
|
+
sig(args)
|
420
|
+
code_sixty?
|
421
|
+
when "sixty_one?"
|
422
|
+
sig(args)
|
423
|
+
code_sixty_one?
|
424
|
+
when "sixty_two?"
|
425
|
+
sig(args)
|
426
|
+
code_sixty_two?
|
427
|
+
when "sixty_three?"
|
428
|
+
sig(args)
|
429
|
+
code_sixty_three?
|
430
|
+
when "sixty_four?"
|
431
|
+
sig(args)
|
432
|
+
code_sixty_four?
|
433
|
+
when "sixty_five?"
|
434
|
+
sig(args)
|
435
|
+
code_sixty_five?
|
436
|
+
when "sixty_six?"
|
437
|
+
sig(args)
|
438
|
+
code_sixty_six?
|
439
|
+
when "sixty_seven?"
|
440
|
+
sig(args)
|
441
|
+
code_sixty_seven?
|
442
|
+
when "sixty_eight?"
|
443
|
+
sig(args)
|
444
|
+
code_sixty_eight?
|
445
|
+
when "sixty_nine?"
|
446
|
+
sig(args)
|
447
|
+
code_sixty_nine?
|
448
|
+
when "seventy?"
|
449
|
+
sig(args)
|
450
|
+
code_seventy?
|
451
|
+
when "seventy_one?"
|
452
|
+
sig(args)
|
453
|
+
code_seventy_one?
|
454
|
+
when "seventy_two?"
|
455
|
+
sig(args)
|
456
|
+
code_seventy_two?
|
457
|
+
when "seventy_three?"
|
458
|
+
sig(args)
|
459
|
+
code_seventy_three?
|
460
|
+
when "seventy_four?"
|
461
|
+
sig(args)
|
462
|
+
code_seventy_four?
|
463
|
+
when "seventy_five?"
|
464
|
+
sig(args)
|
465
|
+
code_seventy_five?
|
466
|
+
when "seventy_six?"
|
467
|
+
sig(args)
|
468
|
+
code_seventy_six?
|
469
|
+
when "seventy_seven?"
|
470
|
+
sig(args)
|
471
|
+
code_seventy_seven?
|
472
|
+
when "seventy_eight?"
|
473
|
+
sig(args)
|
474
|
+
code_seventy_eight?
|
475
|
+
when "seventy_nine?"
|
476
|
+
sig(args)
|
477
|
+
code_seventy_nine?
|
478
|
+
when "eighty?"
|
479
|
+
sig(args)
|
480
|
+
code_eighty?
|
481
|
+
when "eighty_one?"
|
482
|
+
sig(args)
|
483
|
+
code_eighty_one?
|
484
|
+
when "eighty_two?"
|
485
|
+
sig(args)
|
486
|
+
code_eighty_two?
|
487
|
+
when "eighty_three?"
|
488
|
+
sig(args)
|
489
|
+
code_eighty_three?
|
490
|
+
when "eighty_four?"
|
491
|
+
sig(args)
|
492
|
+
code_eighty_four?
|
493
|
+
when "eighty_five?"
|
494
|
+
sig(args)
|
495
|
+
code_eighty_five?
|
496
|
+
when "eighty_six?"
|
497
|
+
sig(args)
|
498
|
+
code_eighty_six?
|
499
|
+
when "eighty_seven?"
|
500
|
+
sig(args)
|
501
|
+
code_eighty_seven?
|
502
|
+
when "eighty_eight?"
|
503
|
+
sig(args)
|
504
|
+
code_eighty_eight?
|
505
|
+
when "eighty_nine?"
|
506
|
+
sig(args)
|
507
|
+
code_eighty_nine?
|
508
|
+
when "ninety?"
|
509
|
+
sig(args)
|
510
|
+
code_ninety?
|
511
|
+
when "ninety_one?"
|
512
|
+
sig(args)
|
513
|
+
code_ninety_one?
|
514
|
+
when "ninety_two?"
|
515
|
+
sig(args)
|
516
|
+
code_ninety_two?
|
517
|
+
when "ninety_three?"
|
518
|
+
sig(args)
|
519
|
+
code_ninety_three?
|
520
|
+
when "ninety_four?"
|
521
|
+
sig(args)
|
522
|
+
code_ninety_four?
|
523
|
+
when "ninety_five?"
|
524
|
+
sig(args)
|
525
|
+
code_ninety_five?
|
526
|
+
when "ninety_six?"
|
527
|
+
sig(args)
|
528
|
+
code_ninety_six?
|
529
|
+
when "ninety_seven?"
|
530
|
+
sig(args)
|
531
|
+
code_ninety_seven?
|
532
|
+
when "ninety_eight?"
|
533
|
+
sig(args)
|
534
|
+
code_ninety_eight?
|
535
|
+
when "ninety_nine?"
|
536
|
+
sig(args)
|
537
|
+
code_ninety_nine?
|
538
|
+
when "one_hundred?"
|
539
|
+
sig(args)
|
540
|
+
code_one_hundred?
|
166
541
|
else
|
167
542
|
super
|
168
543
|
end
|
@@ -175,9 +550,7 @@ class Code
|
|
175
550
|
|
176
551
|
Boolean.new(
|
177
552
|
raw.any? do |code_element|
|
178
|
-
if code_argument.
|
179
|
-
true.tap { index += 1 }
|
180
|
-
else
|
553
|
+
if code_argument.is_a?(Function)
|
181
554
|
code_argument
|
182
555
|
.call(
|
183
556
|
arguments: List.new([code_element, Integer.new(index), self]),
|
@@ -185,6 +558,10 @@ class Code
|
|
185
558
|
)
|
186
559
|
.truthy?
|
187
560
|
.tap { index += 1 }
|
561
|
+
elsif code_argument.is_a?(Class)
|
562
|
+
code_element.is_a?(code_argument.raw).tap { index += 1 }
|
563
|
+
else
|
564
|
+
true.tap { index += 1 }
|
188
565
|
end
|
189
566
|
rescue Error::Next => e
|
190
567
|
e.code_value.tap { index += 1 }
|
@@ -206,27 +583,37 @@ class Code
|
|
206
583
|
List.new(raw - code_other.raw)
|
207
584
|
end
|
208
585
|
|
209
|
-
def code_detect(argument, **globals)
|
586
|
+
def code_detect(argument = nil, **globals)
|
210
587
|
code_argument = argument.to_code
|
211
588
|
|
212
589
|
raw.detect.with_index do |code_element, index|
|
213
|
-
code_argument.
|
214
|
-
|
215
|
-
|
216
|
-
|
590
|
+
if code_argument.is_a?(Function)
|
591
|
+
code_argument.call(
|
592
|
+
arguments: List.new([code_element, Integer.new(index), self]),
|
593
|
+
**globals
|
594
|
+
).truthy?
|
595
|
+
elsif code_argument.is_a?(Class)
|
596
|
+
code_element.is_a?(code_argument.raw)
|
597
|
+
else
|
598
|
+
false
|
599
|
+
end
|
217
600
|
rescue Error::Next => e
|
218
601
|
e.code_value
|
219
602
|
end || Nothing.new
|
220
603
|
end
|
221
604
|
|
222
|
-
def code_each(argument, **globals)
|
605
|
+
def code_each(argument = nil, **globals)
|
223
606
|
code_argument = argument.to_code
|
224
607
|
|
225
608
|
raw.each.with_index do |code_element, index|
|
226
|
-
code_argument.
|
227
|
-
|
228
|
-
|
229
|
-
|
609
|
+
if code_argument.is_a?(Function)
|
610
|
+
code_argument.call(
|
611
|
+
arguments: List.new([code_element, Integer.new(index), self]),
|
612
|
+
**globals
|
613
|
+
)
|
614
|
+
elsif code_argument.is_a?(Class)
|
615
|
+
code_argument.raw.new(code_element)
|
616
|
+
end
|
230
617
|
rescue Error::Next => e
|
231
618
|
e.code_value
|
232
619
|
end
|
@@ -282,6 +669,13 @@ class Code
|
|
282
669
|
code_n = n.to_code
|
283
670
|
n = code_n.raw
|
284
671
|
|
672
|
+
code_n.nothing? ? raw.dup.pop || Nothing.new : List.new(raw.dup.pop(n))
|
673
|
+
end
|
674
|
+
|
675
|
+
def code_pop!(n = nil)
|
676
|
+
code_n = n.to_code
|
677
|
+
n = code_n.raw
|
678
|
+
|
285
679
|
code_n.nothing? ? raw.pop || Nothing.new : List.new(raw.pop(n))
|
286
680
|
end
|
287
681
|
|
@@ -302,29 +696,41 @@ class Code
|
|
302
696
|
raw.last || Nothing.new
|
303
697
|
end
|
304
698
|
|
305
|
-
def code_map(argument, **globals)
|
699
|
+
def code_map(argument = nil, **globals)
|
306
700
|
code_argument = argument.to_code
|
307
701
|
|
308
702
|
List.new(
|
309
703
|
raw.map.with_index do |code_element, index|
|
310
|
-
code_argument.
|
311
|
-
|
312
|
-
|
313
|
-
|
704
|
+
if code_argument.is_a?(Function)
|
705
|
+
code_argument.call(
|
706
|
+
arguments: List.new([code_element, Integer.new(index), self]),
|
707
|
+
**globals
|
708
|
+
)
|
709
|
+
elsif code_argument.is_a?(Class)
|
710
|
+
code_argument.raw.new(code_element)
|
711
|
+
else
|
712
|
+
Nothing.new
|
713
|
+
end
|
314
714
|
rescue Error::Next => e
|
315
715
|
e.code_value
|
316
716
|
end
|
317
717
|
)
|
318
718
|
end
|
319
719
|
|
320
|
-
def code_map!(argument, **globals)
|
720
|
+
def code_map!(argument = nil, **globals)
|
321
721
|
code_argument = argument.to_code
|
322
722
|
|
323
723
|
raw.map!.with_index do |code_element, index|
|
324
|
-
code_argument.
|
325
|
-
|
326
|
-
|
327
|
-
|
724
|
+
if code_argument.is_a?(Function)
|
725
|
+
code_argument.call(
|
726
|
+
arguments: List.new([code_element, Integer.new(index), self]),
|
727
|
+
**globals
|
728
|
+
)
|
729
|
+
elsif code_argument.is_a?(Class)
|
730
|
+
code_argument.raw.new(code_element)
|
731
|
+
else
|
732
|
+
Nothing.new
|
733
|
+
end
|
328
734
|
rescue Error::Next => e
|
329
735
|
e.code_value
|
330
736
|
end
|
@@ -332,18 +738,18 @@ class Code
|
|
332
738
|
self
|
333
739
|
end
|
334
740
|
|
335
|
-
def code_max
|
336
|
-
raw.max || Nothing.new
|
337
|
-
end
|
338
|
-
|
339
|
-
def code_max_by(argument, **globals)
|
741
|
+
def code_max(argument = nil, **globals)
|
340
742
|
code_argument = argument.to_code
|
341
743
|
|
342
744
|
raw.max_by.with_index do |code_element, index|
|
343
|
-
code_argument.
|
344
|
-
|
345
|
-
|
346
|
-
|
745
|
+
if code_argument.is_a?(Function)
|
746
|
+
code_argument.call(
|
747
|
+
arguments: List.new([code_element, Integer.new(index), self]),
|
748
|
+
**globals
|
749
|
+
).truthy?
|
750
|
+
else
|
751
|
+
code_element
|
752
|
+
end
|
347
753
|
rescue Error::Next => e
|
348
754
|
e.code_value
|
349
755
|
end || Nothing.new
|
@@ -356,9 +762,7 @@ class Code
|
|
356
762
|
|
357
763
|
Boolean.new(
|
358
764
|
raw.none? do |code_element|
|
359
|
-
if code_argument.
|
360
|
-
code_element.truthy?.tap { index += 1 }
|
361
|
-
else
|
765
|
+
if code_argument.is_a?(Function)
|
362
766
|
code_argument
|
363
767
|
.call(
|
364
768
|
arguments: List.new([code_element, Integer.new(index), self]),
|
@@ -366,6 +770,10 @@ class Code
|
|
366
770
|
)
|
367
771
|
.truthy?
|
368
772
|
.tap { index += 1 }
|
773
|
+
elsif code_argument.is_a?(Class)
|
774
|
+
code_element.is_a?(code_argument.raw).tap { index += 1 }
|
775
|
+
else
|
776
|
+
true.tap { index += 1 }
|
369
777
|
end
|
370
778
|
rescue Error::Next => e
|
371
779
|
e.code_value.truthy?.tap { index += 1 }
|
@@ -373,17 +781,25 @@ class Code
|
|
373
781
|
)
|
374
782
|
end
|
375
783
|
|
376
|
-
def code_reduce(argument, **globals)
|
784
|
+
def code_reduce(argument = nil, **globals)
|
377
785
|
code_argument = argument.to_code
|
378
786
|
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
787
|
+
index = 0
|
788
|
+
|
789
|
+
raw.reduce do |code_acc, code_element|
|
790
|
+
if code_argument.is_a?(Function)
|
791
|
+
code_argument
|
792
|
+
.call(
|
793
|
+
arguments:
|
794
|
+
List.new([code_acc, code_element, Integer.new(index), self]),
|
795
|
+
**globals
|
796
|
+
)
|
797
|
+
.tap { index += 1 }
|
798
|
+
else
|
799
|
+
code_acc.tap { index += 1 }
|
800
|
+
end
|
385
801
|
rescue Error::Next => e
|
386
|
-
e.code_value
|
802
|
+
e.code_value.tap { index += 1 }
|
387
803
|
end || Nothing.new
|
388
804
|
end
|
389
805
|
|
@@ -398,9 +814,7 @@ class Code
|
|
398
814
|
|
399
815
|
List.new(
|
400
816
|
raw.select do |code_element|
|
401
|
-
if code_argument.
|
402
|
-
code_element.truthy?.tap { index += 1 }
|
403
|
-
else
|
817
|
+
if code_argument.is_a?(Function)
|
404
818
|
code_argument
|
405
819
|
.call(
|
406
820
|
arguments: List.new([code_element, Integer.new(index), self]),
|
@@ -408,6 +822,10 @@ class Code
|
|
408
822
|
)
|
409
823
|
.truthy?
|
410
824
|
.tap { index += 1 }
|
825
|
+
elsif code_argument.is_a?(Class)
|
826
|
+
code_element.is_a?(code_argument.raw).tap { index += 1 }
|
827
|
+
else
|
828
|
+
code_element.truthy?.tap { index += 1 }
|
411
829
|
end
|
412
830
|
rescue Error::Next => e
|
413
831
|
e.code_value.truhty?.tap { index += 1 }
|
@@ -421,9 +839,7 @@ class Code
|
|
421
839
|
index = 0
|
422
840
|
|
423
841
|
raw.select! do |code_element|
|
424
|
-
if code_argument.
|
425
|
-
code_element.truthy?.tap { index += 1 }
|
426
|
-
else
|
842
|
+
if code_argument.is_a?(Function)
|
427
843
|
code_argument
|
428
844
|
.call(
|
429
845
|
arguments: List.new([code_element, Integer.new(index), self]),
|
@@ -431,6 +847,10 @@ class Code
|
|
431
847
|
)
|
432
848
|
.truthy?
|
433
849
|
.tap { index += 1 }
|
850
|
+
elsif code_argument.is_a?(Class)
|
851
|
+
code_element.is_a?(code_argument.raw).tap { index += 1 }
|
852
|
+
else
|
853
|
+
code_element.truthy?.tap { index += 1 }
|
434
854
|
end
|
435
855
|
rescue Error::Next => e
|
436
856
|
e.code_value.truhty?.tap { index += 1 }
|
@@ -439,29 +859,41 @@ class Code
|
|
439
859
|
self
|
440
860
|
end
|
441
861
|
|
442
|
-
def code_select(argument, **globals)
|
862
|
+
def code_select(argument = nil, **globals)
|
443
863
|
code_argument = argument.to_code
|
444
864
|
|
445
865
|
List.new(
|
446
866
|
raw.select.with_index do |code_element, index|
|
447
|
-
code_argument.
|
448
|
-
|
449
|
-
|
450
|
-
|
867
|
+
if code_argument.is_a?(Function)
|
868
|
+
code_argument.call(
|
869
|
+
arguments: List.new([code_element, Integer.new(index), self]),
|
870
|
+
**globals
|
871
|
+
).truthy?
|
872
|
+
elsif code_argument.is_a?(Class)
|
873
|
+
code_element.is_a?(code_argument.raw)
|
874
|
+
else
|
875
|
+
false
|
876
|
+
end
|
451
877
|
rescue Error::Next => e
|
452
878
|
e.code_value.truthy?
|
453
879
|
end
|
454
880
|
)
|
455
881
|
end
|
456
882
|
|
457
|
-
def code_select!(argument, **globals)
|
883
|
+
def code_select!(argument = nil, **globals)
|
458
884
|
code_argument = argument.to_code
|
459
885
|
|
460
886
|
raw.select!.with_index do |code_element, index|
|
461
|
-
code_argument.
|
462
|
-
|
463
|
-
|
464
|
-
|
887
|
+
if code_argument.is_a?(Function)
|
888
|
+
code_argument.call(
|
889
|
+
arguments: List.new([code_element, Integer.new(index), self]),
|
890
|
+
**globals
|
891
|
+
).truthy?
|
892
|
+
elsif code_argument.is_a?(Class)
|
893
|
+
code_element.is_a?(code_argument.raw)
|
894
|
+
else
|
895
|
+
false
|
896
|
+
end
|
465
897
|
rescue Error::Next => e
|
466
898
|
e.code_value.truthy?
|
467
899
|
end
|
@@ -469,29 +901,41 @@ class Code
|
|
469
901
|
self
|
470
902
|
end
|
471
903
|
|
472
|
-
def code_reject(argument, **globals)
|
904
|
+
def code_reject(argument = nil, **globals)
|
473
905
|
code_argument = argument.to_code
|
474
906
|
|
475
907
|
List.new(
|
476
908
|
raw.reject.with_index do |code_element, index|
|
477
|
-
code_argument.
|
478
|
-
|
479
|
-
|
480
|
-
|
909
|
+
if code_argument.is_a?(Function)
|
910
|
+
code_argument.call(
|
911
|
+
arguments: List.new([code_element, Integer.new(index), self]),
|
912
|
+
**globals
|
913
|
+
).truthy?
|
914
|
+
elsif code_argument.is_a?(Class)
|
915
|
+
code_element.is_a?(code_argument.raw)
|
916
|
+
else
|
917
|
+
false
|
918
|
+
end
|
481
919
|
rescue Error::Next => e
|
482
920
|
e.code_value.truthy?
|
483
921
|
end
|
484
922
|
)
|
485
923
|
end
|
486
924
|
|
487
|
-
def code_reject!(argument, **globals)
|
925
|
+
def code_reject!(argument = nil, **globals)
|
488
926
|
code_argument = argument.to_code
|
489
927
|
|
490
928
|
raw.reject!.with_index do |code_element, index|
|
491
|
-
code_argument.
|
492
|
-
|
493
|
-
|
494
|
-
|
929
|
+
if code_argument.is_a?(Function)
|
930
|
+
code_argument.call(
|
931
|
+
arguments: List.new([code_element, Integer.new(index), self]),
|
932
|
+
**globals
|
933
|
+
).truthy?
|
934
|
+
elsif code_argument.is_a?(Class)
|
935
|
+
code_element.is_a?(code_argument.raw)
|
936
|
+
else
|
937
|
+
false
|
938
|
+
end
|
495
939
|
rescue Error::Next => e
|
496
940
|
e.code_value.truthy?
|
497
941
|
end
|