ruff 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -43,7 +43,7 @@
43
43
 
44
44
  <ul id="full_list" class="class">
45
45
  <li id="object_" class="odd"><div class="item" style="padding-left:30px"><span class='object_link'><a href="top-level-namespace.html" title="Top Level Namespace (root)">Top Level Namespace</a></span></div></li>
46
- <li id='object_Ruff' class='even'><div class='item' style='padding-left:30px'><a class='toggle'></a> <span class='object_link'><a href="Ruff.html" title="Ruff (module)">Ruff</a></span><small class='search_info'>Top Level Namespace</small></div><ul><li id='object_Ruff::Effect' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="Ruff/Effect.html" title="Ruff::Effect (class)">Effect</a></span> &lt; Object<small class='search_info'>Ruff</small></div></li><li id='object_Ruff::Handler' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="Ruff/Handler.html" title="Ruff::Handler (class)">Handler</a></span> &lt; Object<small class='search_info'>Ruff</small></div></li><li id='object_Ruff::Standard' class='collapsed odd'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="Ruff/Standard.html" title="Ruff::Standard (module)">Standard</a></span><small class='search_info'>Ruff</small></div><ul><li id='object_Ruff::Standard::CurrentTime' class='collapsed'><div class='item' style='padding-left:60px'><a class='toggle'></a> <span class='object_link'><a href="Ruff/Standard/CurrentTime.html" title="Ruff::Standard::CurrentTime (module)">CurrentTime</a></span><small class='search_info'>Ruff::Standard</small></div><ul><li id='object_Ruff::Standard::CurrentTime::Instance' class='collapsed'><div class='item' style='padding-left:75px'><span class='object_link'><a href="Ruff/Standard/CurrentTime/Instance.html" title="Ruff::Standard::CurrentTime::Instance (class)">Instance</a></span> &lt; Object<small class='search_info'>Ruff::Standard::CurrentTime</small></div></li></ul></li><li id='object_Ruff::Standard::Defer' class='collapsed'><div class='item' style='padding-left:60px'><a class='toggle'></a> <span class='object_link'><a href="Ruff/Standard/Defer.html" title="Ruff::Standard::Defer (module)">Defer</a></span><small class='search_info'>Ruff::Standard</small></div><ul><li id='object_Ruff::Standard::Defer::Instance' class='collapsed'><div class='item' style='padding-left:75px'><span class='object_link'><a href="Ruff/Standard/Defer/Instance.html" title="Ruff::Standard::Defer::Instance (class)">Instance</a></span> &lt; Object<small class='search_info'>Ruff::Standard::Defer</small></div></li></ul></li><li id='object_Ruff::Standard::State' class='collapsed'><div class='item' style='padding-left:60px'><a class='toggle'></a> <span class='object_link'><a href="Ruff/Standard/State.html" title="Ruff::Standard::State (module)">State</a></span><small class='search_info'>Ruff::Standard</small></div><ul><li id='object_Ruff::Standard::State::Instance' class='collapsed'><div class='item' style='padding-left:75px'><span class='object_link'><a href="Ruff/Standard/State/Instance.html" title="Ruff::Standard::State::Instance (class)">Instance</a></span> &lt; Object<small class='search_info'>Ruff::Standard::State</small></div></li></ul></li></ul></li><li id='object_Ruff::Throws' class='collapsed even'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="Ruff/Throws.html" title="Ruff::Throws (module)">Throws</a></span><small class='search_info'>Ruff</small></div><ul><li id='object_Ruff::Throws::Eff' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Ruff/Throws/Eff.html" title="Ruff::Throws::Eff (class)">Eff</a></span> &lt; Object<small class='search_info'>Ruff::Throws</small></div></li><li id='object_Ruff::Throws::Resend' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Ruff/Throws/Resend.html" title="Ruff::Throws::Resend (class)">Resend</a></span> &lt; Object<small class='search_info'>Ruff::Throws</small></div></li></ul></li></ul></li>
46
+ <li id='object_Ruff' class='even'><div class='item' style='padding-left:30px'><a class='toggle'></a> <span class='object_link'><a href="Ruff.html" title="Ruff (module)">Ruff</a></span><small class='search_info'>Top Level Namespace</small></div><ul><li id='object_Ruff::Effect' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="Ruff/Effect.html" title="Ruff::Effect (class)">Effect</a></span> &lt; Object<small class='search_info'>Ruff</small></div></li><li id='object_Ruff::Handler' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="Ruff/Handler.html" title="Ruff::Handler (class)">Handler</a></span> &lt; Object<small class='search_info'>Ruff</small></div></li><li id='object_Ruff::Standard' class='collapsed odd'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="Ruff/Standard.html" title="Ruff::Standard (module)">Standard</a></span><small class='search_info'>Ruff</small></div><ul><li id='object_Ruff::Standard::CurrentTime' class='collapsed'><div class='item' style='padding-left:60px'><a class='toggle'></a> <span class='object_link'><a href="Ruff/Standard/CurrentTime.html" title="Ruff::Standard::CurrentTime (module)">CurrentTime</a></span><small class='search_info'>Ruff::Standard</small></div><ul><li id='object_Ruff::Standard::CurrentTime::Instance' class='collapsed'><div class='item' style='padding-left:75px'><span class='object_link'><a href="Ruff/Standard/CurrentTime/Instance.html" title="Ruff::Standard::CurrentTime::Instance (class)">Instance</a></span> &lt; Object<small class='search_info'>Ruff::Standard::CurrentTime</small></div></li></ul></li><li id='object_Ruff::Standard::Defer' class='collapsed'><div class='item' style='padding-left:60px'><a class='toggle'></a> <span class='object_link'><a href="Ruff/Standard/Defer.html" title="Ruff::Standard::Defer (module)">Defer</a></span><small class='search_info'>Ruff::Standard</small></div><ul><li id='object_Ruff::Standard::Defer::Instance' class='collapsed'><div class='item' style='padding-left:75px'><span class='object_link'><a href="Ruff/Standard/Defer/Instance.html" title="Ruff::Standard::Defer::Instance (class)">Instance</a></span> &lt; Object<small class='search_info'>Ruff::Standard::Defer</small></div></li></ul></li><li id='object_Ruff::Standard::MeasureTime' class='collapsed'><div class='item' style='padding-left:60px'><a class='toggle'></a> <span class='object_link'><a href="Ruff/Standard/MeasureTime.html" title="Ruff::Standard::MeasureTime (module)">MeasureTime</a></span><small class='search_info'>Ruff::Standard</small></div><ul><li id='object_Ruff::Standard::MeasureTime::Instance' class='collapsed'><div class='item' style='padding-left:75px'><span class='object_link'><a href="Ruff/Standard/MeasureTime/Instance.html" title="Ruff::Standard::MeasureTime::Instance (class)">Instance</a></span> &lt; Object<small class='search_info'>Ruff::Standard::MeasureTime</small></div></li></ul></li><li id='object_Ruff::Standard::State' class='collapsed'><div class='item' style='padding-left:60px'><a class='toggle'></a> <span class='object_link'><a href="Ruff/Standard/State.html" title="Ruff::Standard::State (module)">State</a></span><small class='search_info'>Ruff::Standard</small></div><ul><li id='object_Ruff::Standard::State::Instance' class='collapsed'><div class='item' style='padding-left:75px'><span class='object_link'><a href="Ruff/Standard/State/Instance.html" title="Ruff::Standard::State::Instance (class)">Instance</a></span> &lt; Object<small class='search_info'>Ruff::Standard::State</small></div></li></ul></li></ul></li><li id='object_Ruff::Throws' class='collapsed even'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="Ruff/Throws.html" title="Ruff::Throws (module)">Throws</a></span><small class='search_info'>Ruff</small></div><ul><li id='object_Ruff::Throws::Eff' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Ruff/Throws/Eff.html" title="Ruff::Throws::Eff (class)">Eff</a></span> &lt; Object<small class='search_info'>Ruff::Throws</small></div></li><li id='object_Ruff::Throws::Resend' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Ruff/Throws/Resend.html" title="Ruff::Throws::Resend (class)">Resend</a></span> &lt; Object<small class='search_info'>Ruff::Throws</small></div></li></ul></li></ul></li>
47
47
 
