solid_callback 1.0.0 → 2.0.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.
@@ -0,0 +1,655 @@
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
+ Module: SolidCallback::Core
8
+
9
+ &mdash; Documentation by YARD 0.9.37
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="../css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "SolidCallback::Core";
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 (C)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../SolidCallback.html" title="SolidCallback (module)">SolidCallback</a></span></span>
41
+ &raquo;
42
+ <span class="title">Core</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>Module: SolidCallback::Core
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ <dl>
80
+ <dt>Defined in:</dt>
81
+ <dd>lib/solid_callback/core.rb</dd>
82
+ </dl>
83
+
84
+ </div>
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+ <h2>
95
+ Instance Method Summary
96
+ <small><a href="#" class="summary_toggle">collapse</a></small>
97
+ </h2>
98
+
99
+ <ul class="summary">
100
+
101
+ <li class="public ">
102
+ <span class="summary_signature">
103
+
104
+ <a href="#callback_applicable%3F-instance_method" title="#callback_applicable? (instance method)">#<strong>callback_applicable?</strong>(callback, method_name, instance) &#x21d2; Boolean </a>
105
+
106
+
107
+
108
+ </span>
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+ <span class="summary_desc"><div class='inline'>
119
+ <p>Check if a callback should be run for a method.</p>
120
+ </div></span>
121
+
122
+ </li>
123
+
124
+
125
+ <li class="public ">
126
+ <span class="summary_signature">
127
+
128
+ <a href="#callbacks_for-instance_method" title="#callbacks_for (instance method)">#<strong>callbacks_for</strong>(type) &#x21d2; Object </a>
129
+
130
+
131
+
132
+ </span>
133
+
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+ <span class="summary_desc"><div class='inline'>
143
+ <p>Get all callbacks of a specific type.</p>
144
+ </div></span>
145
+
146
+ </li>
147
+
148
+
149
+ <li class="public ">
150
+ <span class="summary_signature">
151
+
152
+ <a href="#evaluate_condition-instance_method" title="#evaluate_condition (instance method)">#<strong>evaluate_condition</strong>(condition, instance) &#x21d2; Object </a>
153
+
154
+
155
+
156
+ </span>
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+ <span class="summary_desc"><div class='inline'>
167
+ <p>Evaluate a condition (symbol method name, proc, or lambda).</p>
168
+ </div></span>
169
+
170
+ </li>
171
+
172
+
173
+ <li class="public ">
174
+ <span class="summary_signature">
175
+
176
+ <a href="#handle_method_added-instance_method" title="#handle_method_added (instance method)">#<strong>handle_method_added</strong>(method_name) &#x21d2; Object </a>
177
+
178
+
179
+
180
+ </span>
181
+
182
+
183
+
184
+
185
+
186
+
187
+
188
+
189
+
190
+ <span class="summary_desc"><div class='inline'>
191
+ <p>Handle method_added hook.</p>
192
+ </div></span>
193
+
194
+ </li>
195
+
196
+
197
+ <li class="public ">
198
+ <span class="summary_signature">
199
+
200
+ <a href="#register_callback-instance_method" title="#register_callback (instance method)">#<strong>register_callback</strong>(type, callback_method, options = {}) &#x21d2; Object </a>
201
+
202
+
203
+
204
+ </span>
205
+
206
+
207
+
208
+
209
+
210
+
211
+
212
+
213
+
214
+ <span class="summary_desc"><div class='inline'>
215
+ <p>Register a callback.</p>
216
+ </div></span>
217
+
218
+ </li>
219
+
220
+
221
+ <li class="public ">
222
+ <span class="summary_signature">
223
+
224
+ <a href="#wrap_method_with_callbacks-instance_method" title="#wrap_method_with_callbacks (instance method)">#<strong>wrap_method_with_callbacks</strong>(method_name) &#x21d2; Object </a>
225
+
226
+
227
+
228
+ </span>
229
+
230
+
231
+
232
+
233
+
234
+
235
+
236
+
237
+
238
+ <span class="summary_desc"><div class='inline'>
239
+ <p>Wrap a method with callbacks.</p>
240
+ </div></span>
241
+
242
+ </li>
243
+
244
+
245
+ </ul>
246
+
247
+
248
+
249
+
250
+ <div id="instance_method_details" class="method_details_list">
251
+ <h2>Instance Method Details</h2>
252
+
253
+
254
+ <div class="method_details first">
255
+ <h3 class="signature first" id="callback_applicable?-instance_method">
256
+
257
+ #<strong>callback_applicable?</strong>(callback, method_name, instance) &#x21d2; <tt>Boolean</tt>
258
+
259
+
260
+
261
+
262
+
263
+ </h3><div class="docstring">
264
+ <div class="discussion">
265
+
266
+ <p>Check if a callback should be run for a method</p>
267
+
268
+
269
+ </div>
270
+ </div>
271
+ <div class="tags">
272
+
273
+ <p class="tag_title">Returns:</p>
274
+ <ul class="return">
275
+
276
+ <li>
277
+
278
+
279
+ <span class='type'>(<tt>Boolean</tt>)</span>
280
+
281
+
282
+
283
+ </li>
284
+
285
+ </ul>
286
+
287
+ </div><table class="source_code">
288
+ <tr>
289
+ <td>
290
+ <pre class="lines">
291
+
292
+
293
+ 31
294
+ 32
295
+ 33
296
+ 34
297
+ 35
298
+ 36
299
+ 37
300
+ 38
301
+ 39
302
+ 40
303
+ 41
304
+ 42
305
+ 43
306
+ 44
307
+ 45
308
+ 46
309
+ 47
310
+ 48</pre>
311
+ </td>
312
+ <td>
313
+ <pre class="code"><span class="info file"># File 'lib/solid_callback/core.rb', line 31</span>
314
+
315
+ <span class='kw'>def</span> <span class='id identifier rubyid_callback_applicable?'>callback_applicable?</span><span class='lparen'>(</span><span class='id identifier rubyid_callback'>callback</span><span class='comma'>,</span> <span class='id identifier rubyid_method_name'>method_name</span><span class='comma'>,</span> <span class='id identifier rubyid_instance'>instance</span><span class='rparen'>)</span>
316
+ <span class='comment'># Check only/except constraints
317
+ </span> <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_callback'>callback</span><span class='lbracket'>[</span><span class='symbol'>:except</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_method_name'>method_name</span><span class='rparen'>)</span>
318
+ <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_callback'>callback</span><span class='lbracket'>[</span><span class='symbol'>:only</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='lbracket'>[</span><span class='symbol'>:all</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='id identifier rubyid_callback'>callback</span><span class='lbracket'>[</span><span class='symbol'>:only</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_method_name'>method_name</span><span class='rparen'>)</span>
319
+
320
+ <span class='comment'># Check conditional constraints
321
+ </span> <span class='kw'>if</span> <span class='id identifier rubyid_callback'>callback</span><span class='lbracket'>[</span><span class='symbol'>:if</span><span class='rbracket'>]</span>
322
+ <span class='id identifier rubyid_condition'>condition</span> <span class='op'>=</span> <span class='id identifier rubyid_callback'>callback</span><span class='lbracket'>[</span><span class='symbol'>:if</span><span class='rbracket'>]</span>
323
+ <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_evaluate_condition'>evaluate_condition</span><span class='lparen'>(</span><span class='id identifier rubyid_condition'>condition</span><span class='comma'>,</span> <span class='id identifier rubyid_instance'>instance</span><span class='rparen'>)</span>
324
+ <span class='kw'>end</span>
325
+
326
+ <span class='kw'>if</span> <span class='id identifier rubyid_callback'>callback</span><span class='lbracket'>[</span><span class='symbol'>:unless</span><span class='rbracket'>]</span>
327
+ <span class='id identifier rubyid_condition'>condition</span> <span class='op'>=</span> <span class='id identifier rubyid_callback'>callback</span><span class='lbracket'>[</span><span class='symbol'>:unless</span><span class='rbracket'>]</span>
328
+ <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_evaluate_condition'>evaluate_condition</span><span class='lparen'>(</span><span class='id identifier rubyid_condition'>condition</span><span class='comma'>,</span> <span class='id identifier rubyid_instance'>instance</span><span class='rparen'>)</span>
329
+ <span class='kw'>end</span>
330
+
331
+ <span class='kw'>true</span>
332
+ <span class='kw'>end</span></pre>
333
+ </td>
334
+ </tr>
335
+ </table>
336
+ </div>
337
+
338
+ <div class="method_details ">
339
+ <h3 class="signature " id="callbacks_for-instance_method">
340
+
341
+ #<strong>callbacks_for</strong>(type) &#x21d2; <tt>Object</tt>
342
+
343
+
344
+
345
+
346
+
347
+ </h3><div class="docstring">
348
+ <div class="discussion">
349
+
350
+ <p>Get all callbacks of a specific type</p>
351
+
352
+
353
+ </div>
354
+ </div>
355
+ <div class="tags">
356
+
357
+
358
+ </div><table class="source_code">
359
+ <tr>
360
+ <td>
361
+ <pre class="lines">
362
+
363
+
364
+ 4
365
+ 5
366
+ 6
367
+ 7</pre>
368
+ </td>
369
+ <td>
370
+ <pre class="code"><span class="info file"># File 'lib/solid_callback/core.rb', line 4</span>
371
+
372
+ <span class='kw'>def</span> <span class='id identifier rubyid_callbacks_for'>callbacks_for</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='rparen'>)</span>
373
+ <span class='ivar'>@_solid_callback_store</span> <span class='op'>||=</span> <span class='lbrace'>{</span> <span class='label'>before:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='label'>after:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='label'>around:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='rbrace'>}</span>
374
+ <span class='ivar'>@_solid_callback_store</span><span class='lbracket'>[</span><span class='id identifier rubyid_type'>type</span><span class='rbracket'>]</span>
375
+ <span class='kw'>end</span></pre>
376
+ </td>
377
+ </tr>
378
+ </table>
379
+ </div>
380
+
381
+ <div class="method_details ">
382
+ <h3 class="signature " id="evaluate_condition-instance_method">
383
+
384
+ #<strong>evaluate_condition</strong>(condition, instance) &#x21d2; <tt>Object</tt>
385
+
386
+
387
+
388
+
389
+
390
+ </h3><div class="docstring">
391
+ <div class="discussion">
392
+
393
+ <p>Evaluate a condition (symbol method name, proc, or lambda)</p>
394
+
395
+
396
+ </div>
397
+ </div>
398
+ <div class="tags">
399
+
400
+
401
+ </div><table class="source_code">
402
+ <tr>
403
+ <td>
404
+ <pre class="lines">
405
+
406
+
407
+ 51
408
+ 52
409
+ 53
410
+ 54
411
+ 55
412
+ 56
413
+ 57
414
+ 58
415
+ 59
416
+ 60</pre>
417
+ </td>
418
+ <td>
419
+ <pre class="code"><span class="info file"># File 'lib/solid_callback/core.rb', line 51</span>
420
+
421
+ <span class='kw'>def</span> <span class='id identifier rubyid_evaluate_condition'>evaluate_condition</span><span class='lparen'>(</span><span class='id identifier rubyid_condition'>condition</span><span class='comma'>,</span> <span class='id identifier rubyid_instance'>instance</span><span class='rparen'>)</span>
422
+ <span class='kw'>case</span> <span class='id identifier rubyid_condition'>condition</span>
423
+ <span class='kw'>when</span> <span class='const'>Symbol</span><span class='comma'>,</span> <span class='const'>String</span>
424
+ <span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_condition'>condition</span><span class='rparen'>)</span>
425
+ <span class='kw'>when</span> <span class='const'>Proc</span>
426
+ <span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_instance_exec'>instance_exec</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_condition'>condition</span><span class='rparen'>)</span>
427
+ <span class='kw'>else</span>
428
+ <span class='kw'>true</span>
429
+ <span class='kw'>end</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="handle_method_added-instance_method">
438
+
439
+ #<strong>handle_method_added</strong>(method_name) &#x21d2; <tt>Object</tt>
440
+
441
+
442
+
443
+
444
+
445
+ </h3><div class="docstring">
446
+ <div class="discussion">
447
+
448
+ <p>Handle method_added hook</p>
449
+
450
+
451
+ </div>
452
+ </div>
453
+ <div class="tags">
454
+
455
+
456
+ </div><table class="source_code">
457
+ <tr>
458
+ <td>
459
+ <pre class="lines">
460
+
461
+
462
+ 63
463
+ 64
464
+ 65
465
+ 66
466
+ 67
467
+ 68
468
+ 69
469
+ 70
470
+ 71
471
+ 72</pre>
472
+ </td>
473
+ <td>
474
+ <pre class="code"><span class="info file"># File 'lib/solid_callback/core.rb', line 63</span>
475
+
476
+ <span class='kw'>def</span> <span class='id identifier rubyid_handle_method_added'>handle_method_added</span><span class='lparen'>(</span><span class='id identifier rubyid_method_name'>method_name</span><span class='rparen'>)</span>
477
+ <span class='comment'># Skip if we&#39;re in the process of defining a wrapped method
478
+ </span> <span class='kw'>return</span> <span class='kw'>if</span> <span class='ivar'>@_solid_callback_wrapping_method</span>
479
+
480
+ <span class='comment'># Skip special methods and private/protected methods
481
+ </span> <span class='kw'>return</span> <span class='kw'>if</span> <span class='id identifier rubyid_method_name'>method_name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_start_with?'>start_with?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>_solid_callback_</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
482
+ <span class='kw'>return</span> <span class='kw'>if</span> <span class='id identifier rubyid_private_method_defined?'>private_method_defined?</span><span class='lparen'>(</span><span class='id identifier rubyid_method_name'>method_name</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_protected_method_defined?'>protected_method_defined?</span><span class='lparen'>(</span><span class='id identifier rubyid_method_name'>method_name</span><span class='rparen'>)</span>
483
+
484
+ <span class='id identifier rubyid_wrap_method_with_callbacks'>wrap_method_with_callbacks</span><span class='lparen'>(</span><span class='id identifier rubyid_method_name'>method_name</span><span class='rparen'>)</span>
485
+ <span class='kw'>end</span></pre>
486
+ </td>
487
+ </tr>
488
+ </table>
489
+ </div>
490
+
491
+ <div class="method_details ">
492
+ <h3 class="signature " id="register_callback-instance_method">
493
+
494
+ #<strong>register_callback</strong>(type, callback_method, options = {}) &#x21d2; <tt>Object</tt>
495
+
496
+
497
+
498
+
499
+
500
+ </h3><div class="docstring">
501
+ <div class="discussion">
502
+
503
+ <p>Register a callback</p>
504
+
505
+
506
+ </div>
507
+ </div>
508
+ <div class="tags">
509
+
510
+
511
+ </div><table class="source_code">
512
+ <tr>
513
+ <td>
514
+ <pre class="lines">
515
+
516
+
517
+ 10
518
+ 11
519
+ 12
520
+ 13
521
+ 14
522
+ 15
523
+ 16
524
+ 17
525
+ 18
526
+ 19
527
+ 20
528
+ 21
529
+ 22
530
+ 23
531
+ 24
532
+ 25
533
+ 26
534
+ 27
535
+ 28</pre>
536
+ </td>
537
+ <td>
538
+ <pre class="code"><span class="info file"># File 'lib/solid_callback/core.rb', line 10</span>
539
+
540
+ <span class='kw'>def</span> <span class='id identifier rubyid_register_callback'>register_callback</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_callback_method'>callback_method</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
541
+ <span class='comment'># Make sure callback store exists
542
+ </span> <span class='ivar'>@_solid_callback_store</span> <span class='op'>||=</span> <span class='lbrace'>{</span> <span class='label'>before:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='label'>after:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='label'>around:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='rbrace'>}</span>
543
+
544
+ <span class='comment'># Normalize options
545
+ </span> <span class='id identifier rubyid_only'>only</span> <span class='op'>=</span> <span class='const'>Array</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:only</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='symbol'>:all</span><span class='rparen'>)</span>
546
+ <span class='id identifier rubyid_except'>except</span> <span class='op'>=</span> <span class='const'>Array</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:except</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
547
+ <span class='id identifier rubyid_if_condition'>if_condition</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:if</span><span class='rbracket'>]</span>
548
+ <span class='id identifier rubyid_unless_condition'>unless_condition</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:unless</span><span class='rbracket'>]</span>
549
+
550
+ <span class='comment'># Store the callback information
551
+ </span> <span class='ivar'>@_solid_callback_store</span><span class='lbracket'>[</span><span class='id identifier rubyid_type'>type</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='id identifier rubyid_callback_method'>callback_method</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='lbrace'>{</span>
552
+ <span class='label'>method:</span> <span class='id identifier rubyid_callback_method'>callback_method</span><span class='comma'>,</span>
553
+ <span class='label'>only:</span> <span class='id identifier rubyid_only'>only</span><span class='comma'>,</span>
554
+ <span class='label'>except:</span> <span class='id identifier rubyid_except'>except</span><span class='comma'>,</span>
555
+ <span class='label'>if:</span> <span class='id identifier rubyid_if_condition'>if_condition</span><span class='comma'>,</span>
556
+ <span class='label'>unless:</span> <span class='id identifier rubyid_unless_condition'>unless_condition</span>
557
+ <span class='rbrace'>}</span>
558
+ <span class='kw'>end</span></pre>
559
+ </td>
560
+ </tr>
561
+ </table>
562
+ </div>
563
+
564
+ <div class="method_details ">
565
+ <h3 class="signature " id="wrap_method_with_callbacks-instance_method">
566
+
567
+ #<strong>wrap_method_with_callbacks</strong>(method_name) &#x21d2; <tt>Object</tt>
568
+
569
+
570
+
571
+
572
+
573
+ </h3><div class="docstring">
574
+ <div class="discussion">
575
+
576
+ <p>Wrap a method with callbacks</p>
577
+
578
+
579
+ </div>
580
+ </div>
581
+ <div class="tags">
582
+
583
+
584
+ </div><table class="source_code">
585
+ <tr>
586
+ <td>
587
+ <pre class="lines">
588
+
589
+
590
+ 75
591
+ 76
592
+ 77
593
+ 78
594
+ 79
595
+ 80
596
+ 81
597
+ 82
598
+ 83
599
+ 84
600
+ 85
601
+ 86
602
+ 87
603
+ 88
604
+ 89
605
+ 90
606
+ 91
607
+ 92
608
+ 93
609
+ 94
610
+ 95
611
+ 96</pre>
612
+ </td>
613
+ <td>
614
+ <pre class="code"><span class="info file"># File 'lib/solid_callback/core.rb', line 75</span>
615
+
616
+ <span class='kw'>def</span> <span class='id identifier rubyid_wrap_method_with_callbacks'>wrap_method_with_callbacks</span><span class='lparen'>(</span><span class='id identifier rubyid_method_name'>method_name</span><span class='rparen'>)</span>
617
+ <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_instance_methods'>instance_methods</span><span class='lparen'>(</span><span class='kw'>false</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_method_name'>method_name</span><span class='rparen'>)</span>
618
+
619
+ <span class='ivar'>@_solid_callback_wrapping_method</span> <span class='op'>=</span> <span class='kw'>true</span>
620
+
621
+ <span class='comment'># Create a reference to the original method
622
+ </span> <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>_solid_callback_original_</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_method_name'>method_name</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_method_name'>method_name</span>
623
+
624
+ <span class='comment'># Redefine the method with callbacks
625
+ </span> <span class='id identifier rubyid_define_method'>define_method</span><span class='lparen'>(</span><span class='id identifier rubyid_method_name'>method_name</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</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='op'>|</span>
626
+ <span class='id identifier rubyid_run_callbacks'>run_callbacks</span><span class='lparen'>(</span><span class='symbol'>:before</span><span class='comma'>,</span> <span class='id identifier rubyid_method_name'>method_name</span><span class='rparen'>)</span>
627
+
628
+ <span class='comment'># Execute around callbacks or the original method
629
+ </span> <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_run_around_callbacks'>run_around_callbacks</span><span class='lparen'>(</span><span class='id identifier rubyid_method_name'>method_name</span><span class='comma'>,</span> <span class='id identifier rubyid_args'>args</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
630
+
631
+ <span class='id identifier rubyid_run_callbacks'>run_callbacks</span><span class='lparen'>(</span><span class='symbol'>:after</span><span class='comma'>,</span> <span class='id identifier rubyid_method_name'>method_name</span><span class='rparen'>)</span>
632
+
633
+ <span class='id identifier rubyid_result'>result</span>
634
+ <span class='kw'>end</span>
635
+
636
+ <span class='ivar'>@_solid_callback_wrapping_method</span> <span class='op'>=</span> <span class='kw'>false</span>
637
+ <span class='kw'>end</span></pre>
638
+ </td>
639
+ </tr>
640
+ </table>
641
+ </div>
642
+
643
+ </div>
644
+
645
+ </div>
646
+
647
+ <div id="footer">
648
+ Generated on Wed Mar 12 18:55:58 2025 by
649
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
650
+ 0.9.37 (ruby-3.3.0).
651
+ </div>
652
+
653
+ </div>
654
+ </body>
655
+ </html>