mack_ruby_core_extensions 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. data/README +3 -0
  2. data/doc/classes/Array.html +465 -0
  3. data/doc/classes/Class.html +181 -0
  4. data/doc/classes/Dir.html +190 -0
  5. data/doc/classes/Float.html +148 -0
  6. data/doc/classes/Hash.html +232 -0
  7. data/doc/classes/Kernel.html +182 -0
  8. data/doc/classes/Mack.html +111 -0
  9. data/doc/classes/Mack/Utils.html +111 -0
  10. data/doc/classes/Mack/Utils/Inflector.html +422 -0
  11. data/doc/classes/Math.html +188 -0
  12. data/doc/classes/MethodNotImplemented.html +155 -0
  13. data/doc/classes/Module.html +203 -0
  14. data/doc/classes/NilClass.html +151 -0
  15. data/doc/classes/Object.html +315 -0
  16. data/doc/classes/String.html +890 -0
  17. data/doc/classes/Symbol.html +148 -0
  18. data/doc/created.rid +1 -0
  19. data/doc/files/README.html +111 -0
  20. data/doc/files/lib/extensions/array_rb.html +101 -0
  21. data/doc/files/lib/extensions/class_rb.html +101 -0
  22. data/doc/files/lib/extensions/dir_rb.html +101 -0
  23. data/doc/files/lib/extensions/float_rb.html +101 -0
  24. data/doc/files/lib/extensions/hash_rb.html +101 -0
  25. data/doc/files/lib/extensions/kernel_rb.html +109 -0
  26. data/doc/files/lib/extensions/logger_rb.html +101 -0
  27. data/doc/files/lib/extensions/math_rb.html +101 -0
  28. data/doc/files/lib/extensions/method_not_implemented_rb.html +108 -0
  29. data/doc/files/lib/extensions/module_rb.html +101 -0
  30. data/doc/files/lib/extensions/nil_rb.html +101 -0
  31. data/doc/files/lib/extensions/object_rb.html +101 -0
  32. data/doc/files/lib/extensions/string_rb.html +108 -0
  33. data/doc/files/lib/extensions/symbol_rb.html +101 -0
  34. data/doc/files/lib/mack_ruby_core_extensions_rb.html +101 -0
  35. data/doc/files/lib/utils/inflections_rb.html +101 -0
  36. data/doc/files/lib/utils/inflector_rb.html +108 -0
  37. data/doc/fr_class_index.html +42 -0
  38. data/doc/fr_file_index.html +44 -0
  39. data/doc/fr_method_index.html +92 -0
  40. data/doc/index.html +24 -0
  41. data/doc/rdoc-style.css +208 -0
  42. data/lib/extensions/array.rb +101 -0
  43. data/lib/extensions/class.rb +19 -0
  44. data/lib/extensions/dir.rb +25 -0
  45. data/lib/extensions/float.rb +5 -0
  46. data/lib/extensions/hash.rb +47 -0
  47. data/lib/extensions/kernel.rb +30 -0
  48. data/lib/extensions/logger.rb +0 -0
  49. data/lib/extensions/math.rb +15 -0
  50. data/lib/extensions/method_not_implemented.rb +12 -0
  51. data/lib/extensions/module.rb +29 -0
  52. data/lib/extensions/nil.rb +8 -0
  53. data/lib/extensions/object.rb +103 -0
  54. data/lib/extensions/string.rb +261 -0
  55. data/lib/extensions/symbol.rb +7 -0
  56. data/lib/mack_ruby_core_extensions.rb +7 -0
  57. data/lib/utils/inflections.rb +62 -0
  58. data/lib/utils/inflector.rb +129 -0
  59. data/test/extensions/array_test.rb +15 -0
  60. data/test/extensions/class_test.rb +28 -0
  61. data/test/extensions/dir_test.rb +15 -0
  62. data/test/extensions/float_test.rb +15 -0
  63. data/test/extensions/hash_test.rb +34 -0
  64. data/test/extensions/kernel_test.rb +15 -0
  65. data/test/extensions/logger_test.rb +15 -0
  66. data/test/extensions/math_test.rb +15 -0
  67. data/test/extensions/method_not_implemented_test.rb +15 -0
  68. data/test/extensions/module_test.rb +57 -0
  69. data/test/extensions/nil_test.rb +15 -0
  70. data/test/extensions/object_test.rb +15 -0
  71. data/test/extensions/string_test.rb +104 -0
  72. data/test/extensions/symbol_test.rb +15 -0
  73. data/test/test_helper.rb +6 -0
  74. data/test/utils/inflection_test.rb +32 -0
  75. metadata +133 -0
