shenanigans 1.0.13 → 1.0.16

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/lib/shenanigans/array/caret.rb +3 -2
  3. data/lib/shenanigans/array/random_subarray.rb +7 -5
  4. data/lib/shenanigans/array/reductions.rb +13 -10
  5. data/lib/shenanigans/array/zip_with.rb +9 -12
  6. data/lib/shenanigans/array.rb +3 -3
  7. data/lib/shenanigans/hash/extract.rb +5 -4
  8. data/lib/shenanigans/hash/has_shape_pred.rb +6 -7
  9. data/lib/shenanigans/hash/to_ostruct.rb +8 -9
  10. data/lib/shenanigans/hash.rb +3 -3
  11. data/lib/shenanigans/integer/divisible_by.rb +13 -0
  12. data/lib/shenanigans/integer/string_length.rb +13 -0
  13. data/lib/shenanigans/integer.rb +2 -0
  14. data/lib/shenanigans/kernel/fn.rb +7 -6
  15. data/lib/shenanigans/kernel/prompt.rb +6 -7
  16. data/lib/shenanigans/kernel/require_optional.rb +8 -8
  17. data/lib/shenanigans/kernel/with.rb +4 -3
  18. data/lib/shenanigans/kernel.rb +4 -4
  19. data/lib/shenanigans/module/private_accessor.rb +6 -6
  20. data/lib/shenanigans/module.rb +1 -1
  21. data/lib/shenanigans/object/display.rb +5 -4
  22. data/lib/shenanigans/object.rb +1 -2
  23. data/lib/shenanigans/string/cmpi.rb +4 -3
  24. data/lib/shenanigans/string/in_groups_of.rb +4 -6
  25. data/lib/shenanigans/string.rb +2 -2
  26. data/lib/shenanigans.rb +7 -7
  27. metadata +81 -51
  28. data/Gemfile +0 -8
  29. data/doc/Array.html +0 -519
  30. data/doc/Fixnum.html +0 -215
  31. data/doc/Hash.html +0 -417
  32. data/doc/Kernel.html +0 -460
  33. data/doc/Module.html +0 -237
  34. data/doc/Object.html +0 -286
  35. data/doc/String.html +0 -299
  36. data/doc/_index.html +0 -185
  37. data/doc/class_list.html +0 -51
  38. data/doc/css/common.css +0 -1
  39. data/doc/css/full_list.css +0 -58
  40. data/doc/css/style.css +0 -499
  41. data/doc/file.README.html +0 -160
  42. data/doc/file_list.html +0 -56
  43. data/doc/frames.html +0 -17
  44. data/doc/index.html +0 -160
  45. data/doc/js/app.js +0 -248
  46. data/doc/js/full_list.js +0 -216
  47. data/doc/js/jquery.js +0 -4
  48. data/doc/method_list.html +0 -187
  49. data/doc/top-level-namespace.html +0 -112
  50. data/lib/shenanigans/fixnum/string_length.rb +0 -14
  51. data/lib/shenanigans/fixnum.rb +0 -1
  52. data/lib/shenanigans/object/it.rb +0 -9
  53. data/test/array/test_caret.rb +0 -9
  54. data/test/array/test_random_subarray.rb +0 -10
  55. data/test/array/test_reductions.rb +0 -27
  56. data/test/array/test_zip_with.rb +0 -14
  57. data/test/fixnum/test_string_length.rb +0 -16
  58. data/test/hash/test_extract.rb +0 -11
  59. data/test/hash/test_has_shape_pred.rb +0 -40
  60. data/test/hash/test_to_ostruct.rb +0 -23
  61. data/test/kernel/test_fn.rb +0 -14
  62. data/test/kernel/test_prompt.rb +0 -27
  63. data/test/kernel/test_require_optional.rb +0 -17
  64. data/test/kernel/test_with.rb +0 -12
  65. data/test/module/test_private_accessor.rb +0 -21
  66. data/test/object/test_display.rb +0 -36
  67. data/test/object/test_it.rb +0 -10
  68. data/test/string/test_cmpi.rb +0 -10
  69. data/test/string/test_in_groups_of.rb +0 -11
data/doc/Array.html DELETED
@@ -1,519 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>
7
- Class: Array
8
-
9
- &mdash; Documentation by YARD 0.9.12
10
-
11
- </title>
12
-
13
- <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
14
-
15
- <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
16
-
17
- <script type="text/javascript" charset="utf-8">
18
- pathId = "Array";
19
- relpath = '';
20
- </script>
21
-
22
-
23
- <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
24
-
25
- <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
26
-
27
-
28
- </head>
29
- <body>
30
- <div class="nav_wrap">
31
- <iframe id="nav" src="class_list.html?1"></iframe>
32
- <div id="resizer"></div>
33
- </div>
34
-
35
- <div id="main" tabindex="-1">
36
- <div id="header">
37
- <div id="menu">
38
-
39
- <a href="_index.html">Index (A)</a> &raquo;
40
-
41
-
42
- <span class="title">Array</span>
43
-
44
- </div>
45
-
46
- <div id="search">
47
-
48
- <a class="full_list_link" id="class_list_link"
49
- href="class_list.html">
50
-
51
- <svg width="24" height="24">
52
- <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
- <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
- <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
- </svg>
56
- </a>
57
-
58
- </div>
59
- <div class="clear"></div>
60
- </div>
61
-
62
- <div id="content"><h1>Class: Array
63
-
64
-
65
-
66
- </h1>
67
- <div class="box_info">
68
-
69
- <dl>
70
- <dt>Inherits:</dt>
71
- <dd>
72
- <span class="inheritName"><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></span>
73
-
74
- <ul class="fullTree">
75
- <li><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></li>
76
-
77
- <li class="next">Array</li>
78
-
79
- </ul>
80
- <a href="#" class="inheritanceTree">show all</a>
81
-
82
- </dd>
83
- </dl>
84
-
85
-
86
-
87
-
88
-
89
-
90
-
91
-
92
-
93
-
94
-
95
- <dl>
96
- <dt>Defined in:</dt>
97
- <dd>lib/shenanigans/array/caret.rb<span class="defines">,<br />
98
- lib/shenanigans/array/zip_with.rb,<br /> lib/shenanigans/array/reductions.rb,<br /> lib/shenanigans/array/random_subarray.rb</span>
99
- </dd>
100
- </dl>
101
-
102
- </div>
103
-
104
-
105
-
106
-
107
-
108
-
109
-
110
-
111
-
112
- <h2>
113
- Instance Method Summary
114
- <small><a href="#" class="summary_toggle">collapse</a></small>
115
- </h2>
116
-
117
- <ul class="summary">
118
-
119
- <li class="public ">
120
- <span class="summary_signature">
121
-
122
- <a href="#%5E-instance_method" title="#^ (instance method)">#<strong>^</strong>(other) &#x21d2; Object </a>
123
-
124
-
125
-
126
- </span>
127
-
128
-
129
-
130
-
131
-
132
-
133
-
134
-
135
-
136
- <span class="summary_desc"><div class='inline'>
137
- <p>Returns an array containing elements exclusive between two arrays.</p>
138
- </div></span>
139
-
140
- </li>
141
-
142
-
143
- <li class="public ">
144
- <span class="summary_signature">
145
-
146
- <a href="#random_subarray-instance_method" title="#random_subarray (instance method)">#<strong>random_subarray</strong>(n = 1) &#x21d2; Object </a>
147
-
148
-
149
-
150
- </span>
151
-
152
-
153
-
154
-
155
-
156
-
157
-
158
-
159
-
160
- <span class="summary_desc"><div class='inline'>
161
- <p>Generates random subarrays.</p>
162
- </div></span>
163
-
164
- </li>
165
-
166
-
167
- <li class="public ">
168
- <span class="summary_signature">
169
-
170
- <a href="#reductions-instance_method" title="#reductions (instance method)">#<strong>reductions</strong>(*args, &amp;block) &#x21d2; Object </a>
171
-
172
-
173
-
174
- </span>
175
-
176
-
177
-
178
-
179
-
180
-
181
-
182
-
183
-
184
- <span class="summary_desc"><div class='inline'>
185
- <p>Similar to <code>reduce</code>/<code>inject</code>, but also returns
186
- intermediate values.</p>
187
- </div></span>
188
-
189
- </li>
190
-
191
-
192
- <li class="public ">
193
- <span class="summary_signature">
194
-
195
- <a href="#zip_with-instance_method" title="#zip_with (instance method)">#<strong>zip_with</strong>(other, op = nil) &#x21d2; Object </a>
196
-
197
-
198
-
199
- </span>
200
-
201
-
202
-
203
-
204
-
205
-
206
-
207
-
208
-
209
- <span class="summary_desc"><div class='inline'>
210
- <p>Zip <code>self</code> with <code>other</code>, combining the elements with
211
- the provided block or symbol.</p>
212
- </div></span>
213
-
214
- </li>
215
-
216
-
217
- </ul>
218
-
219
-
220
-
221
-
222
- <div id="instance_method_details" class="method_details_list">
223
- <h2>Instance Method Details</h2>
224
-
225
-
226
- <div class="method_details first">
227
- <h3 class="signature first" id="^-instance_method">
228
-
229
- #<strong>^</strong>(other) &#x21d2; <tt><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></tt>
230
-
231
-
232
-
233
-
234
-
235
- </h3><div class="docstring">
236
- <div class="discussion">
237
-
238
- <p>Returns an array containing elements exclusive between two arrays.</p>
239
-
240
- <pre class="code ruby"><code class="ruby"><span class='lbracket'>[</span><span class='int'>1</span><span class='comma'>,</span> <span class='int'>2</span><span class='comma'>,</span> <span class='int'>3</span><span class='rbracket'>]</span> <span class='op'>^</span> <span class='lbracket'>[</span><span class='int'>1</span><span class='comma'>,</span> <span class='int'>2</span><span class='comma'>,</span> <span class='int'>4</span><span class='rbracket'>]</span>
241
- <span class='comment'>#=&gt; [3, 4]
242
- </span></code></pre>
243
-
244
-
245
- </div>
246
- </div>
247
- <div class="tags">
248
-
249
-
250
- </div><table class="source_code">
251
- <tr>
252
- <td>
253
- <pre class="lines">
254
-
255
-
256
- 5
257
- 6
258
- 7</pre>
259
- </td>
260
- <td>
261
- <pre class="code"><span class="info file"># File 'lib/shenanigans/array/caret.rb', line 5</span>
262
-
263
- <span class='kw'>def</span> <span class='op'>^</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
264
- <span class='lparen'>(</span><span class='kw'>self</span> <span class='op'>-</span> <span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span> <span class='op'>|</span> <span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span> <span class='op'>-</span> <span class='kw'>self</span><span class='rparen'>)</span>
265
- <span class='kw'>end</span></pre>
266
- </td>
267
- </tr>
268
- </table>
269
- </div>
270
-
271
- <div class="method_details ">
272
- <h3 class="signature " id="random_subarray-instance_method">
273
-
274
- #<strong>random_subarray</strong>(n = 1) &#x21d2; <tt><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></tt>
275
-
276
-
277
-
278
-
279
-
280
- </h3><div class="docstring">
281
- <div class="discussion">
282
-
283
- <p>Generates random subarrays. Uses random numbers and bit-fiddling to assure
284
- performant uniform distributions even for large arrays.</p>
285
-
286
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_a'>a</span> <span class='op'>=</span> <span class='op'>*</span><span class='int'>1</span><span class='op'>..</span><span class='int'>5</span>
287
- <span class='id identifier rubyid_a'>a</span><span class='period'>.</span><span class='id identifier rubyid_random_subarray'>random_subarray</span><span class='lparen'>(</span><span class='int'>3</span><span class='rparen'>)</span>
288
- <span class='comment'>#=&gt; [[1, 3, 5], [2, 4], [1, 3, 4, 5]]
289
- </span></code></pre>
290
-
291
-
292
- </div>
293
- </div>
294
- <div class="tags">
295
-
296
- <p class="tag_title">Raises:</p>
297
- <ul class="raise">
298
-
299
- <li>
300
-
301
-
302
- <span class='type'>(<tt>ArgumentError</tt>)</span>
303
-
304
-
305
-
306
- </li>
307
-
308
- </ul>
309
-
310
- </div><table class="source_code">
311
- <tr>
312
- <td>
313
- <pre class="lines">
314
-
315
-
316
- 9
317
- 10
318
- 11
319
- 12
320
- 13
321
- 14
322
- 15</pre>
323
- </td>
324
- <td>
325
- <pre class="code"><span class="info file"># File 'lib/shenanigans/array/random_subarray.rb', line 9</span>
326
-
327
- <span class='kw'>def</span> <span class='id identifier rubyid_random_subarray'>random_subarray</span><span class='lparen'>(</span><span class='id identifier rubyid_n'>n</span><span class='op'>=</span><span class='int'>1</span><span class='rparen'>)</span>
328
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>negative argument</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_n'>n</span> <span class='op'>&lt;</span> <span class='int'>0</span>
329
- <span class='lparen'>(</span><span class='int'>1</span><span class='op'>..</span><span class='id identifier rubyid_n'>n</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span>
330
- <span class='id identifier rubyid_r'>r</span> <span class='op'>=</span> <span class='id identifier rubyid_rand'>rand</span><span class='lparen'>(</span><span class='int'>2</span><span class='op'>**</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='rparen'>)</span>
331
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_select'>select</span><span class='period'>.</span><span class='id identifier rubyid_with_index'>with_index</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid__'>_</span><span class='comma'>,</span> <span class='id identifier rubyid_i'>i</span><span class='op'>|</span> <span class='id identifier rubyid_r'>r</span><span class='lbracket'>[</span><span class='id identifier rubyid_i'>i</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='int'>1</span> <span class='rbrace'>}</span>
332
- <span class='kw'>end</span>
333
- <span class='kw'>end</span></pre>
334
- </td>
335
- </tr>
336
- </table>
337
- </div>
338
-
339
- <div class="method_details ">
340
- <h3 class="signature " id="reductions-instance_method">
341
-
342
- #<strong>reductions</strong>(*args, &amp;block) &#x21d2; <tt><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></tt>
343
-
344
-
345
-
346
-
347
-
348
- </h3><div class="docstring">
349
- <div class="discussion">
350
-
351
- <p>Similar to <code>reduce</code>/<code>inject</code>, but also returns
352
- intermediate values. Has the same interface as
353
- <code>reduce</code>/<code>inject</code>, so an initial value, an oprator or
354
- both can be supplied. This method may eventually be moved to the
355
- <code>Enumerable</code> module.</p>
356
-
357
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_a'>a</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='op'>*</span><span class='int'>1</span><span class='op'>..</span><span class='int'>4</span><span class='rbracket'>]</span>
358
- <span class='id identifier rubyid_a'>a</span><span class='period'>.</span><span class='id identifier rubyid_reductions'>reductions</span><span class='lparen'>(</span><span class='symbol'>:+</span><span class='rparen'>)</span>
359
- <span class='comment'>#=&gt; 10
360
- </span><span class='id identifier rubyid_a'>a</span><span class='period'>.</span><span class='id identifier rubyid_reductions'>reductions</span><span class='lparen'>(</span><span class='int'>50</span><span class='comma'>,</span> <span class='symbol'>:+</span><span class='rparen'>)</span>
361
- <span class='comment'>#=&gt; 60
362
- </span><span class='qwords_beg'>%w(</span><span class='tstring_content'>a</span><span class='words_sep'> </span><span class='tstring_content'>b</span><span class='words_sep'> </span><span class='tstring_content'>c</span><span class='tstring_end'>)</span></span><span class='period'>.</span><span class='id identifier rubyid_reductions'>reductions</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_s1'>s1</span><span class='comma'>,</span> <span class='id identifier rubyid_s2'>s2</span><span class='op'>|</span> <span class='id identifier rubyid_s1'>s1</span><span class='op'>+</span><span class='id identifier rubyid_s2'>s2</span> <span class='rbrace'>}</span>
363
- <span class='comment'>#=&gt; [&quot;a&quot;, &quot;ab&quot;, &quot;abc&quot;]
364
- </span></code></pre>
365
-
366
-
367
- </div>
368
- </div>
369
- <div class="tags">
370
-
371
- <p class="tag_title">Raises:</p>
372
- <ul class="raise">
373
-
374
- <li>
375
-
376
-
377
- <span class='type'>(<tt>ArgumentError</tt>)</span>
378
-
379
-
380
-
381
- </li>
382
-
383
- </ul>
384
-
385
- </div><table class="source_code">
386
- <tr>
387
- <td>
388
- <pre class="lines">
389
-
390
-
391
- 11
392
- 12
393
- 13
394
- 14
395
- 15
396
- 16
397
- 17
398
- 18
399
- 19
400
- 20
401
- 21
402
- 22
403
- 23
404
- 24
405
- 25
406
- 26
407
- 27
408
- 28</pre>
409
- </td>
410
- <td>
411
- <pre class="code"><span class="info file"># File 'lib/shenanigans/array/reductions.rb', line 11</span>
412
-
413
- <span class='kw'>def</span> <span class='id identifier rubyid_reductions'>reductions</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
414
- <span class='id identifier rubyid_arr'>arr</span> <span class='op'>=</span> <span class='id identifier rubyid_dup'>dup</span>
415
-
416
- <span class='kw'>if</span> <span class='id identifier rubyid_args'>args</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>==</span> <span class='int'>1</span>
417
- <span class='const'>Symbol</span> <span class='op'>===</span> <span class='lparen'>(</span><span class='id identifier rubyid_arg'>arg</span> <span class='op'>=</span> <span class='id identifier rubyid_args'>args</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_op'>op</span> <span class='op'>=</span> <span class='id identifier rubyid_arg'>arg</span> <span class='op'>:</span> <span class='id identifier rubyid_initial'>initial</span> <span class='op'>=</span> <span class='id identifier rubyid_arg'>arg</span>
418
- <span class='kw'>else</span>
419
- <span class='id identifier rubyid_initial'>initial</span><span class='comma'>,</span> <span class='id identifier rubyid_op'>op</span><span class='comma'>,</span> <span class='id identifier rubyid__'>_</span> <span class='op'>=</span> <span class='id identifier rubyid_args'>args</span>
420
- <span class='kw'>end</span>
421
-
422
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Need an operator or block</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_op'>op</span> <span class='op'>||</span> <span class='id identifier rubyid_block'>block</span>
423
-
424
- <span class='id identifier rubyid_initial'>initial</span> <span class='op'>||=</span> <span class='id identifier rubyid_arr'>arr</span><span class='period'>.</span><span class='id identifier rubyid_shift'>shift</span>
425
-
426
- <span class='id identifier rubyid_arr'>arr</span><span class='period'>.</span><span class='id identifier rubyid_inject'>inject</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_initial'>initial</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='id identifier rubyid_initial'>initial</span><span class='rbracket'>]</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='lparen'>(</span><span class='id identifier rubyid_acc'>acc</span><span class='comma'>,</span> <span class='id identifier rubyid_result'>result</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_el'>el</span><span class='op'>|</span>
427
- <span class='id identifier rubyid_val'>val</span> <span class='op'>=</span> <span class='id identifier rubyid_op'>op</span> <span class='op'>?</span> <span class='id identifier rubyid_acc'>acc</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_op'>op</span><span class='comma'>,</span> <span class='id identifier rubyid_el'>el</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='kw'>yield</span><span class='lparen'>(</span><span class='id identifier rubyid_acc'>acc</span><span class='comma'>,</span> <span class='id identifier rubyid_el'>el</span><span class='rparen'>)</span>
428
- <span class='lbracket'>[</span><span class='id identifier rubyid_val'>val</span><span class='comma'>,</span> <span class='id identifier rubyid_result'>result</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_val'>val</span><span class='rbracket'>]</span>
429
- <span class='kw'>end</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span>
430
- <span class='kw'>end</span></pre>
431
- </td>
432
- </tr>
433
- </table>
434
- </div>
435
-
436
- <div class="method_details ">
437
- <h3 class="signature " id="zip_with-instance_method">
438
-
439
- #<strong>zip_with</strong>(other, op = nil) &#x21d2; <tt><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></tt>
440
-
441
-
442
-
443
-
444
-
445
- </h3><div class="docstring">
446
- <div class="discussion">
447
-
448
- <p>Zip <code>self</code> with <code>other</code>, combining the elements with
449
- the provided block or symbol. The resulting array will be as long as the
450
- shorter of the two arrays.</p>
451
-
452
- <pre class="code ruby"><code class="ruby"><span class='lbracket'>[</span><span class='int'>1</span><span class='comma'>,</span><span class='int'>2</span><span class='comma'>,</span><span class='int'>3</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_zip_with'>zip_with</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='int'>6</span><span class='comma'>,</span><span class='int'>5</span><span class='comma'>,</span><span class='int'>4</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='symbol'>:+</span><span class='rparen'>)</span>
453
- <span class='comment'>#=&gt; [7, 7, 7]
454
- </span><span class='qwords_beg'>%w(</span><span class='tstring_content'>a</span><span class='words_sep'> </span><span class='tstring_content'>b</span><span class='tstring_end'>)</span></span><span class='period'>.</span><span class='id identifier rubyid_zip_with'>zip_with</span><span class='lparen'>(</span><span class='qwords_beg'>%w(</span><span class='tstring_content'>c</span><span class='words_sep'> </span><span class='tstring_content'>d</span><span class='tstring_end'>)</span></span><span class='comma'>,</span> <span class='symbol'>:+</span><span class='rparen'>)</span>
455
- <span class='comment'>#=&gt; [&quot;ac&quot;, &quot;bd&quot;]
456
- </span></code></pre>
457
-
458
- <p>For more complex combinations, a block can be provided:</p>
459
-
460
- <pre class="code ruby"><code class="ruby"><span class='lbracket'>[</span><span class='int'>1</span><span class='comma'>,</span><span class='int'>2</span><span class='comma'>,</span><span class='int'>3</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_zip_with'>zip_with</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='int'>6</span><span class='comma'>,</span><span class='int'>5</span><span class='comma'>,</span><span class='int'>4</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_a'>a</span><span class='comma'>,</span><span class='id identifier rubyid_b'>b</span><span class='op'>|</span> <span class='int'>3</span><span class='op'>*</span><span class='id identifier rubyid_a'>a</span><span class='op'>+</span><span class='int'>2</span><span class='op'>*</span><span class='id identifier rubyid_b'>b</span> <span class='rbrace'>}</span>
461
- <span class='comment'>#=&gt; [15, 16, 17]
462
- </span></code></pre>
463
-
464
-
465
- </div>
466
- </div>
467
- <div class="tags">
468
-
469
-
470
- </div><table class="source_code">
471
- <tr>
472
- <td>
473
- <pre class="lines">
474
-
475
-
476
- 16
477
- 17
478
- 18
479
- 19
480
- 20
481
- 21
482
- 22
483
- 23
484
- 24
485
- 25
486
- 26</pre>
487
- </td>
488
- <td>
489
- <pre class="code"><span class="info file"># File 'lib/shenanigans/array/zip_with.rb', line 16</span>
490
-
491
- <span class='kw'>def</span> <span class='id identifier rubyid_zip_with'>zip_with</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='comma'>,</span> <span class='id identifier rubyid_op'>op</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
492
- <span class='kw'>return</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> <span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> <span class='op'>||</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
493
- <span class='id identifier rubyid_clipped'>clipped</span> <span class='op'>=</span> <span class='kw'>self</span><span class='lbracket'>[</span><span class='int'>0</span><span class='op'>..</span><span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span>
494
- <span class='id identifier rubyid_zipped'>zipped</span> <span class='op'>=</span> <span class='id identifier rubyid_clipped'>clipped</span><span class='period'>.</span><span class='id identifier rubyid_zip'>zip</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
495
-
496
- <span class='kw'>if</span> <span class='id identifier rubyid_op'>op</span>
497
- <span class='id identifier rubyid_zipped'>zipped</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_a'>a</span><span class='comma'>,</span> <span class='id identifier rubyid_b'>b</span><span class='op'>|</span> <span class='id identifier rubyid_a'>a</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_op'>op</span><span class='comma'>,</span> <span class='id identifier rubyid_b'>b</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
498
- <span class='kw'>else</span>
499
- <span class='id identifier rubyid_zipped'>zipped</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_a'>a</span><span class='comma'>,</span> <span class='id identifier rubyid_b'>b</span><span class='op'>|</span> <span class='kw'>yield</span><span class='lparen'>(</span><span class='id identifier rubyid_a'>a</span><span class='comma'>,</span> <span class='id identifier rubyid_b'>b</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
500
- <span class='kw'>end</span>
501
- <span class='kw'>end</span></pre>
502
- </td>
503
- </tr>
504
- </table>
505
- </div>
506
-
507
- </div>
508
-
509
- </div>
510
-
511
- <div id="footer">
512
- Generated on Thu Feb 1 16:36:54 2018 by
513
- <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
514
- 0.9.12 (ruby-2.5.0).
515
- </div>
516
-
517
- </div>
518
- </body>
519
- </html>