enumerate_hash_values 0.1.1 → 0.2.0
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.
@@ -1,2 +1,3 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'enumerate_hash_values/version'
|
2
|
+
require 'enumerate_hash_values/core_extensions/enumerable'
|
3
|
+
require 'enumerate_hash_values/core_extensions/hash'
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Enumerable # :nodoc:
|
2
|
+
|
3
|
+
# Wraps the common pattern of doing:
|
4
|
+
#
|
5
|
+
# enumerable.inject({}) do |hash, item|
|
6
|
+
# some_key = item.key
|
7
|
+
# some_value = item.value
|
8
|
+
# hash[some_key] = some_value
|
9
|
+
# hash
|
10
|
+
# end
|
11
|
+
#
|
12
|
+
# Using <tt>collect_to_hash</tt> instead:
|
13
|
+
#
|
14
|
+
# enumerable.collect_to_hash do |item|
|
15
|
+
# some_key = item.key
|
16
|
+
# some_value = item.value
|
17
|
+
# [some_key, some_value]
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
# Examples:
|
21
|
+
#
|
22
|
+
# (1..3).collect_to_hash { |number| [number, number * 10] } # => { 1 => 10, 2 = > 20, 3 => 30 }
|
23
|
+
# %w(a b c).map_to_hash { |letter| [letter, letter[0]] } # => { 'a' => 97, 'b' => 98, 'c' => 99 }
|
24
|
+
#
|
25
|
+
# Aliases <tt>map_to_hash</tt>
|
26
|
+
def collect_to_hash(hash_class = Hash)
|
27
|
+
raise ArguementError.new("#{hash_class} is not a Hash") unless hash_class.ancestors.include?(Hash)
|
28
|
+
|
29
|
+
inject(hash_class.new) do |hash, item|
|
30
|
+
key, value = yield(item)
|
31
|
+
hash[key] = value
|
32
|
+
hash
|
33
|
+
end
|
34
|
+
end
|
35
|
+
alias_method :map_to_hash, :collect_to_hash
|
36
|
+
|
37
|
+
# Similar to <tt>collect_to_hash</tt>, but the specified block only needs to
|
38
|
+
# return the hash value for each enumerated item. The items themselves will
|
39
|
+
# serve as the hash keys.
|
40
|
+
#
|
41
|
+
# (1..3).collect_to_hash_values { |number| number * 10 } # => { 1 => 10, 2 = > 20, 3 => 30 }
|
42
|
+
# %w(a b c).map_to_hash_values(&:to_sym) # => { 'a' => :a, 'b' => :b, 'c' => :c }
|
43
|
+
#
|
44
|
+
# Aliases <tt>map_to_hash_values</tt>
|
45
|
+
def collect_to_hash_values(hash_class = Hash)
|
46
|
+
collect_to_hash(hash_class) { |item| [item, yield(item)] }
|
47
|
+
end
|
48
|
+
alias_method :map_to_hash_values, :collect_to_hash_values
|
49
|
+
|
50
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enumerate_hash_values
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Clyde Law
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-02-21 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -35,7 +35,8 @@ files:
|
|
35
35
|
- Rakefile
|
36
36
|
- enumerate_hash_values.gemspec
|
37
37
|
- lib/enumerate_hash_values.rb
|
38
|
-
- lib/enumerate_hash_values/core_extensions.rb
|
38
|
+
- lib/enumerate_hash_values/core_extensions/enumerable.rb
|
39
|
+
- lib/enumerate_hash_values/core_extensions/hash.rb
|
39
40
|
- lib/enumerate_hash_values/version.rb
|
40
41
|
has_rdoc: true
|
41
42
|
homepage: http://github.com/Umofomia/enumerate_hash_values
|