@@ -0,0 +1,890 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: String</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">String</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/extensions/string_rb.html">
59
+ lib/extensions/string.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ <a href="Object.html">
69
+ Object
70
+ </a>
71
+ </td>
72
+ </tr>
73
+ </table>
74
+ </div>
75
+ <!-- banner header -->
76
+
77
+ <div id="bodyContent">
78
+
79
+
80
+
81
+ <div id="contextContent">
82
+
83
+
84
+
85
+ </div>
86
+
87
+ <div id="method-list">
88
+ <h3 class="section-bar">Methods</h3>
89
+
90
+ <div class="name-list">
91
+ <a href="#M000033">blank?</a>&nbsp;&nbsp;
92
+ <a href="#M000044">breakify</a>&nbsp;&nbsp;
93
+ <a href="#M000045">breakify!</a>&nbsp;&nbsp;
94
+ <a href="#M000031">camelcase</a>&nbsp;&nbsp;
95
+ <a href="#M000051">capitalize_all_words</a>&nbsp;&nbsp;
96
+ <a href="#M000052">capitalize_all_words!</a>&nbsp;&nbsp;
97
+ <a href="#M000032">constantize</a>&nbsp;&nbsp;
98
+ <a href="#M000040">ends_with?</a>&nbsp;&nbsp;
99
+ <a href="#M000046">hexdigest</a>&nbsp;&nbsp;
100
+ <a href="#M000047">hexdigest!</a>&nbsp;&nbsp;
101
+ <a href="#M000036">linkify</a>&nbsp;&nbsp;
102
+ <a href="#M000037">methodize</a>&nbsp;&nbsp;
103
+ <a href="#M000034">plural</a>&nbsp;&nbsp;
104
+ <a href="#M000041">pluralize_word</a>&nbsp;&nbsp;
105
+ <a href="#M000048">randomize</a>&nbsp;&nbsp;
106
+ <a href="#M000042">remove</a>&nbsp;&nbsp;
107
+ <a href="#M000043">remove!</a>&nbsp;&nbsp;
108
+ <a href="#M000035">singular</a>&nbsp;&nbsp;
109
+ <a href="#M000053">sql_safe_str</a>&nbsp;&nbsp;
110
+ <a href="#M000054">sql_safe_str!</a>&nbsp;&nbsp;
111
+ <a href="#M000039">starts_with?</a>&nbsp;&nbsp;
112
+ <a href="#M000049">truncate</a>&nbsp;&nbsp;
113
+ <a href="#M000050">truncate!</a>&nbsp;&nbsp;
114
+ <a href="#M000038">underscore</a>&nbsp;&nbsp;
115
+ </div>
116
+ </div>
117
+
118
+ </div>
119
+
120
+
121
+ <!-- if includes -->
122
+
123
+ <div id="section">
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+ <!-- if method_list -->
133
+ <div id="methods">
134
+ <h3 class="section-bar">Public Class methods</h3>
135
+
136
+ <div id="method-M000041" class="method-detail">
137
+ <a name="M000041"></a>
138
+
139
+ <div class="method-heading">
140
+ <a href="#M000041" class="method-signature">
141
+ <span class="method-name">pluralize_word</span><span class="method-args">(num, vals = [&quot;is&quot;, &quot;are&quot;])</span>
142
+ </a>
143
+ </div>
144
+
145
+ <div class="method-description">
146
+ <p>
147
+ Returns &quot;is&quot; or &quot;are&quot; based on the number, i.e.
148
+ &quot;i=6; There #{isare(i)} #{i} topics here.&quot;
149
+ </p>
150
+ <p><a class="source-toggle" href="#"
151
+ onclick="toggleCode('M000041-source');return false;">[Source]</a></p>
152
+ <div class="method-source-code" id="M000041-source">
153
+ <pre>
154
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 165</span>
155
+ 165: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">pluralize_word</span>(<span class="ruby-identifier">num</span>, <span class="ruby-identifier">vals</span> = [<span class="ruby-value str">&quot;is&quot;</span>, <span class="ruby-value str">&quot;are&quot;</span>])
156
+ 166: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">vals</span>[<span class="ruby-value">0</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">num</span>.<span class="ruby-identifier">to_i</span><span class="ruby-operator">==</span><span class="ruby-value">1</span>
157
+ 167: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">vals</span>[<span class="ruby-value">1</span>]
158
+ 168: <span class="ruby-keyword kw">end</span>
159
+ </pre>
160
+ </div>
161
+ </div>
162
+ </div>
163
+
164
+ <div id="method-M000048" class="method-detail">
165
+ <a name="M000048"></a>
166
+
167
+ <div class="method-heading">
168
+ <a href="#M000048" class="method-signature">
169
+ <span class="method-name">randomize</span><span class="method-args">(length = 10)</span>
170
+ </a>
171
+ </div>
172
+
173
+ <div class="method-description">
174
+ <p><a class="source-toggle" href="#"
175
+ onclick="toggleCode('M000048-source');return false;">[Source]</a></p>
176
+ <div class="method-source-code" id="M000048-source">
177
+ <pre>
178
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 219</span>
179
+ 219: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">randomize</span>(<span class="ruby-identifier">length</span> = <span class="ruby-value">10</span>)
180
+ 220: <span class="ruby-identifier">chars</span> = (<span class="ruby-value str">&quot;A&quot;</span><span class="ruby-operator">..</span><span class="ruby-value str">&quot;H&quot;</span>).<span class="ruby-identifier">to_a</span> <span class="ruby-operator">+</span> (<span class="ruby-value str">&quot;J&quot;</span><span class="ruby-operator">..</span><span class="ruby-value str">&quot;N&quot;</span>).<span class="ruby-identifier">to_a</span> <span class="ruby-operator">+</span> (<span class="ruby-value str">&quot;P&quot;</span><span class="ruby-operator">..</span><span class="ruby-value str">&quot;T&quot;</span>).<span class="ruby-identifier">to_a</span> <span class="ruby-operator">+</span> (<span class="ruby-value str">&quot;W&quot;</span><span class="ruby-operator">..</span><span class="ruby-value str">&quot;Z&quot;</span>).<span class="ruby-identifier">to_a</span> <span class="ruby-operator">+</span> (<span class="ruby-value str">&quot;3&quot;</span><span class="ruby-operator">..</span><span class="ruby-value str">&quot;9&quot;</span>).<span class="ruby-identifier">to_a</span>
181
+ 221: <span class="ruby-identifier">newpass</span> = <span class="ruby-value str">&quot;&quot;</span>
182
+ 222: <span class="ruby-value">1</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">length</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-identifier">newpass</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">chars</span>[<span class="ruby-identifier">rand</span>(<span class="ruby-identifier">chars</span>.<span class="ruby-identifier">size</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>)] }
183
+ 223: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">newpass</span>.<span class="ruby-identifier">upcase</span>
184
+ 224: <span class="ruby-keyword kw">end</span>
185
+ </pre>
186
+ </div>
187
+ </div>
188
+ </div>
189
+
190
+ <h3 class="section-bar">Public Instance methods</h3>
191
+
192
+ <div id="method-M000033" class="method-detail">
193
+ <a name="M000033"></a>
194
+
195
+ <div class="method-heading">
196
+ <a href="#M000033" class="method-signature">
197
+ <span class="method-name">blank?</span><span class="method-args">()</span>
198
+ </a>
199
+ </div>
200
+
201
+ <div class="method-description">
202
+ <p>
203
+ If the string is empty, this will return true.
204
+ </p>
205
+ <p><a class="source-toggle" href="#"
206
+ onclick="toggleCode('M000033-source');return false;">[Source]</a></p>
207
+ <div class="method-source-code" id="M000033-source">
208
+ <pre>
209
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 25</span>
210
+ 25: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">blank?</span>
211
+ 26: <span class="ruby-keyword kw">self</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;&quot;</span>
212
+ 27: <span class="ruby-keyword kw">end</span>
213
+ </pre>
214
+ </div>
215
+ </div>
216
+ </div>
217
+
218
+ <div id="method-M000044" class="method-detail">
219
+ <a name="M000044"></a>
220
+
221
+ <div class="method-heading">
222
+ <a href="#M000044" class="method-signature">
223
+ <span class="method-name">breakify</span><span class="method-args">(every = 30)</span>
224
+ </a>
225
+ </div>
226
+
227
+ <div class="method-description">
228
+ <p>
229
+ makes long strings of unbroken characters wrap inside elements (hopefully!
230
+ tested in Safari, Firefox, and IE for Windows) For documentation about this
231
+ kind of workaround to this browser compatibility problem please see the
232
+ following URL&#8216;s: <a
233
+ href="http://www.quirksmode.org/oddsandends/wbr.html">www.quirksmode.org/oddsandends/wbr.html</a>
234
+ <a
235
+ href="http://krijnhoetmer.nl/stuff/css/word-wrap-break-word">krijnhoetmer.nl/stuff/css/word-wrap-break-word</a>/
236
+ note: if the txt has spaces, this will only try to break up runs of
237
+ non-space characters longer than &quot;every&quot; characters
238
+ </p>
239
+ <p><a class="source-toggle" href="#"
240
+ onclick="toggleCode('M000044-source');return false;">[Source]</a></p>
241
+ <div class="method-source-code" id="M000044-source">
242
+ <pre>
243
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 183</span>
244
+ 183: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">breakify</span>(<span class="ruby-identifier">every</span> = <span class="ruby-value">30</span>)
245
+ 184: <span class="ruby-identifier">every</span> = <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">every</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">1</span>
246
+ 185: <span class="ruby-identifier">text</span> = <span class="ruby-keyword kw">self</span>
247
+ 186: <span class="ruby-identifier">textile_regex</span> = <span class="ruby-regexp re">/\&quot;([^\&quot;]+)\&quot;:([^:]*:[\/\/]{0,1}[^ ]*)/</span>
248
+ 187: <span class="ruby-identifier">long_regex</span> = <span class="ruby-node">/\S{#{every},}/</span>
249
+ 188: <span class="ruby-identifier">brokentxt</span> = <span class="ruby-identifier">text</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-identifier">long_regex</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">longword</span><span class="ruby-operator">|</span>
250
+ 189: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">longword</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">textile_regex</span> <span class="ruby-comment cmt">#if the longword is a textile link...ignore and recheck for the link text only</span>
251
+ 190: <span class="ruby-identifier">textile_link</span> = <span class="ruby-identifier">textile_regex</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">longword</span>)[<span class="ruby-value">0</span>]
252
+ 191: <span class="ruby-identifier">link_text</span> = <span class="ruby-identifier">textile_regex</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">longword</span>)[<span class="ruby-value">1</span>]
253
+ 192: <span class="ruby-identifier">longword</span> = <span class="ruby-identifier">link_text</span>
254
+ 193: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">longword</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">long_regex</span> <span class="ruby-comment cmt">#link text is long...allow break</span>
255
+ 194: <span class="ruby-identifier">textile_link</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-node">/.{1,#{every}}/</span>).<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;&lt;wbr/&gt;&quot;</span>)
256
+ 195: <span class="ruby-keyword kw">else</span>
257
+ 196: <span class="ruby-identifier">textile_link</span> <span class="ruby-comment cmt">#the url is what triggered the match...so leave it alone</span>
258
+ 197: <span class="ruby-keyword kw">end</span>
259
+ 198: <span class="ruby-keyword kw">else</span>
260
+ 199: <span class="ruby-identifier">longword</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-node">/.{1,#{every}}/</span>).<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;&lt;wbr/&gt;&quot;</span>) <span class="ruby-comment cmt">#no textile link matched</span>
261
+ 200: <span class="ruby-keyword kw">end</span>
262
+ 201: <span class="ruby-keyword kw">end</span>
263
+ 202: <span class="ruby-comment cmt">#text = %Q[&lt;span style='word-wrap:break-word;wbr:after{content:&quot;\\00200B&quot;}'&gt;#{brokentxt}&lt;/span&gt;]</span>
264
+ 203: <span class="ruby-comment cmt">#brokentxt.gsub(&quot;&lt;wbr/&gt;&quot;, &quot;&lt;br /&gt;&quot;)</span>
265
+ 204: <span class="ruby-identifier">brokentxt</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-value str">&quot;&lt;wbr/&gt;&quot;</span>, <span class="ruby-value str">&quot; &quot;</span>)
266
+ 205: <span class="ruby-keyword kw">end</span>
267
+ </pre>
268
+ </div>
269
+ </div>
270
+ </div>
271
+
272
+ <div id="method-M000045" class="method-detail">
273
+ <a name="M000045"></a>
274
+
275
+ <div class="method-heading">
276
+ <a href="#M000045" class="method-signature">
277
+ <span class="method-name">breakify!</span><span class="method-args">(every = 30)</span>
278
+ </a>
279
+ </div>
280
+
281
+ <div class="method-description">
282
+ <p><a class="source-toggle" href="#"
283
+ onclick="toggleCode('M000045-source');return false;">[Source]</a></p>
284
+ <div class="method-source-code" id="M000045-source">
285
+ <pre>
286
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 207</span>
287
+ 207: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">breakify!</span>(<span class="ruby-identifier">every</span> = <span class="ruby-value">30</span>)
288
+ 208: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">replace</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">breakify</span>(<span class="ruby-identifier">every</span>))
289
+ 209: <span class="ruby-keyword kw">end</span>
290
+ </pre>
291
+ </div>
292
+ </div>
293
+ </div>
294
+
295
+ <div id="method-M000031" class="method-detail">
296
+ <a name="M000031"></a>
297
+
298
+ <div class="method-heading">
299
+ <a href="#M000031" class="method-signature">
300
+ <span class="method-name">camelcase</span><span class="method-args">()</span>
301
+ </a>
302
+ </div>
303
+
304
+ <div class="method-description">
305
+ <p>
306
+ Camel cases the string.
307
+ </p>
308
+ <p>
309
+ Examples:
310
+ </p>
311
+ <pre>
312
+ &quot;user&quot;.camelcase # =&gt; User
313
+ &quot;my_blog&quot;.camelcase # =&gt; MyBlog
314
+ &quot;my/blog&quot;.camelcase # =&gt; My::Blog
315
+ </pre>
316
+ <p><a class="source-toggle" href="#"
317
+ onclick="toggleCode('M000031-source');return false;">[Source]</a></p>
318
+ <div class="method-source-code" id="M000031-source">
319
+ <pre>
320
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 10</span>
321
+ 10: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">camelcase</span>
322
+ 11: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\/(.?)/</span>) { <span class="ruby-value str">&quot;::&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">$1</span>.<span class="ruby-identifier">upcase</span> }.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/(^|_)(.)/</span>) { <span class="ruby-identifier">$2</span>.<span class="ruby-identifier">upcase</span> }
323
+ 12: <span class="ruby-keyword kw">end</span>
324
+ </pre>
325
+ </div>
326
+ </div>
327
+ </div>
328
+
329
+ <div id="method-M000051" class="method-detail">
330
+ <a name="M000051"></a>
331
+
332
+ <div class="method-heading">
333
+ <a href="#M000051" class="method-signature">
334
+ <span class="method-name">capitalize_all_words</span><span class="method-args">()</span>
335
+ </a>
336
+ </div>
337
+
338
+ <div class="method-description">
339
+ <p><a class="source-toggle" href="#"
340
+ onclick="toggleCode('M000051-source');return false;">[Source]</a></p>
341
+ <div class="method-source-code" id="M000051-source">
342
+ <pre>
343
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 241</span>
344
+ 241: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">capitalize_all_words</span>
345
+ 242: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\b\w/</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">upcase</span>}
346
+ 243: <span class="ruby-keyword kw">end</span>
347
+ </pre>
348
+ </div>
349
+ </div>
350
+ </div>
351
+
352
+ <div id="method-M000052" class="method-detail">
353
+ <a name="M000052"></a>
354
+
355
+ <div class="method-heading">
356
+ <a href="#M000052" class="method-signature">
357
+ <span class="method-name">capitalize_all_words!</span><span class="method-args">()</span>
358
+ </a>
359
+ </div>
360
+
361
+ <div class="method-description">
362
+ <p><a class="source-toggle" href="#"
363
+ onclick="toggleCode('M000052-source');return false;">[Source]</a></p>
364
+ <div class="method-source-code" id="M000052-source">
365
+ <pre>
366
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 245</span>
367
+ 245: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">capitalize_all_words!</span>
368
+ 246: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">replace</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">capitalize_all_words</span>)
369
+ 247: <span class="ruby-keyword kw">end</span>
370
+ </pre>
371
+ </div>
372
+ </div>
373
+ </div>
374
+
375
+ <div id="method-M000032" class="method-detail">
376
+ <a name="M000032"></a>
377
+
378
+ <div class="method-heading">
379
+ <a href="#M000032" class="method-signature">
380
+ <span class="method-name">constantize</span><span class="method-args">()</span>
381
+ </a>
382
+ </div>
383
+
384
+ <div class="method-description">
385
+ <p>
386
+ Returns a constant of the string.
387
+ </p>
388
+ <p>
389
+ Examples:
390
+ </p>
391
+ <pre>
392
+ &quot;User&quot;.constantize # =&gt; User
393
+ &quot;HomeController&quot;.constantize # =&gt; HomeController
394
+ &quot;Mack::Configuration&quot; # =&gt; Mack::Configuration
395
+ </pre>
396
+ <p><a class="source-toggle" href="#"
397
+ onclick="toggleCode('M000032-source');return false;">[Source]</a></p>
398
+ <div class="method-source-code" id="M000032-source">
399
+ <pre>
400
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 20</span>
401
+ 20: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">constantize</span>
402
+ 21: <span class="ruby-constant">Module</span>.<span class="ruby-identifier">instance_eval</span>(<span class="ruby-node">&quot;::#{self}&quot;</span>)
403
+ 22: <span class="ruby-keyword kw">end</span>
404
+ </pre>
405
+ </div>
406
+ </div>
407
+ </div>
408
+
409
+ <div id="method-M000040" class="method-detail">
410
+ <a name="M000040"></a>
411
+
412
+ <div class="method-heading">
413
+ <a href="#M000040" class="method-signature">
414
+ <span class="method-name">ends_with?</span><span class="method-args">(x)</span>
415
+ </a>
416
+ </div>
417
+
418
+ <div class="method-description">
419
+ <p><a class="source-toggle" href="#"
420
+ onclick="toggleCode('M000040-source');return false;">[Source]</a></p>
421
+ <div class="method-source-code" id="M000040-source">
422
+ <pre>
423
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 160</span>
424
+ 160: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ends_with?</span>(<span class="ruby-identifier">x</span>)
425
+ 161: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">match</span>(<span class="ruby-node">/#{x}$/</span>) <span class="ruby-operator">?</span> <span class="ruby-keyword kw">true</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">false</span>
426
+ 162: <span class="ruby-keyword kw">end</span>
427
+ </pre>
428
+ </div>
429
+ </div>
430
+ </div>
431
+
432
+ <div id="method-M000046" class="method-detail">
433
+ <a name="M000046"></a>
434
+
435
+ <div class="method-heading">
436
+ <a href="#M000046" class="method-signature">
437
+ <span class="method-name">hexdigest</span><span class="method-args">()</span>
438
+ </a>
439
+ </div>
440
+
441
+ <div class="method-description">
442
+ <p><a class="source-toggle" href="#"
443
+ onclick="toggleCode('M000046-source');return false;">[Source]</a></p>
444
+ <div class="method-source-code" id="M000046-source">
445
+ <pre>
446
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 211</span>
447
+ 211: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hexdigest</span>
448
+ 212: <span class="ruby-constant">Digest</span><span class="ruby-operator">::</span><span class="ruby-constant">SHA1</span>.<span class="ruby-identifier">hexdigest</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">downcase</span>)
449
+ 213: <span class="ruby-keyword kw">end</span>
450
+ </pre>
451
+ </div>
452
+ </div>
453
+ </div>
454
+
455
+ <div id="method-M000047" class="method-detail">
456
+ <a name="M000047"></a>
457
+
458
+ <div class="method-heading">
459
+ <a href="#M000047" class="method-signature">
460
+ <span class="method-name">hexdigest!</span><span class="method-args">()</span>
461
+ </a>
462
+ </div>
463
+
464
+ <div class="method-description">
465
+ <p><a class="source-toggle" href="#"
466
+ onclick="toggleCode('M000047-source');return false;">[Source]</a></p>
467
+ <div class="method-source-code" id="M000047-source">
468
+ <pre>
469
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 215</span>
470
+ 215: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hexdigest!</span>
471
+ 216: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">replace</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">hexdigest</span>)
472
+ 217: <span class="ruby-keyword kw">end</span>
473
+ </pre>
474
+ </div>
475
+ </div>
476
+ </div>
477
+
478
+ <div id="method-M000036" class="method-detail">
479
+ <a name="M000036"></a>
480
+
481
+ <div class="method-heading">
482
+ <a href="#M000036" class="method-signature">
483
+ <span class="method-name">linkify</span><span class="method-args">(enabled = true, options = {}) {|t, url, options| ...}</span>
484
+ </a>
485
+ </div>
486
+
487
+ <div class="method-description">
488
+ <p><a class="source-toggle" href="#"
489
+ onclick="toggleCode('M000036-source');return false;">[Source]</a></p>
490
+ <div class="method-source-code" id="M000036-source">
491
+ <pre>
492
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 39</span>
493
+ 39: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">linkify</span>(<span class="ruby-identifier">enabled</span> = <span class="ruby-keyword kw">true</span>, <span class="ruby-identifier">options</span> = {}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
494
+ 40: <span class="ruby-identifier">text</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">dup</span>
495
+ 41: <span class="ruby-identifier">m</span> = <span class="ruby-identifier">text</span>.<span class="ruby-identifier">match</span>(<span class="ruby-regexp re">/\&quot;([^&quot;]+)\&quot;\:([^:]+\:\S+)/</span>)
496
+ 42: <span class="ruby-keyword kw">until</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">nil?</span>
497
+ 43: <span class="ruby-identifier">y</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">to_s</span>
498
+ 44: <span class="ruby-identifier">t</span> = <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>]
499
+ 45: <span class="ruby-identifier">url</span> = <span class="ruby-identifier">m</span>[<span class="ruby-value">2</span>]
500
+ 46:
501
+ 47: <span class="ruby-comment cmt"># The code below handles punctuation or p tags being mistakenly added to the url when the link is at the end of a sentence or body</span>
502
+ 48: <span class="ruby-identifier">url_punct_match</span> = <span class="ruby-regexp re">/\W*[&amp;nbsp;]*[\&lt;\/p\&gt;]*$/</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">url</span>)
503
+ 49: <span class="ruby-identifier">punct</span> = <span class="ruby-value str">''</span>
504
+ 50: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">url_punct_match</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">url_punct_match</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;&quot;</span>
505
+ 51: <span class="ruby-identifier">url</span>.<span class="ruby-identifier">chomp!</span>(<span class="ruby-identifier">url_punct_match</span>[<span class="ruby-value">0</span>])
506
+ 52: <span class="ruby-identifier">punct</span> = <span class="ruby-identifier">url_punct_match</span>[<span class="ruby-value">0</span>] <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">url_punct_match</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;=&quot;</span>
507
+ 53: <span class="ruby-keyword kw">end</span>
508
+ 54:
509
+ 55: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
510
+ 56: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">enabled</span>
511
+ 57: <span class="ruby-identifier">ret</span> = <span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">t</span>, <span class="ruby-identifier">url</span>, <span class="ruby-identifier">options</span>
512
+ 58: <span class="ruby-identifier">text</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-identifier">y</span>, <span class="ruby-identifier">ret</span>)
513
+ 59: <span class="ruby-keyword kw">else</span>
514
+ 60: <span class="ruby-identifier">text</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-identifier">y</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">to_s</span>)
515
+ 61: <span class="ruby-keyword kw">end</span>
516
+ 62: <span class="ruby-keyword kw">else</span>
517
+ 63: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">enabled</span>
518
+ 64: <span class="ruby-identifier">text</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-identifier">y</span>, <span class="ruby-node">&quot;&lt;a href=\&quot;#{url}\&quot; #{options.join(&quot;%s=\&quot;%s\&quot;&quot;, &quot; &quot;)}&gt;#{t}&lt;/a&gt;#{punct}&quot;</span>)<span class="ruby-comment cmt"># punct places punctuation back into proper place</span>
519
+ 65: <span class="ruby-keyword kw">else</span>
520
+ 66: <span class="ruby-identifier">text</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-identifier">y</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">to_s</span>)
521
+ 67: <span class="ruby-keyword kw">end</span>
522
+ 68: <span class="ruby-keyword kw">end</span>
523
+ 69: <span class="ruby-identifier">m</span> = <span class="ruby-identifier">text</span>.<span class="ruby-identifier">match</span>(<span class="ruby-regexp re">/\&quot;([^&quot;]+)\&quot;\:([^:]+\:\S+)/</span>)
524
+ 70: <span class="ruby-keyword kw">end</span>
525
+ 71: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">text</span>
526
+ 72: <span class="ruby-keyword kw">end</span>
527
+ </pre>
528
+ </div>
529
+ </div>
530
+ </div>
531
+
532
+ <div id="method-M000037" class="method-detail">
533
+ <a name="M000037"></a>
534
+
535
+ <div class="method-heading">
536
+ <a href="#M000037" class="method-signature">
537
+ <span class="method-name">methodize</span><span class="method-args">()</span>
538
+ </a>
539
+ </div>
540
+
541
+ <div class="method-description">
542
+ <p><a class="source-toggle" href="#"
543
+ onclick="toggleCode('M000037-source');return false;">[Source]</a></p>
544
+ <div class="method-source-code" id="M000037-source">
545
+ <pre>
546
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 74</span>
547
+ 74: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">methodize</span>
548
+ 75: <span class="ruby-identifier">x</span> = <span class="ruby-keyword kw">self</span>
549
+ 76:
550
+ 77: <span class="ruby-comment cmt"># if we get down to a nil or an empty string raise an exception! </span>
551
+ 78: <span class="ruby-identifier">raise</span> <span class="ruby-constant">NameError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;#{self} cannot be converted to a valid method name!&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">==</span> <span class="ruby-value str">''</span>
552
+ 79:
553
+ 80: <span class="ruby-comment cmt"># get rid of the big stuff in the front/back</span>
554
+ 81: <span class="ruby-identifier">x</span>.<span class="ruby-identifier">strip!</span>
555
+ 82:
556
+ 83: <span class="ruby-comment cmt"># if we get down to a nil or an empty string raise an exception! </span>
557
+ 84: <span class="ruby-identifier">raise</span> <span class="ruby-constant">NameError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;#{self} cannot be converted to a valid method name!&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">==</span> <span class="ruby-value str">''</span>
558
+ 85:
559
+ 86: <span class="ruby-identifier">x</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">underscore</span>
560
+ 87:
561
+ 88: <span class="ruby-comment cmt"># get rid of spaces and make the _</span>
562
+ 89: <span class="ruby-identifier">x</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-value str">' '</span>, <span class="ruby-value str">'_'</span>)
563
+ 90: <span class="ruby-comment cmt"># get rid of everything that isn't 'safe' a-z, 0-9, ?, !, =, _</span>
564
+ 91: <span class="ruby-identifier">x</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/([^ a-zA-Z0-9\_\?\!\=]+)/n</span>, <span class="ruby-value str">'_'</span>)
565
+ 92:
566
+ 93: <span class="ruby-comment cmt"># if we get down to a nil or an empty string raise an exception! </span>
567
+ 94: <span class="ruby-identifier">raise</span> <span class="ruby-constant">NameError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;#{self} cannot be converted to a valid method name!&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">==</span> <span class="ruby-value str">''</span>
568
+ 95:
569
+ 96: <span class="ruby-comment cmt"># condense multiple 'safe' non a-z chars to just one.</span>
570
+ 97: <span class="ruby-comment cmt"># ie. ___ becomes _ !!!! becomes ! etc...</span>
571
+ 98: [<span class="ruby-value str">' '</span>, <span class="ruby-value str">'_'</span>, <span class="ruby-value str">'?'</span>, <span class="ruby-value str">'!'</span>, <span class="ruby-value str">&quot;=&quot;</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
572
+ 99: <span class="ruby-identifier">x</span>.<span class="ruby-identifier">squeeze!</span>(<span class="ruby-identifier">c</span>)
573
+ 100: <span class="ruby-keyword kw">end</span>
574
+ 101:
575
+ 102: <span class="ruby-comment cmt"># if we get down to a nil or an empty string raise an exception! </span>
576
+ 103: <span class="ruby-identifier">raise</span> <span class="ruby-constant">NameError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;#{self} cannot be converted to a valid method name!&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">==</span> <span class="ruby-value str">''</span>
577
+ 104:
578
+ 105: <span class="ruby-comment cmt">#down case the whole thing</span>
579
+ 106: <span class="ruby-identifier">x</span>.<span class="ruby-identifier">downcase!</span>
580
+ 107:
581
+ 108: <span class="ruby-comment cmt"># get rid of any characters at the beginning that aren't a-z</span>
582
+ 109: <span class="ruby-keyword kw">while</span> <span class="ruby-operator">!</span><span class="ruby-identifier">x</span>.<span class="ruby-identifier">match</span>(<span class="ruby-regexp re">/^[a-z]/</span>)
583
+ 110: <span class="ruby-identifier">x</span>.<span class="ruby-identifier">slice!</span>(<span class="ruby-value">0</span>)
584
+ 111:
585
+ 112: <span class="ruby-comment cmt"># if we get down to a nil or an empty string raise an exception! </span>
586
+ 113: <span class="ruby-identifier">raise</span> <span class="ruby-constant">NameError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;#{self} cannot be converted to a valid method name!&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">==</span> <span class="ruby-value str">''</span>
587
+ 114: <span class="ruby-keyword kw">end</span>
588
+ 115:
589
+ 116: <span class="ruby-comment cmt"># let's trim this bad boy down a bit now that we've cleaned it up, somewhat.</span>
590
+ 117: <span class="ruby-comment cmt"># we should do this before cleaning up the end character, because it's possible to end up with a </span>
591
+ 118: <span class="ruby-comment cmt"># bad char at the end if you trim too late.</span>
592
+ 119: <span class="ruby-identifier">x</span> = <span class="ruby-identifier">x</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">100</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">100</span>
593
+ 120:
594
+ 121: <span class="ruby-comment cmt"># get rid of any characters at the end that aren't safe</span>
595
+ 122: <span class="ruby-keyword kw">while</span> <span class="ruby-operator">!</span><span class="ruby-identifier">x</span>.<span class="ruby-identifier">match</span>(<span class="ruby-regexp re">/[a-z0-9\?\!\=]$/</span>)
596
+ 123: <span class="ruby-identifier">x</span>.<span class="ruby-identifier">slice!</span>(<span class="ruby-identifier">x</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
597
+ 124: <span class="ruby-comment cmt"># if we get down to a nil or an empty string raise an exception! </span>
598
+ 125: <span class="ruby-identifier">raise</span> <span class="ruby-constant">NameError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;#{self} cannot be converted to a valid method name!&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">==</span> <span class="ruby-value str">''</span>
599
+ 126: <span class="ruby-keyword kw">end</span>
600
+ 127:
601
+ 128: <span class="ruby-comment cmt"># if we get down to a nil or an empty string raise an exception! </span>
602
+ 129: <span class="ruby-identifier">raise</span> <span class="ruby-constant">NameError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;#{self} cannot be converted to a valid method name!&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">==</span> <span class="ruby-value str">''</span>
603
+ 130:
604
+ 131: <span class="ruby-comment cmt"># let's get rid of characters that don't belong in the 'middle' of the method.</span>
605
+ 132: <span class="ruby-identifier">orig_middle</span> = <span class="ruby-identifier">x</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span>(<span class="ruby-identifier">x</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">2</span>)]
606
+ 133: <span class="ruby-identifier">n_middle</span> = <span class="ruby-identifier">orig_middle</span>.<span class="ruby-identifier">dup</span>
607
+ 134:
608
+ 135: [<span class="ruby-value str">'?'</span>, <span class="ruby-value str">'!'</span>, <span class="ruby-value str">&quot;=&quot;</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
609
+ 136: <span class="ruby-identifier">n_middle</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-identifier">c</span>, <span class="ruby-value str">&quot;_&quot;</span>)
610
+ 137: <span class="ruby-keyword kw">end</span>
611
+ 138:
612
+ 139: <span class="ruby-comment cmt"># the previous gsub can leave us with multiple underscores that need cleaning up.</span>
613
+ 140: <span class="ruby-identifier">n_middle</span>.<span class="ruby-identifier">squeeze!</span>(<span class="ruby-value str">&quot;_&quot;</span>)
614
+ 141:
615
+ 142: <span class="ruby-identifier">x</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-identifier">orig_middle</span>, <span class="ruby-identifier">n_middle</span>)
616
+ 143: <span class="ruby-identifier">x</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-value str">&quot;_=&quot;</span>, <span class="ruby-value str">&quot;=&quot;</span>)
617
+ 144: <span class="ruby-identifier">x</span>
618
+ 145: <span class="ruby-keyword kw">end</span>
619
+ </pre>
620
+ </div>
621
+ </div>
622
+ </div>
623
+
624
+ <div id="method-M000034" class="method-detail">
625
+ <a name="M000034"></a>
626
+
627
+ <div class="method-heading">
628
+ <a href="#M000034" class="method-signature">
629
+ <span class="method-name">plural</span><span class="method-args">()</span>
630
+ </a>
631
+ </div>
632
+
633
+ <div class="method-description">
634
+ <p>
635
+ Maps to Mack::Utils::Inflector.instance.pluralize
636
+ </p>
637
+ <p><a class="source-toggle" href="#"
638
+ onclick="toggleCode('M000034-source');return false;">[Source]</a></p>
639
+ <div class="method-source-code" id="M000034-source">
640
+ <pre>
641
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 30</span>
642
+ 30: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">plural</span>
643
+ 31: <span class="ruby-constant">Mack</span><span class="ruby-operator">::</span><span class="ruby-constant">Utils</span><span class="ruby-operator">::</span><span class="ruby-constant">Inflector</span>.<span class="ruby-identifier">instance</span>.<span class="ruby-identifier">pluralize</span>(<span class="ruby-keyword kw">self</span>)
644
+ 32: <span class="ruby-keyword kw">end</span>
645
+ </pre>
646
+ </div>
647
+ </div>
648
+ </div>
649
+
650
+ <div id="method-M000042" class="method-detail">
651
+ <a name="M000042"></a>
652
+
653
+ <div class="method-heading">
654
+ <a href="#M000042" class="method-signature">
655
+ <span class="method-name">remove</span><span class="method-args">(val)</span>
656
+ </a>
657
+ </div>
658
+
659
+ <div class="method-description">
660
+ <p><a class="source-toggle" href="#"
661
+ onclick="toggleCode('M000042-source');return false;">[Source]</a></p>
662
+ <div class="method-source-code" id="M000042-source">
663
+ <pre>
664
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 170</span>
665
+ 170: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">remove</span>(<span class="ruby-identifier">val</span>)
666
+ 171: <span class="ruby-identifier">gsub</span>(<span class="ruby-identifier">val</span>, <span class="ruby-value str">''</span>)
667
+ 172: <span class="ruby-keyword kw">end</span>
668
+ </pre>
669
+ </div>
670
+ </div>
671
+ </div>
672
+
673
+ <div id="method-M000043" class="method-detail">
674
+ <a name="M000043"></a>
675
+
676
+ <div class="method-heading">
677
+ <a href="#M000043" class="method-signature">
678
+ <span class="method-name">remove!</span><span class="method-args">(val)</span>
679
+ </a>
680
+ </div>
681
+
682
+ <div class="method-description">
683
+ <p><a class="source-toggle" href="#"
684
+ onclick="toggleCode('M000043-source');return false;">[Source]</a></p>
685
+ <div class="method-source-code" id="M000043-source">
686
+ <pre>
687
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 174</span>
688
+ 174: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">remove!</span>(<span class="ruby-identifier">val</span>)
689
+ 175: <span class="ruby-identifier">gsub!</span>(<span class="ruby-identifier">val</span>, <span class="ruby-value str">''</span>)
690
+ 176: <span class="ruby-keyword kw">end</span>
691
+ </pre>
692
+ </div>
693
+ </div>
694
+ </div>
695
+
696
+ <div id="method-M000035" class="method-detail">
697
+ <a name="M000035"></a>
698
+
699
+ <div class="method-heading">
700
+ <a href="#M000035" class="method-signature">
701
+ <span class="method-name">singular</span><span class="method-args">()</span>
702
+ </a>
703
+ </div>
704
+
705
+ <div class="method-description">
706
+ <p>
707
+ Maps to Mack::Utils::Inflector.instance.singularize
708
+ </p>
709
+ <p><a class="source-toggle" href="#"
710
+ onclick="toggleCode('M000035-source');return false;">[Source]</a></p>
711
+ <div class="method-source-code" id="M000035-source">
712
+ <pre>
713
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 35</span>
714
+ 35: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">singular</span>
715
+ 36: <span class="ruby-constant">Mack</span><span class="ruby-operator">::</span><span class="ruby-constant">Utils</span><span class="ruby-operator">::</span><span class="ruby-constant">Inflector</span>.<span class="ruby-identifier">instance</span>.<span class="ruby-identifier">singularize</span>(<span class="ruby-keyword kw">self</span>)
716
+ 37: <span class="ruby-keyword kw">end</span>
717
+ </pre>
718
+ </div>
719
+ </div>
720
+ </div>
721
+
722
+ <div id="method-M000053" class="method-detail">
723
+ <a name="M000053"></a>
724
+
725
+ <div class="method-heading">
726
+ <a href="#M000053" class="method-signature">
727
+ <span class="method-name">sql_safe_str</span><span class="method-args">()</span>
728
+ </a>
729
+ </div>
730
+
731
+ <div class="method-description">
732
+ <p>
733
+ keep adding on to this whenever it becomes apparent that unsafe strings
734
+ could get passed through into the database
735
+ </p>
736
+ <p><a class="source-toggle" href="#"
737
+ onclick="toggleCode('M000053-source');return false;">[Source]</a></p>
738
+ <div class="method-source-code" id="M000053-source">
739
+ <pre>
740
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 251</span>
741
+ 251: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sql_safe_str</span>
742
+ 252: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">nil?</span>
743
+ 253: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/[\']/</span>, <span class="ruby-value str">&quot;\'\'&quot;</span>)
744
+ 254: <span class="ruby-keyword kw">end</span>
745
+ 255: <span class="ruby-keyword kw">end</span>
746
+ </pre>
747
+ </div>
748
+ </div>
749
+ </div>
750
+
751
+ <div id="method-M000054" class="method-detail">
752
+ <a name="M000054"></a>
753
+
754
+ <div class="method-heading">
755
+ <a href="#M000054" class="method-signature">
756
+ <span class="method-name">sql_safe_str!</span><span class="method-args">()</span>
757
+ </a>
758
+ </div>
759
+
760
+ <div class="method-description">
761
+ <p><a class="source-toggle" href="#"
762
+ onclick="toggleCode('M000054-source');return false;">[Source]</a></p>
763
+ <div class="method-source-code" id="M000054-source">
764
+ <pre>
765
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 257</span>
766
+ 257: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sql_safe_str!</span>
767
+ 258: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">replace</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sql_safe_str</span>)
768
+ 259: <span class="ruby-keyword kw">end</span>
769
+ </pre>
770
+ </div>
771
+ </div>
772
+ </div>
773
+
774
+ <div id="method-M000039" class="method-detail">
775
+ <a name="M000039"></a>
776
+
777
+ <div class="method-heading">
778
+ <a href="#M000039" class="method-signature">
779
+ <span class="method-name">starts_with?</span><span class="method-args">(x)</span>
780
+ </a>
781
+ </div>
782
+
783
+ <div class="method-description">
784
+ <p><a class="source-toggle" href="#"
785
+ onclick="toggleCode('M000039-source');return false;">[Source]</a></p>
786
+ <div class="method-source-code" id="M000039-source">
787
+ <pre>
788
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 156</span>
789
+ 156: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">starts_with?</span>(<span class="ruby-identifier">x</span>)
790
+ 157: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">match</span>(<span class="ruby-node">/^#{x}/</span>) <span class="ruby-operator">?</span> <span class="ruby-keyword kw">true</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">false</span>
791
+ 158: <span class="ruby-keyword kw">end</span>
792
+ </pre>
793
+ </div>
794
+ </div>
795
+ </div>
796
+
797
+ <div id="method-M000049" class="method-detail">
798
+ <a name="M000049"></a>
799
+
800
+ <div class="method-heading">
801
+ <a href="#M000049" class="method-signature">
802
+ <span class="method-name">truncate</span><span class="method-args">(length = 30, truncate_string = &quot;...&quot;)</span>
803
+ </a>
804
+ </div>
805
+
806
+ <div class="method-description">
807
+ <p><a class="source-toggle" href="#"
808
+ onclick="toggleCode('M000049-source');return false;">[Source]</a></p>
809
+ <div class="method-source-code" id="M000049-source">
810
+ <pre>
811
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 226</span>
812
+ 226: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">truncate</span>(<span class="ruby-identifier">length</span> = <span class="ruby-value">30</span>, <span class="ruby-identifier">truncate_string</span> = <span class="ruby-value str">&quot;...&quot;</span>)
813
+ 227: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword kw">then</span> <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">end</span>
814
+ 228: <span class="ruby-identifier">l</span> = <span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">truncate_string</span>.<span class="ruby-identifier">length</span>
815
+ 229: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$KCODE</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;NONE&quot;</span>
816
+ 230: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">length</span> <span class="ruby-value">? </span><span class="ruby-keyword kw">self</span>[<span class="ruby-value">0</span><span class="ruby-operator">...</span><span class="ruby-identifier">l</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">truncate_string</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">self</span>
817
+ 231: <span class="ruby-keyword kw">else</span>
818
+ 232: <span class="ruby-identifier">chars</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp re">//</span>)
819
+ 233: <span class="ruby-identifier">chars</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">length</span> <span class="ruby-value">? </span><span class="ruby-identifier">chars</span>[<span class="ruby-value">0</span><span class="ruby-operator">...</span><span class="ruby-identifier">l</span>].<span class="ruby-identifier">join</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">truncate_string</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">self</span>
820
+ 234: <span class="ruby-keyword kw">end</span>
821
+ 235: <span class="ruby-keyword kw">end</span>
822
+ </pre>
823
+ </div>
824
+ </div>
825
+ </div>
826
+
827
+ <div id="method-M000050" class="method-detail">
828
+ <a name="M000050"></a>
829
+
830
+ <div class="method-heading">
831
+ <a href="#M000050" class="method-signature">
832
+ <span class="method-name">truncate!</span><span class="method-args">(length = 30, truncate_string = &quot;...&quot;)</span>
833
+ </a>
834
+ </div>
835
+
836
+ <div class="method-description">
837
+ <p><a class="source-toggle" href="#"
838
+ onclick="toggleCode('M000050-source');return false;">[Source]</a></p>
839
+ <div class="method-source-code" id="M000050-source">
840
+ <pre>
841
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 237</span>
842
+ 237: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">truncate!</span>(<span class="ruby-identifier">length</span> = <span class="ruby-value">30</span>, <span class="ruby-identifier">truncate_string</span> = <span class="ruby-value str">&quot;...&quot;</span>)
843
+ 238: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">replace</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">truncate</span>(<span class="ruby-identifier">length</span>, <span class="ruby-identifier">truncate_string</span>))
844
+ 239: <span class="ruby-keyword kw">end</span>
845
+ </pre>
846
+ </div>
847
+ </div>
848
+ </div>
849
+
850
+ <div id="method-M000038" class="method-detail">
851
+ <a name="M000038"></a>
852
+
853
+ <div class="method-heading">
854
+ <a href="#M000038" class="method-signature">
855
+ <span class="method-name">underscore</span><span class="method-args">()</span>
856
+ </a>
857
+ </div>
858
+
859
+ <div class="method-description">
860
+ <p><a class="source-toggle" href="#"
861
+ onclick="toggleCode('M000038-source');return false;">[Source]</a></p>
862
+ <div class="method-source-code" id="M000038-source">
863
+ <pre>
864
+ <span class="ruby-comment cmt"># File lib/extensions/string.rb, line 147</span>
865
+ 147: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">underscore</span>
866
+ 148: <span class="ruby-identifier">camel_cased_word</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">dup</span>
867
+ 149: <span class="ruby-identifier">camel_cased_word</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/::/</span>, <span class="ruby-value str">'/'</span>).
868
+ 150: <span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/([A-Z]+)([A-Z][a-z])/</span>,<span class="ruby-value str">'\1_\2'</span>).
869
+ 151: <span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/([a-z\d])([A-Z])/</span>,<span class="ruby-value str">'\1_\2'</span>).
870
+ 152: <span class="ruby-identifier">tr</span>(<span class="ruby-value str">&quot;-&quot;</span>, <span class="ruby-value str">&quot;_&quot;</span>).
871
+ 153: <span class="ruby-identifier">downcase</span>
872
+ 154: <span class="ruby-keyword kw">end</span>
873
+ </pre>
874
+ </div>
875
+ </div>
876
+ </div>
877
+
878
+
879
+ </div>
880
+
881
+
882
+ </div>
883
+
884
+
885
+ <div id="validator-badges">
886
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
887
+ </div>
888
+
889
+ </body>
890
+ </html>