shenanigans 1.0.1 → 1.0.2
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.
- data/doc/Array.html +3 -1
- data/doc/Hash.html +194 -0
- data/doc/Kernel.html +2 -0
- data/doc/Object.html +2 -0
- data/doc/README_rdoc.html +2 -0
- data/doc/created.rid +5 -3
- data/doc/index.html +2 -0
- data/doc/js/search_index.js +1 -1
- data/doc/table_of_contents.html +5 -0
- data/lib/shenanigans/array/zip_with.rb +1 -1
- data/lib/shenanigans/hash/has_shape_pred.rb +18 -0
- data/lib/shenanigans/hash.rb +1 -0
- data/lib/shenanigans.rb +1 -0
- data/test/hash/test_has_shape_pred.rb +40 -0
- metadata +6 -2
data/doc/Array.html
CHANGED
@@ -98,6 +98,8 @@
|
|
98
98
|
|
99
99
|
<li><a href="./Array.html">Array</a>
|
100
100
|
|
101
|
+
<li><a href="./Hash.html">Hash</a>
|
102
|
+
|
101
103
|
<li><a href="./Kernel.html">Kernel</a>
|
102
104
|
|
103
105
|
<li><a href="./Object.html">Object</a>
|
@@ -196,7 +198,7 @@ shorter of the two arrays.</p>
|
|
196
198
|
|
197
199
|
<p>For more complex combinations, a block can be provided:</p>
|
198
200
|
|
199
|
-
<pre class="ruby">[<span class="ruby-value">1</span>,<span class="ruby-value">2</span>,<span class="ruby-value">3</span>].<span class="ruby-identifier">
|
201
|
+
<pre class="ruby">[<span class="ruby-value">1</span>,<span class="ruby-value">2</span>,<span class="ruby-value">3</span>].<span class="ruby-identifier">zip_with</span>([<span class="ruby-value">6</span>,<span class="ruby-value">5</span>,<span class="ruby-value">4</span>]) { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span>,<span class="ruby-identifier">b</span><span class="ruby-operator">|</span> <span class="ruby-value">3</span>*<span class="ruby-identifier">a</span><span class="ruby-operator">+</span><span class="ruby-value">2</span>*<span class="ruby-identifier">b</span> }
|
200
202
|
<span class="ruby-comment">#=> [15, 16, 17]</span>
|
201
203
|
</pre>
|
202
204
|
|
data/doc/Hash.html
ADDED
@@ -0,0 +1,194 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
6
|
+
|
7
|
+
<title>class Hash - 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/hash/has_shape_pred.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-has_shape-3F">#has_shape?</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="./Hash.html">Hash</a>
|
99
|
+
|
100
|
+
<li><a href="./Kernel.html">Kernel</a>
|
101
|
+
|
102
|
+
<li><a href="./Object.html">Object</a>
|
103
|
+
|
104
|
+
</ul>
|
105
|
+
</nav>
|
106
|
+
|
107
|
+
</div>
|
108
|
+
</nav>
|
109
|
+
|
110
|
+
<div id="documentation">
|
111
|
+
<h1 class="class">class Hash</h1>
|
112
|
+
|
113
|
+
<div id="description" class="description">
|
114
|
+
|
115
|
+
</div><!-- description -->
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
|
120
|
+
<section id="5Buntitled-5D" class="documentation-section">
|
121
|
+
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
<!-- Methods -->
|
130
|
+
|
131
|
+
<section id="public-instance-5Buntitled-5D-method-details" class="method-section section">
|
132
|
+
<h3 class="section-header">Public Instance Methods</h3>
|
133
|
+
|
134
|
+
|
135
|
+
<div id="method-i-has_shape-3F" class="method-detail ">
|
136
|
+
|
137
|
+
<div class="method-heading">
|
138
|
+
<span class="method-name">has_shape?</span><span
|
139
|
+
class="method-args">(shape)</span>
|
140
|
+
<span class="method-click-advice">click to toggle source</span>
|
141
|
+
</div>
|
142
|
+
|
143
|
+
|
144
|
+
<div class="method-description">
|
145
|
+
|
146
|
+
<p>Checks if a hash has a certain structure.</p>
|
147
|
+
|
148
|
+
<pre class="ruby"><span class="ruby-identifier">h</span> = { <span class="ruby-identifier">k1</span><span class="ruby-operator">:</span> <span class="ruby-value">1</span>, <span class="ruby-identifier">k2</span><span class="ruby-operator">:</span> <span class="ruby-string">"1"</span> }
|
149
|
+
<span class="ruby-identifier">h</span>.<span class="ruby-identifier">has_shape?</span>(<span class="ruby-identifier">k1</span><span class="ruby-operator">:</span> <span class="ruby-constant">Fixnum</span>, <span class="ruby-identifier">k2</span><span class="ruby-operator">:</span> <span class="ruby-constant">String</span>)
|
150
|
+
<span class="ruby-comment">#=> true</span>
|
151
|
+
<span class="ruby-identifier">h</span>.<span class="ruby-identifier">has_shape?</span>(<span class="ruby-identifier">k1</span><span class="ruby-operator">:</span> <span class="ruby-constant">Class</span>, <span class="ruby-identifier">k2</span><span class="ruby-operator">:</span> <span class="ruby-constant">String</span>)
|
152
|
+
<span class="ruby-comment">#=> false</span>
|
153
|
+
</pre>
|
154
|
+
|
155
|
+
<p>It also works with compound data structures.</p>
|
156
|
+
|
157
|
+
<pre class="ruby"><span class="ruby-identifier">h</span> = { <span class="ruby-identifier">k1</span><span class="ruby-operator">:</span> [], <span class="ruby-identifier">k2</span><span class="ruby-operator">:</span> { <span class="ruby-identifier">k3</span><span class="ruby-operator">:</span> <span class="ruby-constant">Struct</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">"Foo"</span>) } }
|
158
|
+
<span class="ruby-identifier">shape</span> = { <span class="ruby-identifier">k1</span><span class="ruby-operator">:</span> <span class="ruby-constant">Array</span>, <span class="ruby-identifier">k2</span><span class="ruby-operator">:</span> { <span class="ruby-identifier">k3</span><span class="ruby-operator">:</span> <span class="ruby-constant">Module</span> } }
|
159
|
+
<span class="ruby-identifier">h</span>.<span class="ruby-identifier">has_shape?</span>(<span class="ruby-identifier">shape</span>)
|
160
|
+
<span class="ruby-comment">#=> true</span>
|
161
|
+
</pre>
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
<div class="method-source-code" id="has_shape-3F-source">
|
166
|
+
<pre><span class="ruby-comment"># File lib/shenanigans/hash/has_shape_pred.rb, line 13</span>
|
167
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">has_shape?</span>(<span class="ruby-identifier">shape</span>)
|
168
|
+
<span class="ruby-identifier">all?</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
|
169
|
+
<span class="ruby-constant">Hash</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">v</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">has_shape?</span>(<span class="ruby-identifier">shape</span>[<span class="ruby-identifier">k</span>]) <span class="ruby-operator">:</span> <span class="ruby-identifier">shape</span>[<span class="ruby-identifier">k</span>] <span class="ruby-operator">===</span> <span class="ruby-identifier">v</span>
|
170
|
+
<span class="ruby-keyword">end</span>
|
171
|
+
<span class="ruby-keyword">end</span></pre>
|
172
|
+
</div><!-- has_shape-3F-source -->
|
173
|
+
|
174
|
+
</div>
|
175
|
+
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
</div><!-- has_shape-3F-method -->
|
180
|
+
|
181
|
+
|
182
|
+
</section><!-- public-instance-method-details -->
|
183
|
+
|
184
|
+
</section><!-- 5Buntitled-5D -->
|
185
|
+
|
186
|
+
</div><!-- documentation -->
|
187
|
+
|
188
|
+
|
189
|
+
<footer id="validator-badges">
|
190
|
+
<p><a href="http://validator.w3.org/check/referer">[Validate]</a>
|
191
|
+
<p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 3.12.
|
192
|
+
<p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
|
193
|
+
</footer>
|
194
|
+
|
data/doc/Kernel.html
CHANGED
data/doc/Object.html
CHANGED
data/doc/README_rdoc.html
CHANGED
data/doc/created.rid
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
|
1
|
+
Tue, 19 Jun 2012 21:25:09 +0200
|
2
2
|
README.rdoc Thu, 17 May 2012 11:45:08 +0200
|
3
3
|
lib/shenanigans/array/random_subarray.rb Thu, 17 May 2012 00:03:23 +0200
|
4
|
-
lib/shenanigans/array/zip_with.rb
|
4
|
+
lib/shenanigans/array/zip_with.rb Tue, 19 Jun 2012 21:23:27 +0200
|
5
5
|
lib/shenanigans/array.rb Wed, 16 May 2012 20:09:21 +0200
|
6
|
+
lib/shenanigans/hash/has_shape_pred.rb Tue, 19 Jun 2012 21:25:03 +0200
|
7
|
+
lib/shenanigans/hash.rb Tue, 19 Jun 2012 21:04:00 +0200
|
6
8
|
lib/shenanigans/kernel/fn.rb Wed, 16 May 2012 23:57:36 +0200
|
7
9
|
lib/shenanigans/kernel/prompt.rb Thu, 17 May 2012 00:10:42 +0200
|
8
10
|
lib/shenanigans/kernel/with.rb Thu, 17 May 2012 00:00:08 +0200
|
@@ -10,4 +12,4 @@ lib/shenanigans/kernel.rb Wed, 16 May 2012 20:49:22 +0200
|
|
10
12
|
lib/shenanigans/object/display.rb Fri, 25 May 2012 17:29:45 +0200
|
11
13
|
lib/shenanigans/object/identity.rb Wed, 16 May 2012 23:51:07 +0200
|
12
14
|
lib/shenanigans/object.rb Fri, 25 May 2012 15:31:08 +0200
|
13
|
-
lib/shenanigans.rb
|
15
|
+
lib/shenanigans.rb Tue, 19 Jun 2012 21:04:30 +0200
|
data/doc/index.html
CHANGED
data/doc/js/search_index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
var search_data = {"index":{"searchIndex":["array","kernel","object","d()","display()","fn()","identity()","prompt()","random_subarray()","with()","zip_with()","readme"],"longSearchIndex":["array","kernel","object","object#d()","object#display()","kernel#fn()","object#identity()","kernel#prompt()","array#random_subarray()","kernel#with()","array#zip_with()",""],"info":[["Array","","Array.html","",""],["Kernel","","Kernel.html","",""],["Object","","Object.html","",""],["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>"foo".display ...</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>["foo bar", "baz qux"].map ...</pre>\n"],["identity","Object","Object.html#method-i-identity","()","<p>An identity method that provides access to an object’s <code>self</code>.\n\n<pre>[1,2,3,4,5,1,2,2,3].group_by(&:identity) ...</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"],["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","hash","kernel","object","d()","display()","fn()","has_shape?()","identity()","prompt()","random_subarray()","with()","zip_with()","readme"],"longSearchIndex":["array","hash","kernel","object","object#d()","object#display()","kernel#fn()","hash#has_shape?()","object#identity()","kernel#prompt()","array#random_subarray()","kernel#with()","array#zip_with()",""],"info":[["Array","","Array.html","",""],["Hash","","Hash.html","",""],["Kernel","","Kernel.html","",""],["Object","","Object.html","",""],["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>"foo".display ...</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>["foo bar", "baz qux"].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: "1" }\nh.has_shape?(k1: Fixnum, k2: String) ...</pre>\n"],["identity","Object","Object.html#method-i-identity","()","<p>An identity method that provides access to an object’s <code>self</code>.\n\n<pre>[1,2,3,4,5,1,2,2,3].group_by(&:identity) ...</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"],["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"]]}}
|
data/doc/table_of_contents.html
CHANGED
@@ -46,6 +46,9 @@
|
|
46
46
|
<ul>
|
47
47
|
<li class="class">
|
48
48
|
<a href="Array.html">Array</a>
|
49
|
+
</li>
|
50
|
+
<li class="class">
|
51
|
+
<a href="Hash.html">Hash</a>
|
49
52
|
</li>
|
50
53
|
<li class="module">
|
51
54
|
<a href="Kernel.html">Kernel</a>
|
@@ -65,6 +68,8 @@
|
|
65
68
|
|
66
69
|
<li class="method"><a href="Kernel.html#method-i-fn">#fn — Kernel</a>
|
67
70
|
|
71
|
+
<li class="method"><a href="Hash.html#method-i-has_shape-3F">#has_shape? — Hash</a>
|
72
|
+
|
68
73
|
<li class="method"><a href="Object.html#method-i-identity">#identity — Object</a>
|
69
74
|
|
70
75
|
<li class="method"><a href="Kernel.html#method-i-prompt">#prompt — Kernel</a>
|
@@ -11,7 +11,7 @@ class Array
|
|
11
11
|
#
|
12
12
|
# For more complex combinations, a block can be provided:
|
13
13
|
#
|
14
|
-
# [1,2,3].
|
14
|
+
# [1,2,3].zip_with([6,5,4]) { |a,b| 3*a+2*b }
|
15
15
|
# #=> [15, 16, 17]
|
16
16
|
def zip_with(other, op=nil)
|
17
17
|
return [] if self.empty? || other.empty?
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class Hash
|
2
|
+
# Checks if a hash has a certain structure.
|
3
|
+
# h = { k1: 1, k2: "1" }
|
4
|
+
# h.has_shape?(k1: Fixnum, k2: String)
|
5
|
+
# #=> true
|
6
|
+
# h.has_shape?(k1: Class, k2: String)
|
7
|
+
# #=> false
|
8
|
+
# It also works with compound data structures.
|
9
|
+
# h = { k1: [], k2: { k3: Struct.new("Foo") } }
|
10
|
+
# shape = { k1: Array, k2: { k3: Module } }
|
11
|
+
# h.has_shape?(shape)
|
12
|
+
# #=> true
|
13
|
+
def has_shape?(shape)
|
14
|
+
all? do |k, v|
|
15
|
+
Hash === v ? v.has_shape?(shape[k]) : shape[k] === v
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require_relative 'hash/has_shape_pred'
|
data/lib/shenanigans.rb
CHANGED
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'shenanigans/hash/has_shape_pred'
|
3
|
+
|
4
|
+
class HasShape < MiniTest::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@hash = {
|
7
|
+
k1: 1.0,
|
8
|
+
k2: 1,
|
9
|
+
k3: {
|
10
|
+
k4: "1",
|
11
|
+
k5: {
|
12
|
+
k6: Array
|
13
|
+
}
|
14
|
+
}
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_has_shape
|
19
|
+
shape_pass = {
|
20
|
+
k1: Float,
|
21
|
+
k2: Integer,
|
22
|
+
k3: {
|
23
|
+
k4: String,
|
24
|
+
k5: {
|
25
|
+
k6: Class
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
assert @hash.has_shape?(shape_pass)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_has_shape_fail
|
34
|
+
shape_fail = {
|
35
|
+
k1: Float
|
36
|
+
}
|
37
|
+
|
38
|
+
assert !@hash.has_shape?(shape_fail)
|
39
|
+
end
|
40
|
+
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.
|
4
|
+
version: 1.0.2
|
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-
|
12
|
+
date: 2012-06-19 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description:
|
15
15
|
email: citizen428@gmail.com
|
@@ -22,6 +22,7 @@ files:
|
|
22
22
|
- README.rdoc
|
23
23
|
- doc/Array.html
|
24
24
|
- doc/created.rid
|
25
|
+
- doc/Hash.html
|
25
26
|
- doc/images/add.png
|
26
27
|
- doc/images/brick.png
|
27
28
|
- doc/images/brick_link.png
|
@@ -61,6 +62,8 @@ files:
|
|
61
62
|
- lib/shenanigans/array/random_subarray.rb
|
62
63
|
- lib/shenanigans/array/zip_with.rb
|
63
64
|
- lib/shenanigans/array.rb
|
65
|
+
- lib/shenanigans/hash/has_shape_pred.rb
|
66
|
+
- lib/shenanigans/hash.rb
|
64
67
|
- lib/shenanigans/kernel/fn.rb
|
65
68
|
- lib/shenanigans/kernel/prompt.rb
|
66
69
|
- lib/shenanigans/kernel/with.rb
|
@@ -73,6 +76,7 @@ files:
|
|
73
76
|
- lib/shenanigans.rb
|
74
77
|
- test/array/test_random_subarray.rb
|
75
78
|
- test/array/test_zip_with.rb
|
79
|
+
- test/hash/test_has_shape_pred.rb
|
76
80
|
- test/kernel/test_fn.rb
|
77
81
|
- test/kernel/test_prompt.rb
|
78
82
|
- test/kernel/test_with.rb
|