shenanigans 1.0.13 → 1.0.16

Sign up to get free protection for your applications and to get access to all the features.
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>