AvantiConveniences 1.0.6 → 1.0.7
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/AvantiConveniences.gemspec +12 -11
- data/History.txt +3 -0
- data/lib/avanti_conveniences.rb +1 -1
- data/lib/hash_extensions.rb +9 -3
- data/test/test_hash_extensions.rb +26 -1
- metadata +2 -2
data/AvantiConveniences.gemspec
CHANGED
@@ -2,41 +2,42 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{AvantiConveniences}
|
5
|
-
s.version = "1.0.
|
6
|
-
|
5
|
+
s.version = "1.0.7"
|
7
6
|
|
8
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
8
|
s.authors = ["Jamie Flournoy"]
|
10
|
-
s.date = %q{2009-
|
9
|
+
s.date = %q{2009-12-28}
|
11
10
|
s.description = %q{AvantiConveniences is a set of convenience code for Ruby on Rails applications.}
|
12
11
|
s.email = ["jamie@pervasivecode.com"]
|
13
12
|
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
|
14
|
-
s.files = ["History.txt", "Manifest.txt", "README.txt", "Rakefile", "lib/arg_checks.rb", "lib/avanti_conveniences.rb", "lib/hash_extensions.rb", "lib/string_extensions.rb", "lib/text_formatter.rb", "lib/uri_extensions.rb", "test/test_arg_checks.rb", "test/test_avanti_conveniences.rb", "test/test_hash_extensions.rb", "test/test_string_extensions.rb", "test/test_text_formatter.rb", "test/test_uri_extensions.rb"]
|
15
|
-
s.has_rdoc = true
|
13
|
+
s.files = ["AvantiConveniences.gemspec", "History.txt", "Manifest.txt", "README.txt", "Rakefile", "lib/arg_checks.rb", "lib/array_extensions.rb", "lib/avanti_conveniences.rb", "lib/die.rb", "lib/float_extensions.rb", "lib/hash_extensions.rb", "lib/string_extensions.rb", "lib/text_formatter.rb", "lib/time_extensions.rb", "lib/uri_extensions.rb", "test/test_arg_checks.rb", "test/test_array_extensions.rb", "test/test_avanti_conveniences.rb", "test/test_die.rb", "test/test_float_extensions.rb", "test/test_hash_extensions.rb", "test/test_string_extensions.rb", "test/test_text_formatter.rb", "test/test_time_extensions.rb", "test/test_uri_extensions.rb"]
|
16
14
|
s.homepage = %q{http://www.pervasivecode.com/blog/avanticonveniences/}
|
17
15
|
s.rdoc_options = ["--main", "README.txt"]
|
18
16
|
s.require_paths = ["lib"]
|
19
17
|
s.rubyforge_project = %q{avanticonveniences}
|
20
|
-
s.rubygems_version = %q{1.3.
|
18
|
+
s.rubygems_version = %q{1.3.5}
|
21
19
|
s.summary = %q{AvantiConveniences is a set of convenience code for Ruby on Rails applications.}
|
22
|
-
s.test_files = ["test/test_arg_checks.rb", "test/test_avanti_conveniences.rb", "test/test_hash_extensions.rb", "test/test_string_extensions.rb", "test/test_text_formatter.rb", "test/test_uri_extensions.rb"]
|
20
|
+
s.test_files = ["test/test_arg_checks.rb", "test/test_array_extensions.rb", "test/test_avanti_conveniences.rb", "test/test_die.rb", "test/test_float_extensions.rb", "test/test_hash_extensions.rb", "test/test_string_extensions.rb", "test/test_text_formatter.rb", "test/test_time_extensions.rb", "test/test_uri_extensions.rb"]
|
23
21
|
|
24
22
|
if s.respond_to? :specification_version then
|
25
23
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
26
|
-
s.specification_version =
|
24
|
+
s.specification_version = 3
|
27
25
|
|
28
26
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
29
27
|
s.add_runtime_dependency(%q<activesupport>, [">= 1.2.6"])
|
30
28
|
s.add_runtime_dependency(%q<text-hyphen>, [">= 1.0.0"])
|
31
|
-
s.add_development_dependency(%q<
|
29
|
+
s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 2.10.1"])
|
30
|
+
s.add_development_dependency(%q<hoe>, [">= 2.3.3"])
|
32
31
|
else
|
33
32
|
s.add_dependency(%q<activesupport>, [">= 1.2.6"])
|
34
33
|
s.add_dependency(%q<text-hyphen>, [">= 1.0.0"])
|
35
|
-
s.add_dependency(%q<
|
34
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 2.10.1"])
|
35
|
+
s.add_dependency(%q<hoe>, [">= 2.3.3"])
|
36
36
|
end
|
37
37
|
else
|
38
38
|
s.add_dependency(%q<activesupport>, [">= 1.2.6"])
|
39
39
|
s.add_dependency(%q<text-hyphen>, [">= 1.0.0"])
|
40
|
-
s.add_dependency(%q<
|
40
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 2.10.1"])
|
41
|
+
s.add_dependency(%q<hoe>, [">= 2.3.3"])
|
41
42
|
end
|
42
43
|
end
|
data/History.txt
CHANGED
data/lib/avanti_conveniences.rb
CHANGED
data/lib/hash_extensions.rb
CHANGED
@@ -2,13 +2,17 @@ class Hash
|
|
2
2
|
# Call a block for every key in the Hash, and replace each key with the block's return value.
|
3
3
|
# This returns a new Hash, so you do not need to call #rehash on it.
|
4
4
|
def map_keys(&block)
|
5
|
-
|
5
|
+
mapped = Hash.new
|
6
|
+
self.to_a.map{|k,v| [yield(k), v] }.each{|k,v| mapped[k] = v}
|
7
|
+
mapped
|
6
8
|
end
|
7
9
|
alias_method :rekey, :map_keys unless Hash.new.respond_to? :rekey
|
8
10
|
|
9
11
|
# Call a block for every value in the Hash, and replace each value with the block's return value.
|
10
12
|
def map_values(&block)
|
11
|
-
|
13
|
+
mapped = Hash.new
|
14
|
+
self.to_a.map{|k,v| [k, yield(v)] }.each{|k,v| mapped[k] = v}
|
15
|
+
mapped
|
12
16
|
end
|
13
17
|
alias_method :revalue, :map_keys unless Hash.new.respond_to? :revalue
|
14
18
|
|
@@ -16,7 +20,9 @@ class Hash
|
|
16
20
|
# The block should return a similar 2-element array of (key, value) which will be used to replace
|
17
21
|
# the original key and value.
|
18
22
|
def map_pairs(&block)
|
19
|
-
|
23
|
+
mapped = Hash.new
|
24
|
+
self.to_a.map{|k,v| yield(k,v) }.each{|k,v| mapped[k] = v}
|
25
|
+
mapped
|
20
26
|
end
|
21
27
|
|
22
28
|
end
|
@@ -2,22 +2,47 @@ require 'test/unit'
|
|
2
2
|
require File.dirname(__FILE__) + '/../lib/hash_extensions'
|
3
3
|
|
4
4
|
class TestHashExtensions < Test::Unit::TestCase
|
5
|
+
|
5
6
|
def test_map_keys
|
6
7
|
expected = {10 => :a, 20 => :b}
|
7
8
|
actual = {1 => :a, 2 => :b}.map_keys{|k| k * 10}
|
8
9
|
assert_equal expected, actual
|
9
10
|
end
|
10
11
|
|
12
|
+
|
13
|
+
def test_map_array_keys
|
14
|
+
expected = {[10, 20, 30] => :a, [40, 50] => :b}
|
15
|
+
actual = {[1, 2, 3] => :a, [4,5] => :b}.map_keys{|k| k.map{|cell| cell * 10} }
|
16
|
+
assert_equal expected, actual
|
17
|
+
end
|
18
|
+
|
19
|
+
|
11
20
|
def test_map_values
|
12
21
|
expected = {:a => 10, :b => 20}
|
13
|
-
actual = {:a => 1, :b => 2}.map_values{|
|
22
|
+
actual = {:a => 1, :b => 2}.map_values{|v| v * 10}
|
23
|
+
assert_equal expected, actual
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
def test_map_array_values
|
28
|
+
expected = {:a => [10, 20, 30], :b => [40, 50]}
|
29
|
+
actual = {:a => [1, 2, 3], :b => [4,5]}.map_values{|v| v.map{|cell| cell * 10} }
|
14
30
|
assert_equal expected, actual
|
15
31
|
end
|
32
|
+
|
16
33
|
|
17
34
|
def test_map_pairs
|
18
35
|
expected = {'A' => 10, 'B' => 20}
|
19
36
|
actual = {'a' => 1, 'b' => 2}.map_pairs{|k, v| [k.upcase, v * 10] }
|
20
37
|
assert_equal expected, actual
|
21
38
|
end
|
39
|
+
|
22
40
|
|
41
|
+
def test_map_array_pairs
|
42
|
+
expected = {%w{A B} => [10, 20, 30], %w{C D} => [40, 50]}
|
43
|
+
actual = {[:a, :b] => [1,2,3], [:c, :d] => [4,5]}.map_pairs{|k, v| [k.map{|sym| sym.to_s.upcase}, v.map{|cell| cell * 10}] }
|
44
|
+
assert_equal expected, actual
|
45
|
+
end
|
46
|
+
|
47
|
+
|
23
48
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: AvantiConveniences
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamie Flournoy
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-12-
|
12
|
+
date: 2009-12-28 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|