tainted_love 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (203) hide show
  1. checksums.yaml +7 -0
  2. data/.github/probots.yml +2 -0
  3. data/.gitignore +12 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +1188 -0
  6. data/.ruby-version +1 -0
  7. data/.travis.yml +7 -0
  8. data/CODE_OF_CONDUCT.md +73 -0
  9. data/Gemfile +8 -0
  10. data/Gemfile.lock +57 -0
  11. data/LICENSE.txt +21 -0
  12. data/README.md +85 -0
  13. data/Rakefile +8 -0
  14. data/bin/console +15 -0
  15. data/bin/setup +10 -0
  16. data/bin/test +7 -0
  17. data/dev.yml +28 -0
  18. data/docs/TaintedLove.html +482 -0
  19. data/docs/TaintedLove/Configuration.html +499 -0
  20. data/docs/TaintedLove/Replacer.html +129 -0
  21. data/docs/TaintedLove/Replacer/ActionViewHelpersMod.html +230 -0
  22. data/docs/TaintedLove/Replacer/Base.html +320 -0
  23. data/docs/TaintedLove/Replacer/HelperMod.html +226 -0
  24. data/docs/TaintedLove/Replacer/HelpersMod.html +230 -0
  25. data/docs/TaintedLove/Replacer/MarshalMod.html +178 -0
  26. data/docs/TaintedLove/Replacer/ObjectMod.html +282 -0
  27. data/docs/TaintedLove/Replacer/ReplaceActionController.html +329 -0
  28. data/docs/TaintedLove/Replacer/ReplaceActionView.html +317 -0
  29. data/docs/TaintedLove/Replacer/ReplaceActiveRecord.html +341 -0
  30. data/docs/TaintedLove/Replacer/ReplaceDigest.html +369 -0
  31. data/docs/TaintedLove/Replacer/ReplaceFile.html +245 -0
  32. data/docs/TaintedLove/Replacer/ReplaceKernel.html +211 -0
  33. data/docs/TaintedLove/Replacer/ReplaceMarshal.html +219 -0
  34. data/docs/TaintedLove/Replacer/ReplaceObject.html +231 -0
  35. data/docs/TaintedLove/Replacer/ReplaceRailsUserInput.html +374 -0
  36. data/docs/TaintedLove/Replacer/ReplaceSprokets.html +297 -0
  37. data/docs/TaintedLove/Replacer/SprocketsHelperMod.html +226 -0
  38. data/docs/TaintedLove/Reporter.html +117 -0
  39. data/docs/TaintedLove/Reporter/Base.html +466 -0
  40. data/docs/TaintedLove/Reporter/RackReporter.html +309 -0
  41. data/docs/TaintedLove/Reporter/SinatraReporter.html +402 -0
  42. data/docs/TaintedLove/Reporter/SinatraReporter/App.html +210 -0
  43. data/docs/TaintedLove/Reporter/StdoutReporter.html +305 -0
  44. data/docs/TaintedLove/SinatraReporter.html +387 -0
  45. data/docs/TaintedLove/SinatraReporter/App.html +210 -0
  46. data/docs/TaintedLove/StackTrace.html +650 -0
  47. data/docs/TaintedLove/Utils.html +550 -0
  48. data/docs/TaintedLove/Validator.html +129 -0
  49. data/docs/TaintedLove/Validator/ActionViewObjectSend.html +233 -0
  50. data/docs/TaintedLove/Validator/Base.html +200 -0
  51. data/docs/TaintedLove/Validator/ErbEval.html +229 -0
  52. data/docs/TaintedLove/Validator/RedisStoreSerialization.html +238 -0
  53. data/docs/TaintedLove/Validator/SproketsMarshal.html +233 -0
  54. data/docs/TaintedLove/Warning.html +665 -0
  55. data/docs/_index.html +371 -0
  56. data/docs/class_list.html +51 -0
  57. data/docs/css/common.css +1 -0
  58. data/docs/css/full_list.css +58 -0
  59. data/docs/css/style.css +496 -0
  60. data/docs/file.README.html +134 -0
  61. data/docs/file_list.html +56 -0
  62. data/docs/frames.html +17 -0
  63. data/docs/index.html +134 -0
  64. data/docs/js/app.js +292 -0
  65. data/docs/js/full_list.js +216 -0
  66. data/docs/js/jquery.js +4 -0
  67. data/docs/method_list.html +523 -0
  68. data/docs/top-level-namespace.html +110 -0
  69. data/example/.gitignore +31 -0
  70. data/example/.ruby-version +1 -0
  71. data/example/Gemfile +67 -0
  72. data/example/Gemfile.lock +226 -0
  73. data/example/README.md +24 -0
  74. data/example/Rakefile +8 -0
  75. data/example/app/assets/config/manifest.js +3 -0
  76. data/example/app/assets/images/.keep +0 -0
  77. data/example/app/assets/javascripts/application.js +16 -0
  78. data/example/app/assets/javascripts/cable.js +13 -0
  79. data/example/app/assets/javascripts/channels/.keep +0 -0
  80. data/example/app/assets/javascripts/products.coffee +3 -0
  81. data/example/app/assets/stylesheets/application.css +15 -0
  82. data/example/app/assets/stylesheets/products.scss +3 -0
  83. data/example/app/assets/stylesheets/scaffolds.scss +84 -0
  84. data/example/app/channels/application_cable/channel.rb +6 -0
  85. data/example/app/channels/application_cable/connection.rb +6 -0
  86. data/example/app/controllers/application_controller.rb +4 -0
  87. data/example/app/controllers/concerns/.keep +0 -0
  88. data/example/app/controllers/products_controller.rb +77 -0
  89. data/example/app/controllers/test_cases_controller.rb +20 -0
  90. data/example/app/helpers/application_helper.rb +4 -0
  91. data/example/app/helpers/products_helper.rb +4 -0
  92. data/example/app/helpers/test_cases_helper.rb +4 -0
  93. data/example/app/jobs/application_job.rb +4 -0
  94. data/example/app/mailers/application_mailer.rb +6 -0
  95. data/example/app/models/application_record.rb +5 -0
  96. data/example/app/models/concerns/.keep +0 -0
  97. data/example/app/models/product.rb +4 -0
  98. data/example/app/views/layouts/application.html.erb +15 -0
  99. data/example/app/views/layouts/mailer.html.erb +13 -0
  100. data/example/app/views/layouts/mailer.text.erb +1 -0
  101. data/example/app/views/products/_form.html.erb +32 -0
  102. data/example/app/views/products/_product.json.jbuilder +4 -0
  103. data/example/app/views/products/edit.html.erb +6 -0
  104. data/example/app/views/products/index.html.erb +31 -0
  105. data/example/app/views/products/index.json.jbuilder +3 -0
  106. data/example/app/views/products/new.html.erb +5 -0
  107. data/example/app/views/products/show.html.erb +19 -0
  108. data/example/app/views/products/show.json.jbuilder +3 -0
  109. data/example/app/views/test_cases/xss.html.erb +10 -0
  110. data/example/bin/bundle +5 -0
  111. data/example/bin/rails +11 -0
  112. data/example/bin/rake +11 -0
  113. data/example/bin/setup +38 -0
  114. data/example/bin/spring +18 -0
  115. data/example/bin/update +33 -0
  116. data/example/bin/yarn +11 -0
  117. data/example/config.ru +7 -0
  118. data/example/config/application.rb +21 -0
  119. data/example/config/boot.rb +6 -0
  120. data/example/config/cable.yml +10 -0
  121. data/example/config/credentials.yml.enc +1 -0
  122. data/example/config/database.yml +25 -0
  123. data/example/config/environment.rb +7 -0
  124. data/example/config/environments/development.rb +63 -0
  125. data/example/config/environments/production.rb +96 -0
  126. data/example/config/environments/test.rb +48 -0
  127. data/example/config/initializers/application_controller_renderer.rb +10 -0
  128. data/example/config/initializers/assets.rb +16 -0
  129. data/example/config/initializers/backtrace_silencers.rb +9 -0
  130. data/example/config/initializers/content_security_policy.rb +27 -0
  131. data/example/config/initializers/cookies_serializer.rb +7 -0
  132. data/example/config/initializers/filter_parameter_logging.rb +6 -0
  133. data/example/config/initializers/inflections.rb +18 -0
  134. data/example/config/initializers/mime_types.rb +6 -0
  135. data/example/config/initializers/tainted_love.rb +7 -0
  136. data/example/config/initializers/wrap_parameters.rb +16 -0
  137. data/example/config/locales/en.yml +33 -0
  138. data/example/config/puma.rb +36 -0
  139. data/example/config/routes.rb +10 -0
  140. data/example/config/spring.rb +8 -0
  141. data/example/config/storage.yml +34 -0
  142. data/example/db/migrate/20190311220346_create_products.rb +13 -0
  143. data/example/db/schema.rb +23 -0
  144. data/example/db/seeds.rb +9 -0
  145. data/example/lib/assets/.keep +0 -0
  146. data/example/lib/tasks/.keep +0 -0
  147. data/example/log/.keep +0 -0
  148. data/example/package.json +5 -0
  149. data/example/public/404.html +67 -0
  150. data/example/public/422.html +67 -0
  151. data/example/public/500.html +66 -0
  152. data/example/public/apple-touch-icon-precomposed.png +0 -0
  153. data/example/public/apple-touch-icon.png +0 -0
  154. data/example/public/favicon.ico +0 -0
  155. data/example/public/robots.txt +1 -0
  156. data/example/storage/.keep +0 -0
  157. data/example/test/application_system_test_case.rb +7 -0
  158. data/example/test/controllers/.keep +0 -0
  159. data/example/test/controllers/products_controller_test.rb +66 -0
  160. data/example/test/controllers/test_cases_controller_test.rb +39 -0
  161. data/example/test/fixtures/.keep +0 -0
  162. data/example/test/fixtures/files/.keep +0 -0
  163. data/example/test/fixtures/products.yml +11 -0
  164. data/example/test/helpers/.keep +0 -0
  165. data/example/test/integration/.keep +0 -0
  166. data/example/test/mailers/.keep +0 -0
  167. data/example/test/models/.keep +0 -0
  168. data/example/test/models/product_test.rb +9 -0
  169. data/example/test/replacers/replace_active_record_test.rb +31 -0
  170. data/example/test/replacers/replace_sprokets_test.rb +8 -0
  171. data/example/test/system/.keep +0 -0
  172. data/example/test/system/products_test.rb +49 -0
  173. data/example/test/test_helper.rb +37 -0
  174. data/example/tmp/.keep +0 -0
  175. data/example/vendor/.keep +0 -0
  176. data/lib/tainted_love.rb +57 -0
  177. data/lib/tainted_love/configuration.rb +16 -0
  178. data/lib/tainted_love/replacer/base.rb +25 -0
  179. data/lib/tainted_love/replacer/replace_action_controller.rb +61 -0
  180. data/lib/tainted_love/replacer/replace_action_view.rb +39 -0
  181. data/lib/tainted_love/replacer/replace_active_record.rb +47 -0
  182. data/lib/tainted_love/replacer/replace_digest.rb +39 -0
  183. data/lib/tainted_love/replacer/replace_file.rb +32 -0
  184. data/lib/tainted_love/replacer/replace_kernel.rb +44 -0
  185. data/lib/tainted_love/replacer/replace_marshal.rb +19 -0
  186. data/lib/tainted_love/replacer/replace_object.rb +30 -0
  187. data/lib/tainted_love/replacer/replace_rails_user_input.rb +59 -0
  188. data/lib/tainted_love/replacer/replace_sprokets.rb +25 -0
  189. data/lib/tainted_love/replacer/replace_yaml.rb +28 -0
  190. data/lib/tainted_love/reporter/base.rb +47 -0
  191. data/lib/tainted_love/reporter/file_reporter.rb +28 -0
  192. data/lib/tainted_love/reporter/stdout_reporter.rb +30 -0
  193. data/lib/tainted_love/stack_trace.rb +46 -0
  194. data/lib/tainted_love/utils.rb +80 -0
  195. data/lib/tainted_love/validator/action_view_object_send.rb +15 -0
  196. data/lib/tainted_love/validator/base.rb +16 -0
  197. data/lib/tainted_love/validator/erb_eval.rb +13 -0
  198. data/lib/tainted_love/validator/redis_store_serialization.rb +13 -0
  199. data/lib/tainted_love/validator/sprokets_marshal.rb +15 -0
  200. data/lib/tainted_love/version.rb +5 -0
  201. data/lib/tainted_love/warning.rb +30 -0
  202. data/tainted_love.gemspec +31 -0
  203. metadata +315 -0