48
48
  </ul>
49
49
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  File: README
8
8
 
9
- &mdash; Ruff 1.0.1 Documentation
9
+ &mdash; Ruff 1.1.0 Documentation
10
10
 
11
11
  </title>
12
12
 
@@ -146,9 +146,9 @@
146
146
  </div></div>
147
147
 
148
148
  <div id="footer">
149
- Generated on Fri Oct 4 13:57:07 2019 by
149
+ Generated on Fri Oct 4 21:12:21 2019 by
150
150
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
151
- 0.9.20 (ruby-2.6.4).
151
+ 0.9.20 (ruby-2.6.5).
152
152
  </div>
153
153
 
154
154
  </div>
@@ -2,7 +2,7 @@
2
2
  <html>
3
3
  <head>
4
4
  <meta charset="utf-8">
5
- <title>Ruff 1.0.1 Documentation</title>
5
+ <title>Ruff 1.1.0 Documentation</title>
6
6
  </head>
7
7
  <script type="text/javascript" charset="utf-8">
8
8
  var match = unescape(window.location.hash).match(/^#!(.+)/);
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  File: README
8
8
 
9
- &mdash; Ruff 1.0.1 Documentation
9
+ &mdash; Ruff 1.1.0 Documentation
10
10
 
11
11
  </title>
12
12
 
@@ -146,9 +146,9 @@
146
146
  </div></div>
147
147
 
148
148
  <div id="footer">
149
- Generated on Fri Oct 4 13:57:07 2019 by
149
+ Generated on Fri Oct 4 21:12:21 2019 by
150
150
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
151
- 0.9.20 (ruby-2.6.4).
151
+ 0.9.20 (ruby-2.6.5).
152
152
  </div>
153
153
 
154
154
  </div>
@@ -92,6 +92,22 @@
92
92
  </li>
93
93
 
94
94
 
95
+ <li class="odd ">
96
+ <div class="item">
97
+ <span class='object_link'><a href="Ruff/Standard/MeasureTime/Instance.html#eff-instance_method" title="Ruff::Standard::MeasureTime::Instance#eff (method)">#eff</a></span>
98
+ <small>Ruff::Standard::MeasureTime::Instance</small>
99
+ </div>
100
+ </li>
101
+
102
+
103
+ <li class="even ">
104
+ <div class="item">
105
+ <span class='object_link'><a href="Ruff/Standard/MeasureTime.html#eff-instance_method" title="Ruff::Standard::MeasureTime#eff (method)">#eff</a></span>
106
+ <small>Ruff::Standard::MeasureTime</small>
107
+ </div>
108
+ </li>
109
+
110
+
95
111
  <li class="odd ">
96
112
  <div class="item">
97
113
  <span class='object_link'><a href="Ruff/Standard/State/Instance.html#eff-instance_method" title="Ruff::Standard::State::Instance#eff (method)">#eff</a></span>
@@ -221,6 +237,14 @@
221
237
 
222
238
 
223
239
  <li class="odd ">
240
+ <div class="item">
241
+ <span class='object_link'><a href="Ruff/Standard/MeasureTime/Instance.html#initialize-instance_method" title="Ruff::Standard::MeasureTime::Instance#initialize (method)">#initialize</a></span>
242
+ <small>Ruff::Standard::MeasureTime::Instance</small>
243
+ </div>
244
+ </li>
245
+
246
+
247
+ <li class="even ">
224
248
  <div class="item">
225
249
  <span class='object_link'><a href="Ruff/Standard/State/Instance.html#initialize-instance_method" title="Ruff::Standard::State::Instance#initialize (method)">#initialize</a></span>
226
250
  <small>Ruff::Standard::State::Instance</small>
@@ -228,7 +252,7 @@
228
252
  </li>
229
253
 
230
254
 
231
- <li class="even ">
255
+ <li class="odd ">
232
256
  <div class="item">
233
257
  <span class='object_link'><a href="Ruff.html#instance-class_method" title="Ruff.instance (method)">instance</a></span>
234
258
  <small>Ruff</small>
@@ -236,7 +260,7 @@
236
260
  </li>
237
261
 
238
262
 
239
- <li class="odd ">
263
+ <li class="even ">
240
264
  <div class="item">
241
265
  <span class='object_link'><a href="Ruff/Throws/Resend.html#k-instance_method" title="Ruff::Throws::Resend#k (method)">#k</a></span>
242
266
  <small>Ruff::Throws::Resend</small>
@@ -244,7 +268,23 @@
244
268
  </li>
245
269
 
246
270
 
271
+ <li class="odd ">
272
+ <div class="item">
273
+ <span class='object_link'><a href="Ruff/Standard/MeasureTime/Instance.html#measure-instance_method" title="Ruff::Standard::MeasureTime::Instance#measure (method)">#measure</a></span>
274
+ <small>Ruff::Standard::MeasureTime::Instance</small>
275
+ </div>
276
+ </li>
277
+
278
+
247
279
  <li class="even ">
280
+ <div class="item">
281
+ <span class='object_link'><a href="Ruff/Standard/MeasureTime.html#measure-class_method" title="Ruff::Standard::MeasureTime.measure (method)">measure</a></span>
282
+ <small>Ruff::Standard::MeasureTime</small>
283
+ </div>
284
+ </li>
285
+
286
+
287
+ <li class="odd ">
248
288
  <div class="item">
249
289
  <span class='object_link'><a href="Ruff/Standard/State/Instance.html#modify-instance_method" title="Ruff::Standard::State::Instance#modify (method)">#modify</a></span>
250
290
  <small>Ruff::Standard::State::Instance</small>
@@ -252,7 +292,7 @@
252
292
  </li>
253
293
 
254
294
 
255
- <li class="odd ">
295
+ <li class="even ">
256
296
  <div class="item">
257
297
  <span class='object_link'><a href="Ruff/Standard/State.html#modify-class_method" title="Ruff::Standard::State.modify (method)">modify</a></span>
258
298
  <small>Ruff::Standard::State</small>
@@ -260,7 +300,7 @@
260
300
  </li>
261
301
 
262
302
 
263
- <li class="even ">
303
+ <li class="odd ">
264
304
  <div class="item">
265
305
  <span class='object_link'><a href="Ruff/Handler.html#on-instance_method" title="Ruff::Handler#on (method)">#on</a></span>
266
306
  <small>Ruff::Handler</small>
@@ -268,7 +308,7 @@
268
308
  </li>
269
309
 
270
310
 
271
- <li class="odd ">
311
+ <li class="even ">
272
312
  <div class="item">
273
313
  <span class='object_link'><a href="Ruff/Effect.html#perform-instance_method" title="Ruff::Effect#perform (method)">#perform</a></span>
274
314
  <small>Ruff::Effect</small>
@@ -276,7 +316,7 @@
276
316
  </li>
277
317
 
278
318
 
279
- <li class="even ">
319
+ <li class="odd ">
280
320
  <div class="item">
281
321
  <span class='object_link'><a href="Ruff/Standard/State/Instance.html#put-instance_method" title="Ruff::Standard::State::Instance#put (method)">#put</a></span>
282
322
  <small>Ruff::Standard::State::Instance</small>
@@ -284,7 +324,7 @@
284
324
  </li>
285
325
 
286
326
 
287
- <li class="odd ">
327
+ <li class="even ">
288
328
  <div class="item">
289
329
  <span class='object_link'><a href="Ruff/Standard/State.html#put-class_method" title="Ruff::Standard::State.put (method)">put</a></span>
290
330
  <small>Ruff::Standard::State</small>
@@ -292,7 +332,7 @@
292
332
  </li>
293
333
 
294
334
 
295
- <li class="even ">
335
+ <li class="odd ">
296
336
  <div class="item">
297
337
  <span class='object_link'><a href="Ruff/Standard/Defer/Instance.html#register-instance_method" title="Ruff::Standard::Defer::Instance#register (method)">#register</a></span>
298
338
  <small>Ruff::Standard::Defer::Instance</small>
@@ -300,7 +340,7 @@
300
340
  </li>
301
341
 
302
342
 
303
- <li class="odd ">
343
+ <li class="even ">
304
344
  <div class="item">
305
345
  <span class='object_link'><a href="Ruff/Standard/Defer.html#register-class_method" title="Ruff::Standard::Defer.register (method)">register</a></span>
306
346
  <small>Ruff::Standard::Defer</small>
@@ -308,7 +348,7 @@
308
348
  </li>
309
349
 
310
350
 
311
- <li class="even ">
351
+ <li class="odd ">
312
352
  <div class="item">
313
353
  <span class='object_link'><a href="Ruff/Handler.html#run-instance_method" title="Ruff::Handler#run (method)">#run</a></span>
314
354
  <small>Ruff::Handler</small>
@@ -316,7 +356,7 @@
316
356
  </li>
317
357
 
318
358
 
319
- <li class="odd ">
359
+ <li class="even ">
320
360
  <div class="item">
321
361
  <span class='object_link'><a href="Ruff/Handler.html#to-instance_method" title="Ruff::Handler#to (method)">#to</a></span>
322
362
  <small>Ruff::Handler</small>
@@ -324,7 +364,7 @@
324
364
  </li>
325
365
 
326
366
 
327
- <li class="even ">
367
+ <li class="odd ">
328
368
  <div class="item">
329
369
  <span class='object_link'><a href="Ruff/Standard/CurrentTime/Instance.html#with-instance_method" title="Ruff::Standard::CurrentTime::Instance#with (method)">#with</a></span>
330
370
  <small>Ruff::Standard::CurrentTime::Instance</small>
@@ -332,7 +372,7 @@
332
372
  </li>
333
373
 
334
374
 
335
- <li class="odd ">
375
+ <li class="even ">
336
376
  <div class="item">
337
377
  <span class='object_link'><a href="Ruff/Standard/CurrentTime.html#with-class_method" title="Ruff::Standard::CurrentTime.with (method)">with</a></span>
338
378
  <small>Ruff::Standard::CurrentTime</small>
@@ -340,7 +380,7 @@
340
380
  </li>
341
381
 
342
382
 
343
- <li class="even ">
383
+ <li class="odd ">
344
384
  <div class="item">
345
385
  <span class='object_link'><a href="Ruff/Standard/Defer/Instance.html#with-instance_method" title="Ruff::Standard::Defer::Instance#with (method)">#with</a></span>
346
386
  <small>Ruff::Standard::Defer::Instance</small>
@@ -348,7 +388,7 @@
348
388
  </li>
349
389
 
350
390
 
351
- <li class="odd ">
391
+ <li class="even ">
352
392
  <div class="item">
353
393
  <span class='object_link'><a href="Ruff/Standard/Defer.html#with-class_method" title="Ruff::Standard::Defer.with (method)">with</a></span>
354
394
  <small>Ruff::Standard::Defer</small>
@@ -356,7 +396,23 @@
356
396
  </li>
357
397
 
358
398
 
399
+ <li class="odd ">
400
+ <div class="item">
401
+ <span class='object_link'><a href="Ruff/Standard/MeasureTime/Instance.html#with-instance_method" title="Ruff::Standard::MeasureTime::Instance#with (method)">#with</a></span>
402
+ <small>Ruff::Standard::MeasureTime::Instance</small>
403
+ </div>
404
+ </li>
405
+
406
+
359
407
  <li class="even ">
408
+ <div class="item">
409
+ <span class='object_link'><a href="Ruff/Standard/MeasureTime.html#with-class_method" title="Ruff::Standard::MeasureTime.with (method)">with</a></span>
410
+ <small>Ruff::Standard::MeasureTime</small>
411
+ </div>
412
+ </li>
413
+
414
+
415
+ <li class="odd ">
360
416
  <div class="item">
361
417
  <span class='object_link'><a href="Ruff/Standard/State/Instance.html#with-instance_method" title="Ruff::Standard::State::Instance#with (method)">#with</a></span>
362
418
  <small>Ruff::Standard::State::Instance</small>
@@ -364,7 +420,7 @@
364
420
  </li>
365
421
 
366
422
 
367
- <li class="odd ">
423
+ <li class="even ">
368
424
  <div class="item">
369
425
  <span class='object_link'><a href="Ruff/Standard/State.html#with-class_method" title="Ruff::Standard::State.with (method)">with</a></span>
370
426
  <small>Ruff::Standard::State</small>
@@ -372,7 +428,7 @@
372
428
  </li>
373
429
 
374
430
 
375
- <li class="even ">
431
+ <li class="odd ">
376
432
  <div class="item">
377
433
  <span class='object_link'><a href="Ruff/Standard/State/Instance.html#with_init-instance_method" title="Ruff::Standard::State::Instance#with_init (method)">#with_init</a></span>
378
434
  <small>Ruff::Standard::State::Instance</small>
@@ -380,7 +436,7 @@
380
436
  </li>
381
437
 
382
438
 
383
- <li class="odd ">
439
+ <li class="even ">
384
440
  <div class="item">
385
441
  <span class='object_link'><a href="Ruff/Standard/State.html#with_init-class_method" title="Ruff::Standard::State.with_init (method)">with_init</a></span>
386
442
  <small>Ruff::Standard::State</small>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Top Level Namespace
8
8
 
9
- &mdash; Ruff 1.0.1 Documentation
9
+ &mdash; Ruff 1.1.0 Documentation
10
10
 
11
11
  </title>
12
12
 
@@ -100,9 +100,9 @@
100
100
  </div>
101
101
 
102
102
  <div id="footer">
103
- Generated on Fri Oct 4 13:57:07 2019 by
103
+ Generated on Fri Oct 4 21:12:21 2019 by
104
104
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
105
- 0.9.20 (ruby-2.6.4).
105
+ 0.9.20 (ruby-2.6.5).
106
106
  </div>
107
107
 
108
108
  </div>
@@ -12,7 +12,7 @@ module Ruff
12
12
  # @see Effect.initialize Effect.initialize
13
13
  #
14
14
  # @example
15
- # Log = Ruff.instance # === Ruff::Effect.new
15
+ # Log = Ruff.instance #==> Ruff::Effect.new
16
16
  def instance
17
17
  Effect.new
18
18
  end
@@ -18,6 +18,8 @@
18
18
  #
19
19
  module Ruff::Standard end
20
20
 
21
+ require 'ruff'
21
22
  require 'ruff/standard/current_time'
23
+ require 'ruff/standard/measure_time'
22
24
  require 'ruff/standard/defer'
23
25
  require 'ruff/standard/state'
@@ -9,6 +9,7 @@ module Ruff::Standard::CurrentTime
9
9
  # makes a new instance.
10
10
  def initialize
11
11
  @eff = Ruff.instance
12
+ @handler = Ruff.handler.on(@eff) { |k| k[Time.now] }
12
13
  end
13
14
 
14
15
  # is a smart method to invoke the effect operation.
@@ -21,7 +22,7 @@ module Ruff::Standard::CurrentTime
21
22
  # is a handler to interpret the effect invokation as requesting the current time.
22
23
  # This handler receives the *request* and returns current time.
23
24
  #
24
- # @param [Proc<(), A>!{CurrentTime.eff, e}] th
25
+ # @param [Proc<(), A!{CurrentTime.eff, e}>] th
25
26
  # is a thunk returning `A` with the possibility to invoke effects,
26
27
  # including `CurrentTime.eff` .
27
28
  #
@@ -29,7 +30,7 @@ module Ruff::Standard::CurrentTime
29
30
  # returns `A` , without modification by value handler.
30
31
  # But it still has the possibility to invoke effects(`e`).
31
32
  def with(&th)
32
- Ruff.handler.on(@eff) { |k| k[Time.now] }.run(&th)
33
+ @handler.run(&th)
33
34
  end
34
35
 
35
36
  # You can reimplement the handler using this effect instance.
@@ -33,14 +33,17 @@ module Ruff::Standard::Defer
33
33
  # This is a stack to store deferred procedures.
34
34
  procs = []
35
35
 
36
+ # The handler *closes* `procs` variable so it should be created every time.
36
37
  Ruff.handler
37
38
  .on(@eff) do |k, prc|
38
39
  procs << prc
39
40
  k[]
40
41
  end
41
- .to do |_|
42
+ .to do |v|
42
43
  # Like Go's defer functions, it crashes the thunk by reversed order.
43
44
  procs.reverse_each(&:[])
45
+
46
+ v
44
47
  end
45
48
  .run(&th)
46
49
  end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ # `MeasureTime` provides effects `MeasureTime.eff` ,
4
+ # and the implementation to measure and report execution time .
5
+ #
6
+ # The module has an instance of `Instance` and provides its methods as module method.
7
+ # @see Standard::MeasureTime::Instance
8
+ #
9
+ # @example
10
+ # MeasureTime.with {
11
+ # MeasureTime.measure 'one'
12
+ # sleep 1
13
+ # MeasureTime.measure 'two'
14
+ # sleep 0.1
15
+ #
16
+ # return 0
17
+ # }
18
+ # #==> [0, {:label=>"two", :time=>0.1}, {:label=>"one", :time=>1.1}]
19
+ module Ruff::Standard::MeasureTime
20
+ class Instance
21
+ # makes a new instance.
22
+ def initialize
23
+ @eff = Ruff.instance
24
+ @handler = Ruff.handler
25
+ .on(@eff) do |k, label|
26
+ t1 = Time.now
27
+ result = k[]
28
+ t2 = Time.now
29
+ result + [{ label: label, time: t2 - t1 }]
30
+ end
31
+ .to { |x| [x] }
32
+ end
33
+
34
+ # is a smart method to invoke the effect operation.
35
+ # @param [string] label
36
+ # is the label of the measurement.
37
+ # @return [()]
38
+ def measure(label)
39
+ @eff.perform(label)
40
+ end
41
+
42
+ # is a handler to interpret the effect invocation as measuring computation time.
43
+ #
44
+ # @param [Proc<(), A!{MeasureTime.eff, e}>] th
45
+ # is a thunk returning `A` with the possibility to invoke effects,
46
+ # including `MeasureTime.eff` .
47
+ #
48
+ # @return [[A, ...{ label: string, time: float }]!{e}]
49
+ # returns list. the first is the result `A`, and the rest is the measurement results.
50
+ # It still has the possibility to invoke effects(`e`).
51
+ def with(&th)
52
+ @handler.run(&th)
53
+ end
54
+
55
+ # You can reimplement the handler using this effect instance.
56
+ attr_reader :eff
57
+ end
58
+
59
+ # ---
60
+ @inst = Instance.new
61
+ @eff = @inst.eff
62
+
63
+ # @see Ruff::Standard::MeasureTime::Instance#measure
64
+ def measure(label)
65
+ @inst.measure(label)
66
+ end
67
+
68
+ # @see Ruff::Standard::MeasureTime::Instance#with
69
+ def with(&th)
70
+ @inst.with(&th)
71
+ end
72
+
73
+ module_function :measure, :with
74
+
75
+ # @see Ruff::Standard::MeasureTime::Instance#eff
76
+ attr_reader :eff
77
+ end