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.
@@ -2,41 +2,42 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{AvantiConveniences}
5
- s.version = "1.0.4"
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-03-20}
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.1}
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 = 2
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<hoe>, [">= 1.11.0"])
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<hoe>, [">= 1.11.0"])
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<hoe>, [">= 1.11.0"])
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
@@ -1,3 +1,6 @@
1
+ === 1.0.7 / 2009-12-28
2
+ * Bug fix in Hash#map_keys, Hash#map_values, and Hash#map_pairs when handling keys or values that are arrays.
3
+
1
4
  === 1.0.6 / 2009-12-22
2
5
 
3
6
  * Added Array#average, Die.roll, Float::INFINITY, Time#at_midnight
@@ -9,5 +9,5 @@ require File.dirname(__FILE__) + '/time_extensions'
9
9
  require File.dirname(__FILE__) + '/uri_extensions'
10
10
 
11
11
  class AvantiConveniences
12
- VERSION = '1.0.6'
12
+ VERSION = '1.0.7'
13
13
  end
@@ -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
- Hash[* self.to_a.map{|k,v| [yield(k), v] }.flatten ]
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
- Hash[* self.to_a.map{|k,v| [k, yield(v)] }.flatten ]
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
- Hash[* self.to_a.map{|k,v| yield(k,v) }.flatten ]
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{|k| k * 10}
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.6
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-22 00:00:00 -08:00
12
+ date: 2009-12-28 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency