gorillib 0.0.5 → 0.0.6
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/VERSION +1 -1
- data/gorillib.gemspec +8 -3
- data/lib/gorillib/array/deep_compact.rb +22 -0
- data/lib/gorillib/hash/deep_compact.rb +24 -0
- data/spec/deep_compact_spec.rb +36 -0
- metadata +32 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.6
|
data/gorillib.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{gorillib}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Infochimps"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-05-05}
|
13
13
|
s.description = %q{Gorillib: infochimps lightweight subset of ruby convenience methods}
|
14
14
|
s.email = %q{coders@infochimps.org}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -27,12 +27,14 @@ Gem::Specification.new do |s|
|
|
27
27
|
"gorillib.gemspec",
|
28
28
|
"lib/gorillib.rb",
|
29
29
|
"lib/gorillib/array/compact_blank.rb",
|
30
|
+
"lib/gorillib/array/deep_compact.rb",
|
30
31
|
"lib/gorillib/array/extract_options.rb",
|
31
32
|
"lib/gorillib/base.rb",
|
32
33
|
"lib/gorillib/datetime/flat.rb",
|
33
34
|
"lib/gorillib/datetime/parse.rb",
|
34
35
|
"lib/gorillib/enumerable/sum.rb",
|
35
36
|
"lib/gorillib/hash/compact.rb",
|
37
|
+
"lib/gorillib/hash/deep_compact.rb",
|
36
38
|
"lib/gorillib/hash/deep_merge.rb",
|
37
39
|
"lib/gorillib/hash/keys.rb",
|
38
40
|
"lib/gorillib/hash/reverse_merge.rb",
|
@@ -54,6 +56,7 @@ Gem::Specification.new do |s|
|
|
54
56
|
"lib/gorillib/string/inflections.rb",
|
55
57
|
"lib/gorillib/string/truncate.rb",
|
56
58
|
"spec/blank_spec.rb",
|
59
|
+
"spec/deep_compact_spec.rb",
|
57
60
|
"spec/gorillib_spec.rb",
|
58
61
|
"spec/numeric_spec.rb",
|
59
62
|
"spec/rcov.opts",
|
@@ -89,10 +92,11 @@ Gem::Specification.new do |s|
|
|
89
92
|
s.homepage = %q{http://infochimps.com/labs}
|
90
93
|
s.licenses = ["MIT"]
|
91
94
|
s.require_paths = ["lib"]
|
92
|
-
s.rubygems_version = %q{1.
|
95
|
+
s.rubygems_version = %q{1.3.7}
|
93
96
|
s.summary = %q{include only what you need. No dependencies, no creep}
|
94
97
|
s.test_files = [
|
95
98
|
"spec/blank_spec.rb",
|
99
|
+
"spec/deep_compact_spec.rb",
|
96
100
|
"spec/gorillib_spec.rb",
|
97
101
|
"spec/numeric_spec.rb",
|
98
102
|
"spec/spec_helper.rb",
|
@@ -124,6 +128,7 @@ Gem::Specification.new do |s|
|
|
124
128
|
]
|
125
129
|
|
126
130
|
if s.respond_to? :specification_version then
|
131
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
127
132
|
s.specification_version = 3
|
128
133
|
|
129
134
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'gorillib/object/blank'
|
2
|
+
|
3
|
+
#
|
4
|
+
# deep_compact! removes all 'blank?' elements in the array in place, recursively
|
5
|
+
#
|
6
|
+
class Array
|
7
|
+
def deep_compact!
|
8
|
+
self.map! do |val|
|
9
|
+
case val
|
10
|
+
when Hash
|
11
|
+
val = val.deep_compact!
|
12
|
+
when Array
|
13
|
+
val = val.deep_compact!
|
14
|
+
when String
|
15
|
+
val = nil if val.blank?
|
16
|
+
end
|
17
|
+
val
|
18
|
+
end
|
19
|
+
self.compact!
|
20
|
+
self.blank? ? nil : self
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'gorillib/object/blank'
|
2
|
+
|
3
|
+
#
|
4
|
+
# deep_compact! removes all keys with 'blank?' values in the hash, in place, recursively
|
5
|
+
#
|
6
|
+
class Hash
|
7
|
+
def deep_compact!
|
8
|
+
self.each do |key, val|
|
9
|
+
case val
|
10
|
+
when Hash
|
11
|
+
val = val.deep_compact!
|
12
|
+
self.delete(key) if val.blank?
|
13
|
+
when Array
|
14
|
+
val = val.deep_compact!
|
15
|
+
self.delete(key) if val.blank?
|
16
|
+
when String
|
17
|
+
self.delete(key) if val.blank?
|
18
|
+
when nil
|
19
|
+
self.delete(key)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
self.blank? ? nil : self
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'gorillib/hash/deep_compact'
|
3
|
+
require 'gorillib/array/deep_compact'
|
4
|
+
|
5
|
+
describe Hash do
|
6
|
+
|
7
|
+
it "should respond to the method deep_compact!" do
|
8
|
+
{ }.should respond_to :deep_compact!
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should return nil if all values evaluate as blank" do
|
12
|
+
{ :a=>nil, :b=>"", :c=>[] }.deep_compact!.should be nil
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should return a hash with all blank values removed recursively" do
|
16
|
+
@test_hash = {:e=>["",nil,[],{},"foo",{:a=>[nil,{:c=>["","",[]]}],:b=>nil }]}
|
17
|
+
@test_hash.deep_compact!.should == {:e=>["foo"]}
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
describe Array do
|
23
|
+
|
24
|
+
it "should respond to the method deep_compact!" do
|
25
|
+
[ ].should respond_to :deep_compact!
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should return nil if all values evaluate as blank" do
|
29
|
+
[nil, '', { }].deep_compact!.should be nil
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should return a hash with all blank values removed recursively" do
|
33
|
+
@test_hash = ["",nil,[],{},"foo",{:a=>[nil,{:c=>["","",[]]}],:b=>nil }]
|
34
|
+
@test_hash.deep_compact!.should == ["foo"]
|
35
|
+
end
|
36
|
+
end
|
metadata
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gorillib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
4
|
+
hash: 19
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 6
|
10
|
+
version: 0.0.6
|
6
11
|
platform: ruby
|
7
12
|
authors:
|
8
13
|
- Infochimps
|
@@ -10,7 +15,7 @@ autorequire:
|
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
17
|
|
13
|
-
date: 2011-
|
18
|
+
date: 2011-05-05 00:00:00 -05:00
|
14
19
|
default_executable:
|
15
20
|
dependencies:
|
16
21
|
- !ruby/object:Gem::Dependency
|
@@ -21,6 +26,11 @@ dependencies:
|
|
21
26
|
requirements:
|
22
27
|
- - ~>
|
23
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 7
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
- 6
|
33
|
+
- 0
|
24
34
|
version: 0.6.0
|
25
35
|
type: :development
|
26
36
|
version_requirements: *id001
|
@@ -32,6 +42,11 @@ dependencies:
|
|
32
42
|
requirements:
|
33
43
|
- - ~>
|
34
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 7
|
46
|
+
segments:
|
47
|
+
- 1
|
48
|
+
- 5
|
49
|
+
- 2
|
35
50
|
version: 1.5.2
|
36
51
|
type: :development
|
37
52
|
version_requirements: *id002
|
@@ -43,6 +58,9 @@ dependencies:
|
|
43
58
|
requirements:
|
44
59
|
- - ">="
|
45
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 3
|
62
|
+
segments:
|
63
|
+
- 0
|
46
64
|
version: "0"
|
47
65
|
type: :development
|
48
66
|
version_requirements: *id003
|
@@ -66,12 +84,14 @@ files:
|
|
66
84
|
- gorillib.gemspec
|
67
85
|
- lib/gorillib.rb
|
68
86
|
- lib/gorillib/array/compact_blank.rb
|
87
|
+
- lib/gorillib/array/deep_compact.rb
|
69
88
|
- lib/gorillib/array/extract_options.rb
|
70
89
|
- lib/gorillib/base.rb
|
71
90
|
- lib/gorillib/datetime/flat.rb
|
72
91
|
- lib/gorillib/datetime/parse.rb
|
73
92
|
- lib/gorillib/enumerable/sum.rb
|
74
93
|
- lib/gorillib/hash/compact.rb
|
94
|
+
- lib/gorillib/hash/deep_compact.rb
|
75
95
|
- lib/gorillib/hash/deep_merge.rb
|
76
96
|
- lib/gorillib/hash/keys.rb
|
77
97
|
- lib/gorillib/hash/reverse_merge.rb
|
@@ -93,6 +113,7 @@ files:
|
|
93
113
|
- lib/gorillib/string/inflections.rb
|
94
114
|
- lib/gorillib/string/truncate.rb
|
95
115
|
- spec/blank_spec.rb
|
116
|
+
- spec/deep_compact_spec.rb
|
96
117
|
- spec/gorillib_spec.rb
|
97
118
|
- spec/numeric_spec.rb
|
98
119
|
- spec/rcov.opts
|
@@ -138,22 +159,29 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
138
159
|
requirements:
|
139
160
|
- - ">="
|
140
161
|
- !ruby/object:Gem::Version
|
162
|
+
hash: 3
|
163
|
+
segments:
|
164
|
+
- 0
|
141
165
|
version: "0"
|
142
166
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
167
|
none: false
|
144
168
|
requirements:
|
145
169
|
- - ">="
|
146
170
|
- !ruby/object:Gem::Version
|
171
|
+
hash: 3
|
172
|
+
segments:
|
173
|
+
- 0
|
147
174
|
version: "0"
|
148
175
|
requirements: []
|
149
176
|
|
150
177
|
rubyforge_project:
|
151
|
-
rubygems_version: 1.
|
178
|
+
rubygems_version: 1.3.7
|
152
179
|
signing_key:
|
153
180
|
specification_version: 3
|
154
181
|
summary: include only what you need. No dependencies, no creep
|
155
182
|
test_files:
|
156
183
|
- spec/blank_spec.rb
|
184
|
+
- spec/deep_compact_spec.rb
|
157
185
|
- spec/gorillib_spec.rb
|
158
186
|
- spec/numeric_spec.rb
|
159
187
|
- spec/spec_helper.rb
|