@@ -0,0 +1,550 @@
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: TaintedLove::Utils
8
+
9
+ &mdash; Documentation by YARD 0.9.18
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 = "TaintedLove::Utils";
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 (U)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../TaintedLove.html" title="TaintedLove (module)">TaintedLove</a></span></span>
41
+ &raquo;
42
+ <span class="title">Utils</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: TaintedLove::Utils
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+ <dl>
78
+ <dt>Included in:</dt>
79
+ <dd><span class='object_link'><a href="../TaintedLove.html" title="TaintedLove (module)">TaintedLove</a></span></dd>
80
+ </dl>
81
+
82
+
83
+
84
+ <dl>
85
+ <dt>Defined in:</dt>
86
+ <dd>lib/tainted_love/utils.rb</dd>
87
+ </dl>
88
+
89
+ </div>
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+ <h2>
100
+ Instance Method Summary
101
+ <small><a href="#" class="summary_toggle">collapse</a></small>
102
+ </h2>
103
+
104
+ <ul class="summary">
105
+
106
+ <li class="public ">
107
+ <span class="summary_signature">
108
+
109
+ <a href="#add_tracking-instance_method" title="#add_tracking (instance method)">#<strong>add_tracking</strong>(object, payload = {}) {|Object| ... } &#x21d2; Object </a>
110
+
111
+
112
+
113
+ </span>
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+ <span class="summary_desc"><div class='inline'>
124
+ <p>Adds information about the object.</p>
125
+ </div></span>
126
+
127
+ </li>
128
+
129
+
130
+ <li class="public ">
131
+ <span class="summary_signature">
132
+
133
+ <a href="#hash-instance_method" title="#hash (instance method)">#<strong>hash</strong>(str) &#x21d2; Object </a>
134
+
135
+
136
+
137
+ </span>
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+
146
+
147
+ <span class="summary_desc"><div class='inline'>
148
+ <p>Create a hex encoded MD5 hash.</p>
149
+ </div></span>
150
+
151
+ </li>
152
+
153
+
154
+ <li class="public ">
155
+ <span class="summary_signature">
156
+
157
+ <a href="#proxy_method-instance_method" title="#proxy_method (instance method)">#<strong>proxy_method</strong>(klass, method, replace_return_value = false) {|*args, &amp;block| ... } &#x21d2; Object </a>
158
+
159
+
160
+
161
+ </span>
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+ <span class="summary_desc"><div class='inline'>
172
+ <p>Replaces a method defined in klass.</p>
173
+ </div></span>
174
+
175
+ </li>
176
+
177
+
178
+ </ul>
179
+
180
+
181
+
182
+
183
+ <div id="instance_method_details" class="method_details_list">
184
+ <h2>Instance Method Details</h2>
185
+
186
+
187
+ <div class="method_details first">
188
+ <h3 class="signature first" id="add_tracking-instance_method">
189
+
190
+ #<strong>add_tracking</strong>(object, payload = {}) {|Object| ... } &#x21d2; <tt>Object</tt>
191
+
192
+
193
+
194
+
195
+
196
+ </h3><div class="docstring">
197
+ <div class="discussion">
198
+
199
+ <p>Adds information about the object. The information can be about where the
200
+ object is coming from, validation that has been done on the object, etc.</p>
201
+
202
+ <p>If the object is frozen, the given block will be called with a new object.
203
+ The caller has the responsability of replacing the frozen object with this
204
+ new object.</p>
205
+
206
+
207
+ </div>
208
+ </div>
209
+ <div class="tags">
210
+ <p class="tag_title">Parameters:</p>
211
+ <ul class="param">
212
+
213
+ <li>
214
+
215
+ <span class='name'>object</span>
216
+
217
+
218
+ <span class='type'>(<tt>Object</tt>)</span>
219
+
220
+
221
+
222
+ &mdash;
223
+ <div class='inline'>
224
+ <p>Object to add tracking</p>
225
+ </div>
226
+
227
+ </li>
228
+
229
+ <li>
230
+
231
+ <span class='name'>payload</span>
232
+
233
+
234
+ <span class='type'>(<tt>Hash</tt>)</span>
235
+
236
+
237
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
238
+
239
+
240
+ &mdash;
241
+ <div class='inline'>
242
+ <p>Data to add to the object</p>
243
+ </div>
244
+
245
+ </li>
246
+
247
+ </ul>
248
+
249
+ <p class="tag_title">Yields:</p>
250
+ <ul class="yield">
251
+
252
+ <li>
253
+
254
+
255
+ <span class='type'>(<tt>Object</tt>)</span>
256
+
257
+
258
+
259
+ &mdash;
260
+ <div class='inline'>
261
+ <p>Invoked with a duplicate unfrozen version of object</p>
262
+ </div>
263
+
264
+ </li>
265
+
266
+ </ul>
267
+ <p class="tag_title">Returns:</p>
268
+ <ul class="return">
269
+
270
+ <li>
271
+
272
+
273
+ <span class='type'>(<tt>Object</tt>)</span>
274
+
275
+
276
+
277
+ &mdash;
278
+ <div class='inline'>
279
+ <p>Given object or dup of it</p>
280
+ </div>
281
+
282
+ </li>
283
+
284
+ </ul>
285
+
286
+ </div><table class="source_code">
287
+ <tr>
288
+ <td>
289
+ <pre class="lines">
290
+
291
+
292
+ 54
293
+ 55
294
+ 56
295
+ 57
296
+ 58
297
+ 59
298
+ 60
299
+ 61
300
+ 62
301
+ 63
302
+ 64
303
+ 65
304
+ 66
305
+ 67
306
+ 68</pre>
307
+ </td>
308
+ <td>
309
+ <pre class="code"><span class="info file"># File 'lib/tainted_love/utils.rb', line 54</span>
310
+
311
+ <span class='kw'>def</span> <span class='id identifier rubyid_add_tracking'>add_tracking</span><span class='lparen'>(</span><span class='id identifier rubyid_object'>object</span><span class='comma'>,</span> <span class='id identifier rubyid_payload'>payload</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
312
+ <span class='id identifier rubyid_frozen'>frozen</span> <span class='op'>=</span> <span class='id identifier rubyid_object'>object</span><span class='period'>.</span><span class='id identifier rubyid_frozen?'>frozen?</span>
313
+
314
+ <span class='kw'>return</span> <span class='kw'>if</span> <span class='id identifier rubyid_frozen'>frozen</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
315
+
316
+ <span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='symbol'>:stacktrace</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="StackTrace.html" title="TaintedLove::StackTrace (class)">StackTrace</a></span></span><span class='period'>.</span><span class='id identifier rubyid_current'><span class='object_link'><a href="StackTrace.html#current-class_method" title="TaintedLove::StackTrace.current (method)">current</a></span></span>
317
+
318
+ <span class='id identifier rubyid_object'>object</span> <span class='op'>=</span> <span class='id identifier rubyid_object'>object</span><span class='period'>.</span><span class='id identifier rubyid_dup'>dup</span> <span class='kw'>if</span> <span class='id identifier rubyid_frozen'>frozen</span>
319
+
320
+ <span class='id identifier rubyid_object'>object</span><span class='period'>.</span><span class='id identifier rubyid_tainted_love_tracking'>tainted_love_tracking</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_payload'>payload</span>
321
+
322
+ <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_object'>object</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_frozen'>frozen</span>
323
+
324
+ <span class='id identifier rubyid_object'>object</span>
325
+ <span class='kw'>end</span></pre>
326
+ </td>
327
+ </tr>
328
+ </table>
329
+ </div>
330
+
331
+ <div class="method_details ">
332
+ <h3 class="signature " id="hash-instance_method">
333
+
334
+ #<strong>hash</strong>(str) &#x21d2; <tt>Object</tt>
335
+
336
+
337
+
338
+
339
+
340
+ </h3><div class="docstring">
341
+ <div class="discussion">
342
+
343
+ <p>Create a hex encoded MD5 hash</p>
344
+
345
+
346
+ </div>
347
+ </div>
348
+ <div class="tags">
349
+
350
+
351
+ </div><table class="source_code">
352
+ <tr>
353
+ <td>
354
+ <pre class="lines">
355
+
356
+
357
+ 74
358
+ 75
359
+ 76
360
+ 77
361
+ 78</pre>
362
+ </td>
363
+ <td>
364
+ <pre class="code"><span class="info file"># File 'lib/tainted_love/utils.rb', line 74</span>
365
+
366
+ <span class='kw'>def</span> <span class='id identifier rubyid_hash'>hash</span><span class='lparen'>(</span><span class='id identifier rubyid_str'>str</span><span class='rparen'>)</span>
367
+ <span class='id identifier rubyid_h'>h</span> <span class='op'>=</span> <span class='const'>Digest</span><span class='op'>::</span><span class='const'>MD5</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
368
+ <span class='id identifier rubyid_h'>h</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span><span class='id identifier rubyid_str'>str</span><span class='rparen'>)</span>
369
+ <span class='id identifier rubyid_h'>h</span><span class='period'>.</span><span class='id identifier rubyid_hexdigest'>hexdigest</span>
370
+ <span class='kw'>end</span></pre>
371
+ </td>
372
+ </tr>
373
+ </table>
374
+ </div>
375
+
376
+ <div class="method_details ">
377
+ <h3 class="signature " id="proxy_method-instance_method">
378
+
379
+ #<strong>proxy_method</strong>(klass, method, replace_return_value = false) {|*args, &amp;block| ... } &#x21d2; <tt>Object</tt>
380
+
381
+
382
+
383
+
384
+
385
+ </h3><div class="docstring">
386
+ <div class="discussion">
387
+
388
+ <p>Replaces a method defined in klass.</p>
389
+
390
+
391
+ </div>
392
+ </div>
393
+ <div class="tags">
394
+ <p class="tag_title">Parameters:</p>
395
+ <ul class="param">
396
+
397
+ <li>
398
+
399
+ <span class='name'>klass</span>
400
+
401
+
402
+ <span class='type'>(<tt>Class</tt>, <tt>String</tt>)</span>
403
+
404
+
405
+
406
+ &mdash;
407
+ <div class='inline'>
408
+ <p>The target class</p>
409
+ </div>
410
+
411
+ </li>
412
+
413
+ <li>
414
+
415
+ <span class='name'>method</span>
416
+
417
+
418
+ <span class='type'>(<tt>Symbol</tt>)</span>
419
+
420
+
421
+
422
+ &mdash;
423
+ <div class='inline'>
424
+ <p>The method name to replace</p>
425
+ </div>
426
+
427
+ </li>
428
+
429
+ <li>
430
+
431
+ <span class='name'>replace_return_value</span>
432
+
433
+
434
+ <span class='type'>(<tt>Boolean</tt>)</span>
435
+
436
+
437
+ <em class="default">(defaults to: <tt>false</tt>)</em>
438
+
439
+
440
+ &mdash;
441
+ <div class='inline'>
442
+ <p>If true, the return value of the function will be the value returned by the
443
+ block. Otherwise, the function will return its original value.</p>
444
+ </div>
445
+
446
+ </li>
447
+
448
+ </ul>
449
+
450
+ <p class="tag_title">Yields:</p>
451
+ <ul class="yield">
452
+
453
+ <li>
454
+
455
+
456
+ <span class='type'>(<tt>*args</tt>, <tt>&block</tt>)</span>
457
+
458
+
459
+
460
+ &mdash;
461
+ <div class='inline'>
462
+ <p>Block to execute when the function is called</p>
463
+ </div>
464
+
465
+ </li>
466
+
467
+ </ul>
468
+
469
+ </div><table class="source_code">
470
+ <tr>
471
+ <td>
472
+ <pre class="lines">
473
+
474
+
475
+ 15
476
+ 16
477
+ 17
478
+ 18
479
+ 19
480
+ 20
481
+ 21
482
+ 22
483
+ 23
484
+ 24
485
+ 25
486
+ 26
487
+ 27
488
+ 28
489
+ 29
490
+ 30
491
+ 31
492
+ 32
493
+ 33
494
+ 34
495
+ 35
496
+ 36
497
+ 37
498
+ 38
499
+ 39
500
+ 40
501
+ 41</pre>
502
+ </td>
503
+ <td>
504
+ <pre class="code"><span class="info file"># File 'lib/tainted_love/utils.rb', line 15</span>
505
+
506
+ <span class='kw'>def</span> <span class='id identifier rubyid_proxy_method'>proxy_method</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='comma'>,</span> <span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='id identifier rubyid_replace_return_value'>replace_return_value</span> <span class='op'>=</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
507
+ <span class='kw'>if</span> <span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span>
508
+ <span class='kw'>if</span> <span class='const'>Object</span><span class='period'>.</span><span class='id identifier rubyid_const_defined?'>const_defined?</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='rparen'>)</span>
509
+ <span class='id identifier rubyid_klass'>klass</span> <span class='op'>=</span> <span class='const'>Object</span><span class='period'>.</span><span class='id identifier rubyid_const_get'>const_get</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='rparen'>)</span>
510
+ <span class='kw'>else</span>
511
+ <span class='kw'>return</span>
512
+ <span class='kw'>end</span>
513
+ <span class='kw'>end</span>
514
+
515
+ <span class='id identifier rubyid_original_method'>original_method</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>_tainted_love_original_</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_method'>method</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
516
+
517
+ <span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_class_eval'>class_eval</span> <span class='kw'>do</span>
518
+ <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='id identifier rubyid_original_method'>original_method</span><span class='comma'>,</span> <span class='id identifier rubyid_method'>method</span>
519
+
520
+ <span class='id identifier rubyid_define_method'>define_method</span> <span class='id identifier rubyid_method'>method</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_given_block'>given_block</span><span class='op'>|</span>
521
+ <span class='id identifier rubyid_return_value'>return_value</span> <span class='op'>=</span> <span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_original_method'>original_method</span><span class='comma'>,</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_given_block'>given_block</span><span class='rparen'>)</span>
522
+
523
+ <span class='id identifier rubyid_block_return'>block_return</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_return_value'>return_value</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='comma'>,</span> <span class='kw'>self</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
524
+
525
+ <span class='kw'>if</span> <span class='id identifier rubyid_replace_return_value'>replace_return_value</span>
526
+ <span class='id identifier rubyid_block_return'>block_return</span>
527
+ <span class='kw'>else</span>
528
+ <span class='id identifier rubyid_return_value'>return_value</span>
529
+ <span class='kw'>end</span>
530
+ <span class='kw'>end</span>
531
+ <span class='kw'>end</span>
532
+ <span class='kw'>end</span></pre>
533
+ </td>
534
+ </tr>
535
+ </table>
536
+ </div>
537
+
538
+ </div>
539
+
540
+ </div>
541
+
542
+ <div id="footer">
543
+ Generated on Tue Apr 2 15:50:34 2019 by
544
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
545
+ 0.9.18 (ruby-2.5.3).
546
+ </div>
547
+
548
+ </div>
549
+ </body>
550
+ </html>