mack_ruby_core_extensions 0.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.
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,42 @@
1
+
2
+ <?xml version="1.0" encoding="iso-8859-1"?>
3
+ <!DOCTYPE html
4
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
5
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6
+
7
+ <!--
8
+
9
+ Classes
10
+
11
+ -->
12
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
13
+ <head>
14
+ <title>Classes</title>
15
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
16
+ <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
17
+ <base target="docwin" />
18
+ </head>
19
+ <body>
20
+ <div id="index">
21
+ <h1 class="section-bar">Classes</h1>
22
+ <div id="index-entries">
23
+ <a href="classes/Array.html">Array</a><br />
24
+ <a href="classes/Class.html">Class</a><br />
25
+ <a href="classes/Dir.html">Dir</a><br />
26
+ <a href="classes/Float.html">Float</a><br />
27
+ <a href="classes/Hash.html">Hash</a><br />
28
+ <a href="classes/Kernel.html">Kernel</a><br />
29
+ <a href="classes/Mack.html">Mack</a><br />
30
+ <a href="classes/Mack/Utils.html">Mack::Utils</a><br />
31
+ <a href="classes/Mack/Utils/Inflector.html">Mack::Utils::Inflector</a><br />
32
+ <a href="classes/Math.html">Math</a><br />
33
+ <a href="classes/MethodNotImplemented.html">MethodNotImplemented</a><br />
34
+ <a href="classes/Module.html">Module</a><br />
35
+ <a href="classes/NilClass.html">NilClass</a><br />
36
+ <a href="classes/Object.html">Object</a><br />
37
+ <a href="classes/String.html">String</a><br />
38
+ <a href="classes/Symbol.html">Symbol</a><br />
39
+ </div>
40
+ </div>
41
+ </body>
42
+ </html>
@@ -0,0 +1,44 @@
1
+
2
+ <?xml version="1.0" encoding="iso-8859-1"?>
3
+ <!DOCTYPE html
4
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
5
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6
+
7
+ <!--
8
+
9
+ Files
10
+
11
+ -->
12
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
13
+ <head>
14
+ <title>Files</title>
15
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
16
+ <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
17
+ <base target="docwin" />
18
+ </head>
19
+ <body>
20
+ <div id="index">
21
+ <h1 class="section-bar">Files</h1>
22
+ <div id="index-entries">
23
+ <a href="files/README.html">README</a><br />
24
+ <a href="files/lib/extensions/array_rb.html">lib/extensions/array.rb</a><br />
25
+ <a href="files/lib/extensions/class_rb.html">lib/extensions/class.rb</a><br />
26
+ <a href="files/lib/extensions/dir_rb.html">lib/extensions/dir.rb</a><br />
27
+ <a href="files/lib/extensions/float_rb.html">lib/extensions/float.rb</a><br />
28
+ <a href="files/lib/extensions/hash_rb.html">lib/extensions/hash.rb</a><br />
29
+ <a href="files/lib/extensions/kernel_rb.html">lib/extensions/kernel.rb</a><br />
30
+ <a href="files/lib/extensions/logger_rb.html">lib/extensions/logger.rb</a><br />
31
+ <a href="files/lib/extensions/math_rb.html">lib/extensions/math.rb</a><br />
32
+ <a href="files/lib/extensions/method_not_implemented_rb.html">lib/extensions/method_not_implemented.rb</a><br />
33
+ <a href="files/lib/extensions/module_rb.html">lib/extensions/module.rb</a><br />
34
+ <a href="files/lib/extensions/nil_rb.html">lib/extensions/nil.rb</a><br />
35
+ <a href="files/lib/extensions/object_rb.html">lib/extensions/object.rb</a><br />
36
+ <a href="files/lib/extensions/string_rb.html">lib/extensions/string.rb</a><br />
37
+ <a href="files/lib/extensions/symbol_rb.html">lib/extensions/symbol.rb</a><br />
38
+ <a href="files/lib/mack_ruby_core_extensions_rb.html">lib/mack_ruby_core_extensions.rb</a><br />
39
+ <a href="files/lib/utils/inflections_rb.html">lib/utils/inflections.rb</a><br />
40
+ <a href="files/lib/utils/inflector_rb.html">lib/utils/inflector.rb</a><br />
41
+ </div>
42
+ </div>
43
+ </body>
44
+ </html>
@@ -0,0 +1,92 @@
1
+
2
+ <?xml version="1.0" encoding="iso-8859-1"?>
3
+ <!DOCTYPE html
4
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
5
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6
+
7
+ <!--
8
+
9
+ Methods
10
+
11
+ -->
12
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
13
+ <head>
14
+ <title>Methods</title>
15
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
16
+ <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
17
+ <base target="docwin" />
18
+ </head>
19
+ <body>
20
+ <div id="index">
21
+ <h1 class="section-bar">Methods</h1>
22
+ <div id="index-entries">
23
+ <a href="classes/Hash.html#M000005">- (Hash)</a><br />
24
+ <a href="classes/String.html#M000033">blank? (String)</a><br />
25
+ <a href="classes/NilClass.html#M000024">blank? (NilClass)</a><br />
26
+ <a href="classes/String.html#M000044">breakify (String)</a><br />
27
+ <a href="classes/String.html#M000045">breakify! (String)</a><br />
28
+ <a href="classes/String.html#M000031">camelcase (String)</a><br />
29
+ <a href="classes/String.html#M000051">capitalize_all_words (String)</a><br />
30
+ <a href="classes/String.html#M000052">capitalize_all_words! (String)</a><br />
31
+ <a href="classes/Class.html#M000023">class_is_a? (Class)</a><br />
32
+ <a href="classes/String.html#M000032">constantize (String)</a><br />
33
+ <a href="classes/Module.html#M000018">convert_security_of_methods (Module)</a><br />
34
+ <a href="classes/Array.html#M000016">count (Array)</a><br />
35
+ <a href="classes/Array.html#M000008">delete_from_array (Array)</a><br />
36
+ <a href="classes/Array.html#M000009">delete_from_array! (Array)</a><br />
37
+ <a href="classes/String.html#M000040">ends_with? (String)</a><br />
38
+ <a href="classes/String.html#M000046">hexdigest (String)</a><br />
39
+ <a href="classes/String.html#M000047">hexdigest! (String)</a><br />
40
+ <a href="classes/Module.html#M000019">include_safely_into (Module)</a><br />
41
+ <a href="classes/Mack/Utils/Inflector.html#M000061">inflections (Mack::Utils::Inflector)</a><br />
42
+ <a href="classes/Array.html#M000017">invert (Array)</a><br />
43
+ <a href="classes/Mack/Utils/Inflector.html#M000057">irregular (Mack::Utils::Inflector)</a><br />
44
+ <a href="classes/Object.html#M000028">ivar_cache (Object)</a><br />
45
+ <a href="classes/Object.html#M000029">ivar_cache_clear (Object)</a><br />
46
+ <a href="classes/Hash.html#M000004">join (Hash)</a><br />
47
+ <a href="classes/String.html#M000036">linkify (String)</a><br />
48
+ <a href="classes/Math.html#M000064">log2 (Math)</a><br />
49
+ <a href="classes/Dir.html#M000002">make_dirs (Dir)</a><br />
50
+ <a href="classes/Math.html#M000066">max (Math)</a><br />
51
+ <a href="classes/String.html#M000037">methodize (String)</a><br />
52
+ <a href="classes/Symbol.html#M000001">methodize (Symbol)</a><br />
53
+ <a href="classes/Math.html#M000065">min (Math)</a><br />
54
+ <a href="classes/Object.html#M000030">namespaces (Object)</a><br />
55
+ <a href="classes/MethodNotImplemented.html#M000020">new (MethodNotImplemented)</a><br />
56
+ <a href="classes/Class.html#M000022">new_instance_of (Class)</a><br />
57
+ <a href="classes/Array.html#M000007">parse_splat_args (Array)</a><br />
58
+ <a href="classes/Array.html#M000012">pick_random (Array)</a><br />
59
+ <a href="classes/Mack/Utils/Inflector.html#M000055">plural (Mack::Utils::Inflector)</a><br />
60
+ <a href="classes/String.html#M000034">plural (String)</a><br />
61
+ <a href="classes/Mack/Utils/Inflector.html#M000060">pluralize (Mack::Utils::Inflector)</a><br />
62
+ <a href="classes/String.html#M000041">pluralize_word (String)</a><br />
63
+ <a href="classes/Kernel.html#M000062">pp_to_s (Kernel)</a><br />
64
+ <a href="classes/Float.html#M000021">prec (Float)</a><br />
65
+ <a href="classes/Dir.html#M000003">prep_dir (Dir)</a><br />
66
+ <a href="classes/Array.html#M000013">random_each (Array)</a><br />
67
+ <a href="classes/Array.html#M000010">randomize (Array)</a><br />
68
+ <a href="classes/String.html#M000048">randomize (String)</a><br />
69
+ <a href="classes/Array.html#M000011">randomize! (Array)</a><br />
70
+ <a href="classes/String.html#M000042">remove (String)</a><br />
71
+ <a href="classes/String.html#M000043">remove! (String)</a><br />
72
+ <a href="classes/Kernel.html#M000063">retryable (Kernel)</a><br />
73
+ <a href="classes/Object.html#M000026">running_time (Object)</a><br />
74
+ <a href="classes/Object.html#M000027">send_with_chain (Object)</a><br />
75
+ <a href="classes/String.html#M000035">singular (String)</a><br />
76
+ <a href="classes/Mack/Utils/Inflector.html#M000056">singular (Mack::Utils::Inflector)</a><br />
77
+ <a href="classes/Mack/Utils/Inflector.html#M000059">singularize (Mack::Utils::Inflector)</a><br />
78
+ <a href="classes/String.html#M000053">sql_safe_str (String)</a><br />
79
+ <a href="classes/String.html#M000054">sql_safe_str! (String)</a><br />
80
+ <a href="classes/String.html#M000039">starts_with? (String)</a><br />
81
+ <a href="classes/Array.html#M000014">subset? (Array)</a><br />
82
+ <a href="classes/Array.html#M000015">superset? (Array)</a><br />
83
+ <a href="classes/Object.html#M000025">to_param (Object)</a><br />
84
+ <a href="classes/Hash.html#M000006">to_params (Hash)</a><br />
85
+ <a href="classes/String.html#M000049">truncate (String)</a><br />
86
+ <a href="classes/String.html#M000050">truncate! (String)</a><br />
87
+ <a href="classes/Mack/Utils/Inflector.html#M000058">uncountable (Mack::Utils::Inflector)</a><br />
88
+ <a href="classes/String.html#M000038">underscore (String)</a><br />
89
+ </div>
90
+ </div>
91
+ </body>
92
+ </html>
data/doc/index.html ADDED
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
5
+
6
+ <!--
7
+
8
+ Mack Ruby Core Extensions
9
+
10
+ -->
11
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
12
+ <head>
13
+ <title>Mack Ruby Core Extensions</title>
14
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
15
+ </head>
16
+ <frameset rows="20%, 80%">
17
+ <frameset cols="25%,35%,45%">
18
+ <frame src="fr_file_index.html" title="Files" name="Files" />
19
+ <frame src="fr_class_index.html" name="Classes" />
20
+ <frame src="fr_method_index.html" name="Methods" />
21
+ </frameset>
22
+ <frame src="files/README.html" name="docwin" />
23
+ </frameset>
24
+ </html>
@@ -0,0 +1,208 @@
1
+
2
+ body {
3
+ font-family: Verdana,Arial,Helvetica,sans-serif;
4
+ font-size: 90%;
5
+ margin: 0;
6
+ margin-left: 40px;
7
+ padding: 0;
8
+ background: white;
9
+ }
10
+
11
+ h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
12
+ h1 { font-size: 150%; }
13
+ h2,h3,h4 { margin-top: 1em; }
14
+
15
+ a { background: #eef; color: #039; text-decoration: none; }
16
+ a:hover { background: #039; color: #eef; }
17
+
18
+ /* Override the base stylesheet's Anchor inside a table cell */
19
+ td > a {
20
+ background: transparent;
21
+ color: #039;
22
+ text-decoration: none;
23
+ }
24
+
25
+ /* and inside a section title */
26
+ .section-title > a {
27
+ background: transparent;
28
+ color: #eee;
29
+ text-decoration: none;
30
+ }
31
+
32
+ /* === Structural elements =================================== */
33
+
34
+ div#index {
35
+ margin: 0;
36
+ margin-left: -40px;
37
+ padding: 0;
38
+ font-size: 90%;
39
+ }
40
+
41
+
42
+ div#index a {
43
+ margin-left: 0.7em;
44
+ }
45
+
46
+ div#index .section-bar {
47
+ margin-left: 0px;
48
+ padding-left: 0.7em;
49
+ background: #ccc;
50
+ font-size: small;
51
+ }
52
+
53
+
54
+ div#classHeader, div#fileHeader {
55
+ width: auto;
56
+ color: white;
57
+ padding: 0.5em 1.5em 0.5em 1.5em;
58
+ margin: 0;
59
+ margin-left: -40px;
60
+ border-bottom: 3px solid #006;
61
+ }
62
+
63
+ div#classHeader a, div#fileHeader a {
64
+ background: inherit;
65
+ color: white;
66
+ }
67
+
68
+ div#classHeader td, div#fileHeader td {
69
+ background: inherit;
70
+ color: white;
71
+ }
72
+
73
+
74
+ div#fileHeader {
75
+ background: #057;
76
+ }
77
+
78
+ div#classHeader {
79
+ background: #048;
80
+ }
81
+
82
+
83
+ .class-name-in-header {
84
+ font-size: 180%;
85
+ font-weight: bold;
86
+ }
87
+
88
+
89
+ div#bodyContent {
90
+ padding: 0 1.5em 0 1.5em;
91
+ }
92
+
93
+ div#description {
94
+ padding: 0.5em 1.5em;
95
+ background: #efefef;
96
+ border: 1px dotted #999;
97
+ }
98
+
99
+ div#description h1,h2,h3,h4,h5,h6 {
100
+ color: #125;;
101
+ background: transparent;
102
+ }
103
+
104
+ div#validator-badges {
105
+ text-align: center;
106
+ }
107
+ div#validator-badges img { border: 0; }
108
+
109
+ div#copyright {
110
+ color: #333;
111
+ background: #efefef;
112
+ font: 0.75em sans-serif;
113
+ margin-top: 5em;
114
+ margin-bottom: 0;
115
+ padding: 0.5em 2em;
116
+ }
117
+
118
+
119
+ /* === Classes =================================== */
120
+
121
+ table.header-table {
122
+ color: white;
123
+ font-size: small;
124
+ }
125
+
126
+ .type-note {
127
+ font-size: small;
128
+ color: #DEDEDE;
129
+ }
130
+
131
+ .xxsection-bar {
132
+ background: #eee;
133
+ color: #333;
134
+ padding: 3px;
135
+ }
136
+
137
+ .section-bar {
138
+ color: #333;
139
+ border-bottom: 1px solid #999;
140
+ margin-left: -20px;
141
+ }
142
+
143
+
144
+ .section-title {
145
+ background: #79a;
146
+ color: #eee;
147
+ padding: 3px;
148
+ margin-top: 2em;
149
+ margin-left: -30px;
150
+ border: 1px solid #999;
151
+ }
152
+
153
+ .top-aligned-row { vertical-align: top }
154
+ .bottom-aligned-row { vertical-align: bottom }
155
+
156
+ /* --- Context section classes ----------------------- */
157
+
158
+ .context-row { }
159
+ .context-item-name { font-family: monospace; font-weight: bold; color: black; }
160
+ .context-item-value { font-size: small; color: #448; }
161
+ .context-item-desc { color: #333; padding-left: 2em; }
162
+
163
+ /* --- Method classes -------------------------- */
164
+ .method-detail {
165
+ background: #efefef;
166
+ padding: 0;
167
+ margin-top: 0.5em;
168
+ margin-bottom: 1em;
169
+ border: 1px dotted #ccc;
170
+ }
171
+ .method-heading {
172
+ color: black;
173
+ background: #ccc;
174
+ border-bottom: 1px solid #666;
175
+ padding: 0.2em 0.5em 0 0.5em;
176
+ }
177
+ .method-signature { color: black; background: inherit; }
178
+ .method-name { font-weight: bold; }
179
+ .method-args { font-style: italic; }
180
+ .method-description { padding: 0 0.5em 0 0.5em; }
181
+
182
+ /* --- Source code sections -------------------- */
183
+
184
+ a.source-toggle { font-size: 90%; }
185
+ div.method-source-code {
186
+ background: #262626;
187
+ color: #ffdead;
188
+ margin: 1em;
189
+ padding: 0.5em;
190
+ border: 1px dashed #999;
191
+ overflow: hidden;
192
+ }
193
+
194
+ div.method-source-code pre { color: #ffdead; overflow: hidden; }
195
+
196
+ /* --- Ruby keyword styles --------------------- */
197
+
198
+ .standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
199
+
200
+ .ruby-constant { color: #7fffd4; background: transparent; }
201
+ .ruby-keyword { color: #00ffff; background: transparent; }
202
+ .ruby-ivar { color: #eedd82; background: transparent; }
203
+ .ruby-operator { color: #00ffee; background: transparent; }
204
+ .ruby-identifier { color: #ffdead; background: transparent; }
205
+ .ruby-node { color: #ffa07a; background: transparent; }
206
+ .ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
207
+ .ruby-regexp { color: #ffa07a; background: transparent; }
208
+ .ruby-value { color: #7fffd4; background: transparent; }
@@ -0,0 +1,101 @@
1
+ class Array
2
+
3
+ # This method is useful when you have a method that looks like this:
4
+ # def foo(*args)
5
+ # do something
6
+ # end
7
+ # The problem is when you use the * like that everything that comes in is
8
+ # an array. Here are a few problems with this:
9
+ # foo([1,2,3])
10
+ # When you pass an array into this type of method you get the following nested array:
11
+ # [[1,2,3]]
12
+ # The parse_splat_args method, if called, would do this:
13
+ # args.parse_splat_args # => [1,2,3]
14
+ # Now say you called this method like such:
15
+ # foo(1)
16
+ # args would be [1]
17
+ # args.parse_splat_args # => 1
18
+ # Finally
19
+ # foo
20
+ # args.parse_splat_args # => nil
21
+ def parse_splat_args
22
+ unless self.empty?
23
+ args = self#.flatten
24
+ case args.size
25
+ when 1
26
+ return args.first # if there was only one arg passed, return just that, without the array
27
+ when 0
28
+ return nil # if no args were passed return nil
29
+ else
30
+ return args # else return the array back, cause chances are that's what they passed you!
31
+ end
32
+ end
33
+ end
34
+
35
+ # This allows you to delete an array of values from another array.
36
+ # [1,2,3,4,5].delete_from_array([2,3,5]) # => [1,4]
37
+ def delete_from_array(args)
38
+ self.collect{ |x| x unless args.include?(x)}.compact
39
+ end
40
+
41
+ # This calls the delete_from_array method, but will permantly replace the existing array.
42
+ def delete_from_array!(args)
43
+ self.replace(delete_from_array(args))
44
+ end
45
+
46
+ # This will return a new instance of the array sorted randomly.
47
+ def randomize(&block)
48
+ if block_given?
49
+ self.sort {|x,y| yield x, y}
50
+ else
51
+ self.sort_by { rand }
52
+ end
53
+ end
54
+
55
+ # This calls the randomize method, but will permantly replace the existing array.
56
+ def randomize!(&block)
57
+ if block_given?
58
+ self.replace(self.randomize(&block))
59
+ else
60
+ self.replace(self.randomize)
61
+ end
62
+ end
63
+
64
+ # This will pick a random value from the array
65
+ def pick_random
66
+ self[rand(self.length)]
67
+ end
68
+
69
+ # This allows you to easily recurse of the array randomly.
70
+ def random_each
71
+ self.randomize.each {|x| yield x}
72
+ end
73
+
74
+ def subset?(other)
75
+ self.each do |x|
76
+ return false if !(other.include? x)
77
+ end
78
+ true
79
+ end
80
+
81
+ def superset?(other)
82
+ other.subset?(self)
83
+ end
84
+
85
+ # This will give you a count, as a Hash, of all the values in the Array.
86
+ # %w{spam spam eggs ham eggs spam}.count # => {"eggs"=>2, "ham"=>1, "spam"=>3}
87
+ def count
88
+ k = Hash.new(0)
89
+ self.each{|x| k[x] += 1}
90
+ k
91
+ end
92
+
93
+ # This will invert the index and the values and return a Hash of the results.
94
+ # %w{red yellow orange}.invert # => {"red"=>0, "orange"=>2, "yellow"=>1}
95
+ def invert
96
+ h = {}
97
+ self.each_with_index{|x,i| h[x] = i}
98
+ h
99
+ end
100
+
101
+ end