shenanigans 1.0.6 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/doc/Array.html CHANGED
@@ -109,6 +109,8 @@
109
109
 
110
110
  <li><a href="./Object.html">Object</a>
111
111
 
112
+ <li><a href="./String.html">String</a>
113
+
112
114
  </ul>
113
115
  </nav>
114
116
 
data/doc/Fixnum.html CHANGED
@@ -103,6 +103,8 @@
103
103
 
104
104
  <li><a href="./Object.html">Object</a>
105
105
 
106
+ <li><a href="./String.html">String</a>
107
+
106
108
  </ul>
107
109
  </nav>
108
110
 
data/doc/Hash.html CHANGED
@@ -109,6 +109,8 @@
109
109
 
110
110
  <li><a href="./Object.html">Object</a>
111
111
 
112
+ <li><a href="./String.html">String</a>
113
+
112
114
  </ul>
113
115
  </nav>
114
116
 
data/doc/Kernel.html CHANGED
@@ -103,6 +103,8 @@
103
103
 
104
104
  <li><a href="./Object.html">Object</a>
105
105
 
106
+ <li><a href="./String.html">String</a>
107
+
106
108
  </ul>
107
109
  </nav>
108
110
 
data/doc/Object.html CHANGED
@@ -108,6 +108,8 @@
108
108
 
109
109
  <li><a href="./Object.html">Object</a>
110
110
 
111
+ <li><a href="./String.html">String</a>
112
+
111
113
  </ul>
112
114
  </nav>
113
115
 
data/doc/README_rdoc.html CHANGED
@@ -69,6 +69,8 @@
69
69
 
70
70
  <li><a href="./Object.html">Object</a>
71
71
 
72
+ <li><a href="./String.html">String</a>
73
+
72
74
  </ul>
73
75
  </nav>
74
76
 
data/doc/String.html ADDED
@@ -0,0 +1,191 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
6
+
7
+ <title>class String - Shenanigans</title>
8
+
9
+ <link type="text/css" media="screen" href="./rdoc.css" rel="stylesheet">
10
+
11
+ <script type="text/javascript">
12
+ var rdoc_rel_prefix = "./";
13
+ </script>
14
+
15
+ <script type="text/javascript" charset="utf-8" src="./js/jquery.js"></script>
16
+ <script type="text/javascript" charset="utf-8" src="./js/navigation.js"></script>
17
+ <script type="text/javascript" charset="utf-8" src="./js/search_index.js"></script>
18
+ <script type="text/javascript" charset="utf-8" src="./js/search.js"></script>
19
+ <script type="text/javascript" charset="utf-8" src="./js/searcher.js"></script>
20
+ <script type="text/javascript" charset="utf-8" src="./js/darkfish.js"></script>
21
+
22
+
23
+ <body id="top" class="class">
24
+ <nav id="metadata">
25
+ <nav id="home-section" class="section">
26
+ <h3 class="section-header">
27
+ <a href="./index.html">Home</a>
28
+ <a href="./table_of_contents.html#classes">Classes</a>
29
+ <a href="./table_of_contents.html#methods">Methods</a>
30
+ </h3>
31
+ </nav>
32
+
33
+
34
+ <nav id="search-section" class="section project-section" class="initially-hidden">
35
+ <form action="#" method="get" accept-charset="utf-8">
36
+ <h3 class="section-header">
37
+ <input type="text" name="search" placeholder="Search" id="search-field"
38
+ title="Type to search, Up and Down to navigate, Enter to load">
39
+ </h3>
40
+ </form>
41
+
42
+ <ul id="search-results" class="initially-hidden"></ul>
43
+ </nav>
44
+
45
+
46
+ <div id="file-metadata">
47
+ <nav id="file-list-section" class="section">
48
+ <h3 class="section-header">Defined In</h3>
49
+ <ul>
50
+ <li>lib/shenanigans/string/in_groups_of.rb
51
+ </ul>
52
+ </nav>
53
+
54
+
55
+ </div>
56
+
57
+ <div id="class-metadata">
58
+
59
+ <nav id="parent-class-section" class="section">
60
+ <h3 class="section-header">Parent</h3>
61
+
62
+ <p class="link"><a href="Object.html">Object</a>
63
+
64
+ </nav>
65
+
66
+
67
+ <!-- Method Quickref -->
68
+ <nav id="method-list-section" class="section">
69
+ <h3 class="section-header">Methods</h3>
70
+
71
+ <ul class="link-list">
72
+
73
+ <li><a href="#method-i-in_groups_of">#in_groups_of</a>
74
+
75
+ </ul>
76
+ </nav>
77
+
78
+ </div>
79
+
80
+ <div id="project-metadata">
81
+ <nav id="fileindex-section" class="section project-section">
82
+ <h3 class="section-header">Pages</h3>
83
+
84
+ <ul>
85
+
86
+ <li class="file"><a href="./README_rdoc.html">README</a>
87
+
88
+ </ul>
89
+ </nav>
90
+
91
+ <nav id="classindex-section" class="section project-section">
92
+ <h3 class="section-header">Class and Module Index</h3>
93
+
94
+ <ul class="link-list">
95
+
96
+ <li><a href="./Array.html">Array</a>
97
+
98
+ <li><a href="./Fixnum.html">Fixnum</a>
99
+
100
+ <li><a href="./Hash.html">Hash</a>
101
+
102
+ <li><a href="./Kernel.html">Kernel</a>
103
+
104
+ <li><a href="./Object.html">Object</a>
105
+
106
+ <li><a href="./String.html">String</a>
107
+
108
+ </ul>
109
+ </nav>
110
+
111
+ </div>
112
+ </nav>
113
+
114
+ <div id="documentation">
115
+ <h1 class="class">class String</h1>
116
+
117
+ <div id="description" class="description">
118
+
119
+ </div><!-- description -->
120
+
121
+
122
+
123
+
124
+ <section id="5Buntitled-5D" class="documentation-section">
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+ <!-- Methods -->
134
+
135
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section section">
136
+ <h3 class="section-header">Public Instance Methods</h3>
137
+
138
+
139
+ <div id="method-i-in_groups_of" class="method-detail ">
140
+
141
+ <div class="method-heading">
142
+ <span class="method-name">in_groups_of</span><span
143
+ class="method-args">(size)</span>
144
+ <span class="method-click-advice">click to toggle source</span>
145
+ </div>
146
+
147
+
148
+ <div class="method-description">
149
+
150
+ <p>Returns an array of the string broken down into groups of <code>size</code>
151
+ characters.</p>
152
+
153
+ <pre class="ruby"><span class="ruby-string">&quot;aabbcc&quot;</span>.<span class="ruby-identifier">in_groups_of</span>(<span class="ruby-value">2</span>)
154
+ <span class="ruby-comment">#=&gt; ['aa', 'bb', 'cc']</span>
155
+ <span class="ruby-string">&quot;&quot;</span>.<span class="ruby-identifier">in_groups_of</span>(<span class="ruby-value">2</span>)
156
+ <span class="ruby-comment">#=&gt; []</span>
157
+ <span class="ruby-string">&quot;&quot;</span>.<span class="ruby-identifier">in_groups_of</span>(<span class="ruby-value">0</span>)
158
+ <span class="ruby-comment">#=&gt; ArgumentError</span>
159
+ </pre>
160
+
161
+
162
+
163
+ <div class="method-source-code" id="in_groups_of-source">
164
+ <pre><span class="ruby-comment"># File lib/shenanigans/string/in_groups_of.rb, line 10</span>
165
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">in_groups_of</span>(<span class="ruby-identifier">size</span>)
166
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;Size of group must be &gt;= 1&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">size</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">1</span>
167
+ <span class="ruby-identifier">scan</span>(<span class="ruby-node">%r.{1,#{size}}/</span>)
168
+ <span class="ruby-keyword">end</span></pre>
169
+ </div><!-- in_groups_of-source -->
170
+
171
+ </div>
172
+
173
+
174
+
175
+
176
+ </div><!-- in_groups_of-method -->
177
+
178
+
179
+ </section><!-- public-instance-method-details -->
180
+
181
+ </section><!-- 5Buntitled-5D -->
182
+
183
+ </div><!-- documentation -->
184
+
185
+
186
+ <footer id="validator-badges">
187
+ <p><a href="http://validator.w3.org/check/referer">[Validate]</a>
188
+ <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 3.12.
189
+ <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
190
+ </footer>
191
+
data/doc/created.rid CHANGED
@@ -1,4 +1,4 @@
1
- Thu, 09 Aug 2012 18:48:00 +0200
1
+ Mon, 20 Aug 2012 18:53:22 +0200
2
2
  README.rdoc Thu, 17 May 2012 11:45:08 +0200
3
3
  lib/shenanigans/array/caret.rb Thu, 28 Jun 2012 09:15:50 +0200
4
4
  lib/shenanigans/array/random_subarray.rb Thu, 17 May 2012 00:03:23 +0200
@@ -8,7 +8,7 @@ lib/shenanigans/fixnum/string_length.rb Sun, 15 Jul 2012 00:00:21 +0200
8
8
  lib/shenanigans/fixnum.rb Sat, 14 Jul 2012 23:49:59 +0200
9
9
  lib/shenanigans/hash/extract.rb Thu, 09 Aug 2012 18:47:48 +0200
10
10
  lib/shenanigans/hash/has_shape_pred.rb Tue, 19 Jun 2012 21:25:03 +0200
11
- lib/shenanigans/hash/to_ostruct.rb Tue, 26 Jun 2012 21:24:42 +0200
11
+ lib/shenanigans/hash/to_ostruct.rb Mon, 13 Aug 2012 17:56:35 +0200
12
12
  lib/shenanigans/hash.rb Thu, 09 Aug 2012 18:32:30 +0200
13
13
  lib/shenanigans/kernel/fn.rb Wed, 16 May 2012 23:57:36 +0200
14
14
  lib/shenanigans/kernel/prompt.rb Thu, 17 May 2012 00:10:42 +0200
@@ -17,4 +17,6 @@ lib/shenanigans/kernel.rb Wed, 16 May 2012 20:49:22 +0200
17
17
  lib/shenanigans/object/display.rb Fri, 25 May 2012 17:29:45 +0200
18
18
  lib/shenanigans/object/it.rb Thu, 28 Jun 2012 09:07:56 +0200
19
19
  lib/shenanigans/object.rb Thu, 28 Jun 2012 09:10:12 +0200
20
+ lib/shenanigans/string/in_groups_of.rb Mon, 20 Aug 2012 18:53:19 +0200
21
+ lib/shenanigans/string.rb Mon, 20 Aug 2012 18:29:46 +0200
20
22
  lib/shenanigans.rb Sat, 14 Jul 2012 23:53:13 +0200
data/doc/index.html CHANGED
@@ -69,6 +69,8 @@
69
69
 
70
70
  <li><a href="./Object.html">Object</a>
71
71
 
72
+ <li><a href="./String.html">String</a>
73
+
72
74
  </ul>
73
75
  </nav>
74
76
 
@@ -1 +1 @@
1
- var search_data = {"index":{"searchIndex":["array","fixnum","hash","kernel","object","^()","d()","display()","extract()","fn()","has_shape?()","it()","prompt()","random_subarray()","string_length()","to_ostruct()","with()","zip_with()","readme"],"longSearchIndex":["array","fixnum","hash","kernel","object","array#^()","object#d()","object#display()","hash#extract()","kernel#fn()","hash#has_shape?()","object#it()","kernel#prompt()","array#random_subarray()","fixnum#string_length()","hash#to_ostruct()","kernel#with()","array#zip_with()",""],"info":[["Array","","Array.html","",""],["Fixnum","","Fixnum.html","",""],["Hash","","Hash.html","",""],["Kernel","","Kernel.html","",""],["Object","","Object.html","",""],["^","Array","Array.html#method-i-5E","(other)","<p>Returns an array containing elements exclusive between two arrays.\n\n<pre class=\"ruby\">[<span class=\"ruby-value\">1</span>, <span class=\"ruby-value\">2</span>, <span class=\"ruby-value\">3</span>] <span class=\"ruby-operator\">^</span> [<span class=\"ruby-value\">1</span>, <span class=\"ruby-value\">2</span>, <span class=\"ruby-value\">4</span>]\n<span class=\"ruby-comment\">#=&gt; [3, 4]</span>\n</pre>\n"],["d","Object","Object.html#method-i-d","(new_line = true)",""],["display","Object","Object.html#method-i-display","(new_line = true)","<p>Outputs the object and also returns it. Will use <code>puts</code> if\n<code>new_line</code> is <code>true</code> and <code>print</code>\notherwise.\n\n<pre>&quot;foo&quot;.display ...</pre>\n"],["extract","Hash","Hash.html#method-i-extract","(*ks)","<p>Returns a new hash only with the specified keys (if present).\n\n<pre>hash = { a: 1, b: 2, c: 3 }\nhash.extract(:b, ...</pre>\n"],["fn","Kernel","Kernel.html#method-i-fn","(*funs)","<p>Composes a list of functions. Functions can be specified as symbols or\nlambdas.\n\n<pre>[&quot;foo bar&quot;, &quot;baz qux&quot;].map ...</pre>\n"],["has_shape?","Hash","Hash.html#method-i-has_shape-3F","(shape)","<p>Checks if a hash has a certain structure.\n\n<pre>h = { k1: 1, k2: &quot;1&quot; }\nh.has_shape?(k1: Fixnum, k2: String) ...</pre>\n"],["it","Object","Object.html#method-i-it","()","<p>An identity method that provides access to an object’s <code>self</code>.\n\n<pre class=\"ruby\">[<span class=\"ruby-value\">1</span>,<span class=\"ruby-value\">2</span>,<span class=\"ruby-value\">3</span>,<span class=\"ruby-value\">4</span>,<span class=\"ruby-value\">5</span>,<span class=\"ruby-value\">1</span>,<span class=\"ruby-value\">2</span>,<span class=\"ruby-value\">2</span>,<span class=\"ruby-value\">3</span>].<span class=\"ruby-identifier\">group_by</span>(&amp;:<span class=\"ruby-identifier\">it</span>)\n<span class=\"ruby-comment\">#=&gt; {1=&gt;[1, ...</span>\n</pre>\n"],["prompt","Kernel","Kernel.html#method-i-prompt","(text='', conversion=nil)","<p>Displays a prompt and returns chomped input. Modelled after the Python\nmethod <code>raw_input</code>, but also can …\n"],["random_subarray","Array","Array.html#method-i-random_subarray","(n=1)","<p>Generates random subarrays. Uses random numbers and bit-fiddling to assure\nperformant uniform distributions …\n"],["string_length","Fixnum","Fixnum.html#method-i-string_length","()","<p>Returns the length of the number’s string representation.\n\n<pre class=\"ruby\"><span class=\"ruby-value\">0</span>.<span class=\"ruby-identifier\">string_length</span>\n<span class=\"ruby-comment\">#=&gt; 1</span>\n<span class=\"ruby-value\">123</span>.<span class=\"ruby-identifier\">string_length</span>\n<span class=\"ruby-comment\">#=&gt; ...</span>\n</pre>\n"],["to_ostruct","Hash","Hash.html#method-i-to_ostruct","()","<p>Recursively converts a <code>Hash</code> and all nested <code>Hash</code>es\nto <code>OpenStruct</code>s. Especially useful for parsing YAML …\n"],["with","Kernel","Kernel.html#method-i-with","(o, &blk)","<p>A Pascal/ActionScript like <code>with</code> method. Yields its argument to\nthe provided block and then returns it. …\n"],["zip_with","Array","Array.html#method-i-zip_with","(other, op=nil)","<p>Zip <code>self</code> with <code>other</code>, combining the elements with\nthe provided block or symbol. The resulting array will …\n"],["README","","README_rdoc.html","","<p>Shenanigans\n<p><strong>shenanigan</strong> (plural shenanigans):\n<p>Trickery, games; skulduggery. To “call”, “claim” …\n"]]}}
1
+ var search_data = {"index":{"searchIndex":["array","fixnum","hash","kernel","object","string","^()","d()","display()","extract()","fn()","has_shape?()","in_groups_of()","it()","prompt()","random_subarray()","string_length()","to_ostruct()","with()","zip_with()","readme"],"longSearchIndex":["array","fixnum","hash","kernel","object","string","array#^()","object#d()","object#display()","hash#extract()","kernel#fn()","hash#has_shape?()","string#in_groups_of()","object#it()","kernel#prompt()","array#random_subarray()","fixnum#string_length()","hash#to_ostruct()","kernel#with()","array#zip_with()",""],"info":[["Array","","Array.html","",""],["Fixnum","","Fixnum.html","",""],["Hash","","Hash.html","",""],["Kernel","","Kernel.html","",""],["Object","","Object.html","",""],["String","","String.html","",""],["^","Array","Array.html#method-i-5E","(other)","<p>Returns an array containing elements exclusive between two arrays.\n\n<pre class=\"ruby\">[<span class=\"ruby-value\">1</span>, <span class=\"ruby-value\">2</span>, <span class=\"ruby-value\">3</span>] <span class=\"ruby-operator\">^</span> [<span class=\"ruby-value\">1</span>, <span class=\"ruby-value\">2</span>, <span class=\"ruby-value\">4</span>]\n<span class=\"ruby-comment\">#=&gt; [3, 4]</span>\n</pre>\n"],["d","Object","Object.html#method-i-d","(new_line = true)",""],["display","Object","Object.html#method-i-display","(new_line = true)","<p>Outputs the object and also returns it. Will use <code>puts</code> if\n<code>new_line</code> is <code>true</code> and <code>print</code>\notherwise.\n\n<pre>&quot;foo&quot;.display ...</pre>\n"],["extract","Hash","Hash.html#method-i-extract","(*ks)","<p>Returns a new hash only with the specified keys (if present).\n\n<pre>hash = { a: 1, b: 2, c: 3 }\nhash.extract(:b, ...</pre>\n"],["fn","Kernel","Kernel.html#method-i-fn","(*funs)","<p>Composes a list of functions. Functions can be specified as symbols or\nlambdas.\n\n<pre>[&quot;foo bar&quot;, &quot;baz qux&quot;].map ...</pre>\n"],["has_shape?","Hash","Hash.html#method-i-has_shape-3F","(shape)","<p>Checks if a hash has a certain structure.\n\n<pre>h = { k1: 1, k2: &quot;1&quot; }\nh.has_shape?(k1: Fixnum, k2: String) ...</pre>\n"],["in_groups_of","String","String.html#method-i-in_groups_of","(size)","<p>Returns an array of the string broken down into groups of <code>size</code>\ncharacters.\n\n<pre class=\"ruby\"><span class=\"ruby-string\">&quot;aabbcc&quot;</span>.<span class=\"ruby-identifier\">in_groups_of</span>(<span class=\"ruby-value\">2</span>)\n<span class=\"ruby-comment\">#=&gt; ...</span>\n</pre>\n"],["it","Object","Object.html#method-i-it","()","<p>An identity method that provides access to an object’s <code>self</code>.\n\n<pre class=\"ruby\">[<span class=\"ruby-value\">1</span>,<span class=\"ruby-value\">2</span>,<span class=\"ruby-value\">3</span>,<span class=\"ruby-value\">4</span>,<span class=\"ruby-value\">5</span>,<span class=\"ruby-value\">1</span>,<span class=\"ruby-value\">2</span>,<span class=\"ruby-value\">2</span>,<span class=\"ruby-value\">3</span>].<span class=\"ruby-identifier\">group_by</span>(&amp;:<span class=\"ruby-identifier\">it</span>)\n<span class=\"ruby-comment\">#=&gt; {1=&gt;[1, ...</span>\n</pre>\n"],["prompt","Kernel","Kernel.html#method-i-prompt","(text='', conversion=nil)","<p>Displays a prompt and returns chomped input. Modelled after the Python\nmethod <code>raw_input</code>, but also can …\n"],["random_subarray","Array","Array.html#method-i-random_subarray","(n=1)","<p>Generates random subarrays. Uses random numbers and bit-fiddling to assure\nperformant uniform distributions …\n"],["string_length","Fixnum","Fixnum.html#method-i-string_length","()","<p>Returns the length of the number’s string representation.\n\n<pre class=\"ruby\"><span class=\"ruby-value\">0</span>.<span class=\"ruby-identifier\">string_length</span>\n<span class=\"ruby-comment\">#=&gt; 1</span>\n<span class=\"ruby-value\">123</span>.<span class=\"ruby-identifier\">string_length</span>\n<span class=\"ruby-comment\">#=&gt; ...</span>\n</pre>\n"],["to_ostruct","Hash","Hash.html#method-i-to_ostruct","()","<p>Recursively converts a <code>Hash</code> and all nested <code>Hash</code>es\nto <code>OpenStruct</code>s. Especially useful for parsing YAML …\n"],["with","Kernel","Kernel.html#method-i-with","(o, &blk)","<p>A Pascal/ActionScript like <code>with</code> method. Yields its argument to\nthe provided block and then returns it. …\n"],["zip_with","Array","Array.html#method-i-zip_with","(other, op=nil)","<p>Zip <code>self</code> with <code>other</code>, combining the elements with\nthe provided block or symbol. The resulting array will …\n"],["README","","README_rdoc.html","","<p>Shenanigans\n<p><strong>shenanigan</strong> (plural shenanigans):\n<p>Trickery, games; skulduggery. To “call”, “claim” …\n"]]}}
@@ -59,6 +59,9 @@
59
59
  <li class="class">
60
60
  <a href="Object.html">Object</a>
61
61
  </li>
62
+ <li class="class">
63
+ <a href="String.html">String</a>
64
+ </li>
62
65
 
63
66
  </ul>
64
67
 
@@ -77,6 +80,8 @@
77
80
 
78
81
  <li class="method"><a href="Hash.html#method-i-has_shape-3F">#has_shape? &mdash; Hash</a>
79
82
 
83
+ <li class="method"><a href="String.html#method-i-in_groups_of">#in_groups_of &mdash; String</a>
84
+
80
85
  <li class="method"><a href="Object.html#method-i-it">#it &mdash; Object</a>
81
86
 
82
87
  <li class="method"><a href="Kernel.html#method-i-prompt">#prompt &mdash; Kernel</a>
@@ -0,0 +1 @@
1
+ require_relative "string/in_groups_of"
@@ -0,0 +1,14 @@
1
+ class String
2
+ # Returns an array of the string broken down into groups of
3
+ # <tt>size</tt> characters.
4
+ # "aabbcc".in_groups_of(2)
5
+ # #=> ['aa', 'bb', 'cc']
6
+ # "".in_groups_of(2)
7
+ # #=> []
8
+ # "".in_groups_of(0)
9
+ # #=> ArgumentError
10
+ def in_groups_of(size)
11
+ raise ArgumentError, "Size of group must be >= 1" if size < 1
12
+ scan(/.{1,#{size}}/)
13
+ end
14
+ end
@@ -13,7 +13,8 @@ class ToOstruct < MiniTest::Unit::TestCase
13
13
  end
14
14
 
15
15
  def test_nested_array
16
- struct = {a: 1, b: [{c: 2}]}.to_ostruct
16
+ struct = {a: 1, b: [{c: 2}, 5]}.to_ostruct
17
17
  assert struct.b.first.c == 2
18
+ assert struct.b.last == 5
18
19
  end
19
20
  end
@@ -0,0 +1,36 @@
1
+ require 'minitest/autorun'
2
+ require 'shenanigans/object/display'
3
+ require 'stringio'
4
+
5
+ class Display < MiniTest::Unit::TestCase
6
+ def setup
7
+ @orig_stdout = $stdout
8
+ $stdout = StringIO.new("", "r+")
9
+ end
10
+
11
+ def teardown
12
+ $stdout = @orig_stdout
13
+ end
14
+
15
+ def test_display
16
+ str = "foo"
17
+ assert str.display == str
18
+ $stdout.rewind
19
+ assert $stdout.gets.chomp == str
20
+ end
21
+
22
+ def test_display_alias
23
+ str = "foo"
24
+ assert str.d == str
25
+ $stdout.rewind
26
+ assert $stdout.gets.chomp == str
27
+ end
28
+
29
+ def test_display_no_new_line
30
+ str = "foo"
31
+ assert str.display(false) == str
32
+ $stdout.rewind
33
+ assert $stdout.gets == str
34
+ end
35
+
36
+ end
@@ -0,0 +1,11 @@
1
+ require 'minitest/autorun'
2
+ require 'shenanigans/string/in_groups_of'
3
+
4
+ class InGroupsOf < MiniTest::Unit::TestCase
5
+ def test_in_groups_of
6
+ str = "aabbcc"
7
+ assert str.in_groups_of(2) == ['aa', 'bb', 'cc']
8
+ assert "".in_groups_of(2) == []
9
+ assert_raises(ArgumentError) { "".in_groups_of(0) }
10
+ end
11
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shenanigans
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-09 00:00:00.000000000 Z
12
+ date: 2012-08-20 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description:
15
15
  email: citizen428@gmail.com
@@ -59,6 +59,7 @@ files:
59
59
  - doc/Object.html
60
60
  - doc/rdoc.css
61
61
  - doc/README_rdoc.html
62
+ - doc/String.html
62
63
  - doc/table_of_contents.html
63
64
  - lib/shenanigans/array/caret.rb
64
65
  - lib/shenanigans/array/random_subarray.rb
@@ -78,6 +79,8 @@ files:
78
79
  - lib/shenanigans/object/it.rb
79
80
  - lib/shenanigans/object.rb
80
81
  - lib/shenanigans/README.mdown
82
+ - lib/shenanigans/string/in_groups_of.rb
83
+ - lib/shenanigans/string.rb
81
84
  - lib/shenanigans.rb
82
85
  - test/array/test_caret.rb
83
86
  - test/array/test_random_subarray.rb
@@ -91,7 +94,9 @@ files:
91
94
  - test/kernel/test_with.rb
92
95
  - test/object/test_display.rb
93
96
  - test/object/test_it.rb
94
- homepage: https://github.com/citizen428/shenanigans
97
+ - test/string/test_display.rb
98
+ - test/string/test_in_groups_of.rb
99
+ homepage: http://rubydoc.info/gems/shenanigans/frames
95
100
  licenses: []
96
101
  post_install_message:
97
102
  rdoc_options: []