hash-utils 0.3.0 → 0.3.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.
- data/VERSION +1 -1
- data/hash-utils.gemspec +2 -2
- data/lib/hash-utils/array.rb +16 -0
- data/lib/hash-utils/hash.rb +68 -1
- data/lib/hash-utils/numeric.rb +8 -0
- data/lib/hash-utils/string.rb +11 -0
- data/lib/hash-utils/symbol.rb +9 -0
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
data/hash-utils.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{hash-utils}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Martin Kozák"]
|
12
|
-
s.date = %q{2011-01-
|
12
|
+
s.date = %q{2011-01-20}
|
13
13
|
s.email = %q{martinkozak@martinkozak.net}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE.txt",
|
data/lib/hash-utils/array.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
|
3
3
|
|
4
|
+
##
|
5
|
+
# Array extension.
|
6
|
+
#
|
7
|
+
|
4
8
|
class Array
|
5
9
|
|
6
10
|
##
|
@@ -9,6 +13,10 @@ class Array
|
|
9
13
|
# Works similar to #reject!, but returns removed items instead
|
10
14
|
# of remaining items.
|
11
15
|
#
|
16
|
+
# @param [Proc] block selecting block
|
17
|
+
# @return [Array] removed values
|
18
|
+
# @since 0.3.0
|
19
|
+
#
|
12
20
|
|
13
21
|
def remove!(&block)
|
14
22
|
result = [ ]
|
@@ -30,6 +38,10 @@ class Array
|
|
30
38
|
#
|
31
39
|
# If it's empty, returns <tt>true</tt>.
|
32
40
|
#
|
41
|
+
# @param [Proc] block checking block
|
42
|
+
# @return [Boolean] 'true' if yes, 'false' in otherwise
|
43
|
+
# @since 0.2.0
|
44
|
+
#
|
33
45
|
|
34
46
|
def all?(&block)
|
35
47
|
if self.empty?
|
@@ -49,6 +61,10 @@ class Array
|
|
49
61
|
# Checks, at least one value follows condition expressed in
|
50
62
|
# block. Block must return Boolean.
|
51
63
|
#
|
64
|
+
# @param [Proc] block checking block
|
65
|
+
# @return [Boolean] 'true' if yes, 'false' in otherwise
|
66
|
+
# @since 0.2.0
|
67
|
+
#
|
52
68
|
|
53
69
|
def some?(&block)
|
54
70
|
self.each do |v|
|
data/lib/hash-utils/hash.rb
CHANGED
@@ -1,11 +1,22 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
|
3
3
|
|
4
|
+
|
5
|
+
##
|
6
|
+
# Hash extension.
|
7
|
+
#
|
8
|
+
|
4
9
|
class Hash
|
5
10
|
|
6
11
|
##
|
7
12
|
# Defines hash by setting the default value or Proc and content.
|
8
13
|
#
|
14
|
+
# @param [Hash] values initial values
|
15
|
+
# @param [Object] default default value
|
16
|
+
# @param [Proc] block default block
|
17
|
+
# @return [Hash] new hash
|
18
|
+
# @since 0.3.0
|
19
|
+
#
|
9
20
|
|
10
21
|
def self.define(values = { }, default = nil, &block)
|
11
22
|
hash = self[values]
|
@@ -15,6 +26,12 @@ class Hash
|
|
15
26
|
##
|
16
27
|
# Creates hash by setting default settings in one call.
|
17
28
|
#
|
29
|
+
# @param [Hash] values initial values
|
30
|
+
# @param [Object] default default value
|
31
|
+
# @param [Proc] block default block
|
32
|
+
# @return [Hash] new hash
|
33
|
+
# @since 0.3.0
|
34
|
+
#
|
18
35
|
|
19
36
|
def self.create(default = nil, hash = { }, &block)
|
20
37
|
hash.default = default
|
@@ -30,6 +47,9 @@ class Hash
|
|
30
47
|
# Recreates the hash, so creates empty one and assigns
|
31
48
|
# the same default values.
|
32
49
|
#
|
50
|
+
# @return [Hash] new hash
|
51
|
+
# @since 0.3.0
|
52
|
+
#
|
33
53
|
|
34
54
|
def recreate
|
35
55
|
self.class::create(self.default, &self.default_proc)
|
@@ -39,6 +59,8 @@ class Hash
|
|
39
59
|
# Recreates the hash in place, so creates empty one, assigns
|
40
60
|
# the same default values and replaces the old one.
|
41
61
|
#
|
62
|
+
# @since 0.3.0
|
63
|
+
#
|
42
64
|
|
43
65
|
def recreate!
|
44
66
|
self.replace(self.recreate)
|
@@ -48,6 +70,10 @@ class Hash
|
|
48
70
|
# Moves selected pairs outside the hash, so returns them.
|
49
71
|
# Output hash has the same default settings.
|
50
72
|
#
|
73
|
+
# @param [Proc] block selecting block
|
74
|
+
# @return [Hash] removed selected pairs
|
75
|
+
# @since 0.3.0
|
76
|
+
#
|
51
77
|
|
52
78
|
def remove!(&block)
|
53
79
|
result = self.recreate
|
@@ -71,6 +97,9 @@ class Hash
|
|
71
97
|
# Returns a copy of <tt>self</tt> with all <tt>nil</tt>
|
72
98
|
# elements removed.
|
73
99
|
#
|
100
|
+
# @return [Hash] new hash
|
101
|
+
# @since 0.1.0
|
102
|
+
#
|
74
103
|
|
75
104
|
def compact
|
76
105
|
self.reject { |k, v| v.nil? }
|
@@ -78,7 +107,10 @@ class Hash
|
|
78
107
|
|
79
108
|
##
|
80
109
|
# Removes <tt>nil</tt> elements from the hash. Returns <tt>nil</tt>
|
81
|
-
# if no changes were made, otherwise returns <tt>self</
|
110
|
+
# if no changes were made, otherwise returns <tt>self</tt>.
|
111
|
+
#
|
112
|
+
# @return [Hash] new hash
|
113
|
+
# @since 0.1.0
|
82
114
|
#
|
83
115
|
|
84
116
|
def compact!
|
@@ -88,6 +120,10 @@ class Hash
|
|
88
120
|
##
|
89
121
|
# Returns a new hash with the results of running block once for
|
90
122
|
# every pair in <tt>self</tt>.
|
123
|
+
#
|
124
|
+
# @param [Proc] block evaluating block
|
125
|
+
# @return [Hash] new hash
|
126
|
+
# @since 0.1.0
|
91
127
|
#
|
92
128
|
|
93
129
|
def map_pairs(&block)
|
@@ -107,6 +143,9 @@ class Hash
|
|
107
143
|
# Emulates #map_pairs on place. In fact, replaces old hash by
|
108
144
|
# new one.
|
109
145
|
#
|
146
|
+
# @param [Proc] block evaluating block
|
147
|
+
# @since 0.1.0
|
148
|
+
#
|
110
149
|
|
111
150
|
def map_pairs!(&block)
|
112
151
|
self.replace(self.map_pairs(&block))
|
@@ -118,6 +157,10 @@ class Hash
|
|
118
157
|
# Returns a new hash with the results of running block once for
|
119
158
|
# every key in <tt>self</tt>.
|
120
159
|
#
|
160
|
+
# @param [Proc] block evaluating block
|
161
|
+
# @return [Hash] new hash
|
162
|
+
# @since 0.1.0
|
163
|
+
#
|
121
164
|
|
122
165
|
def map_keys(&block)
|
123
166
|
self.map_pairs do |k, v|
|
@@ -131,6 +174,9 @@ class Hash
|
|
131
174
|
# Emulates #map_keys on place. In fact, replaces old hash by
|
132
175
|
# new one.
|
133
176
|
#
|
177
|
+
# @param [Proc] block evaluating block
|
178
|
+
# @since 0.1.0
|
179
|
+
#
|
134
180
|
|
135
181
|
def map_keys!(&block)
|
136
182
|
self.replace(self.map_keys(&block))
|
@@ -141,6 +187,9 @@ class Hash
|
|
141
187
|
##
|
142
188
|
# Converts all keys to symbols.
|
143
189
|
#
|
190
|
+
# @return [Hash] new hash
|
191
|
+
# @since 0.1.0
|
192
|
+
#
|
144
193
|
|
145
194
|
def keys_to_sym
|
146
195
|
self.map_keys { |k| k.to_sym }
|
@@ -150,6 +199,8 @@ class Hash
|
|
150
199
|
# Emulates #keys_to_sym on place. In fact, replaces old hash by
|
151
200
|
# new one.
|
152
201
|
#
|
202
|
+
# @since 0.1.0
|
203
|
+
#
|
153
204
|
|
154
205
|
def keys_to_sym!
|
155
206
|
self.replace(self.keys_to_sym)
|
@@ -161,6 +212,10 @@ class Hash
|
|
161
212
|
#
|
162
213
|
# If it's empty, returns <tt>true</tt>.
|
163
214
|
#
|
215
|
+
# @param [Proc] block checking block
|
216
|
+
# @return [Boolean] 'true' if yes, 'false' in otherwise
|
217
|
+
# @since 0.2.0
|
218
|
+
#
|
164
219
|
|
165
220
|
def all?(&block)
|
166
221
|
if self.empty?
|
@@ -182,6 +237,10 @@ class Hash
|
|
182
237
|
#
|
183
238
|
# If it's empty, returns <tt>true</tt>.
|
184
239
|
#
|
240
|
+
# @param [Proc] block checking block
|
241
|
+
# @return [Boolean] 'true' if yes, 'false' in otherwise
|
242
|
+
# @since 0.2.0
|
243
|
+
#
|
185
244
|
|
186
245
|
def all_pairs?(&block)
|
187
246
|
if self.empty?
|
@@ -201,6 +260,10 @@ class Hash
|
|
201
260
|
# Checks, at least one element value follows condition expressed in
|
202
261
|
# block. Block must return Boolean.
|
203
262
|
#
|
263
|
+
# @param [Proc] block checking block
|
264
|
+
# @return [Boolean] 'true' if yes, 'false' in otherwise
|
265
|
+
# @since 0.2.0
|
266
|
+
#
|
204
267
|
|
205
268
|
def some?(&block)
|
206
269
|
self.each_value do |v|
|
@@ -216,6 +279,10 @@ class Hash
|
|
216
279
|
# Checks, at least one element follows condition expressed in
|
217
280
|
# block. Block must return Boolean.
|
218
281
|
#
|
282
|
+
# @param [Proc] block checking block
|
283
|
+
# @return [Boolean] 'true' if yes, 'false' in otherwise
|
284
|
+
# @since 0.2.0
|
285
|
+
#
|
219
286
|
|
220
287
|
def some_pairs?(&block)
|
221
288
|
self.each_pair do |k, v|
|
data/lib/hash-utils/numeric.rb
CHANGED
@@ -1,10 +1,18 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
|
3
3
|
|
4
|
+
##
|
5
|
+
# Numeric extension.
|
6
|
+
#
|
7
|
+
|
4
8
|
class Numeric
|
5
9
|
##
|
6
10
|
# Indicates numeric is in some object which supports #include?.
|
7
11
|
#
|
12
|
+
# @param [Object] range container for analyzing
|
13
|
+
# @param [Boolean] 'true' if yes, 'false' in otherwise
|
14
|
+
# @since 0.3.0
|
15
|
+
#
|
8
16
|
|
9
17
|
def in?(range)
|
10
18
|
range.include? self
|
data/lib/hash-utils/string.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
|
3
3
|
|
4
|
+
##
|
5
|
+
# String extension.
|
6
|
+
#
|
7
|
+
|
4
8
|
class String
|
5
9
|
##
|
6
10
|
# Holds numeric matcher.
|
@@ -11,6 +15,10 @@ class String
|
|
11
15
|
##
|
12
16
|
# Indicates string is in some object which supports #include?.
|
13
17
|
#
|
18
|
+
# @param [Object] range container for analyzing
|
19
|
+
# @param [Boolean] 'true' if yes, 'false' in otherwise
|
20
|
+
# @since 0.3.0
|
21
|
+
#
|
14
22
|
|
15
23
|
def in?(range)
|
16
24
|
range.include? self
|
@@ -19,6 +27,9 @@ class String
|
|
19
27
|
##
|
20
28
|
# Indicates, string is numeric, so consists of numbers only.
|
21
29
|
#
|
30
|
+
# @return [Boolean] 'true' if yes, 'false' in otherwise
|
31
|
+
# @since 0.3.0
|
32
|
+
#
|
22
33
|
|
23
34
|
def numeric?
|
24
35
|
if self.match(self.class::NUMERIC)
|
data/lib/hash-utils/symbol.rb
CHANGED
@@ -1,10 +1,19 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
|
3
3
|
|
4
|
+
|
5
|
+
##
|
6
|
+
# Symbol extension.
|
7
|
+
#
|
8
|
+
|
4
9
|
class Symbol
|
5
10
|
##
|
6
11
|
# Indicates symbol is in some object which supports #include?.
|
7
12
|
#
|
13
|
+
# @param [Object] range container for analyzing
|
14
|
+
# @param [Boolean] 'true' if yes, 'false' in otherwise
|
15
|
+
# @since 0.3.0
|
16
|
+
#
|
8
17
|
|
9
18
|
def in?(range)
|
10
19
|
range.include? self
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
8
|
+
- 1
|
9
|
+
version: 0.3.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- "Martin Koz\xC3\xA1k"
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-01-
|
17
|
+
date: 2011-01-20 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -85,7 +85,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
85
85
|
requirements:
|
86
86
|
- - ">="
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
hash: -
|
88
|
+
hash: -3792094260852597544
|
89
89
|
segments:
|
90
90
|
- 0
|
91
91
|
version: "0"
|