enumerable-extra 0.1.2 → 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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 53c514d4bfad5ddebba8d6bdcd6d77b17d2e742f
4
+ data.tar.gz: 785932257e57a3e5431d137f0a36500b2208b5e0
5
+ SHA512:
6
+ metadata.gz: 62840e9822367a952618353c09762dfbbfce68cd1c2f84af0cdb2d60c858dcda74da4b1e1da1ebf3815a605c56fae1fa47b3120e1998abad84d625012e83e786
7
+ data.tar.gz: c9c33ac83978b940d62675d645eb7fbcaa703accbb97cd96eb5f4e11d0a406dbb7092be66aa07e5d7edbc9ae83c7e69e64da35cfb7e4c1dccd4ba119f9c8a7ec
data/CHANGES CHANGED
@@ -1,3 +1,8 @@
1
+ == 0.2.0 - 1-Nov-2014
2
+ * Added a custom Array#each method that behaves like the Array#zip method when
3
+ arguments are provided.
4
+ * Minor updates to gemspec and Rakefile.
5
+
1
6
  == 0.1.2 - 27-Sep-2009
2
7
  * Some gemspec udpates.
3
8
  * Added the :gem Rake task.
data/README CHANGED
@@ -1,61 +1,62 @@
1
1
  = Description
2
- This library includes modified versions of the Enumerable methods, designed
3
- to make list comprehensions a little bit easier and prettier in Ruby.
2
+ This library includes modified versions of the Enumerable methods, designed
3
+ to make list comprehensions a little bit easier and prettier in Ruby.
4
4
 
5
5
  = Installation
6
- rake test (optional)
7
- rake install (non-gem) OR rake install_gem (gem)
6
+ gem install enumerable-extra
8
7
 
9
8
  = Synopsis
10
- require 'enumerable/extra'
9
+ require 'enumerable/extra'
11
10
 
12
- array = %w/foo bar baz/
11
+ array = %w/foo bar baz/
13
12
 
14
- array.map(:upcase) => ['FOO', 'BAR', 'BAZ']
15
- array.map(:+, 'A') => ['fooA', 'barA', 'bazA']
13
+ array.map(:upcase) => ['FOO', 'BAR', 'BAZ']
14
+ array.map(:+, 'A') => ['fooA', 'barA', 'bazA']
16
15
 
17
- numbers = [1,2,3]
18
- numbers.sum => 6
16
+ numbers = [1,2,3]
17
+ numbers.sum => 6
19
18
 
20
19
  = Motivation
21
- This library was created in reaction to the ugly "&" (or worse, "&its")
22
- notation started by Ruby on Rails and perpetuated by the Symbol#to_proc
23
- adherents.
24
-
25
- The theory behind Symbol#to_proc is that it's a generic metaprogramming
26
- solution that will solve a certain range of programming problems. The
27
- reality is that 99% of people use it for list comprehensions*. So, instead
28
- of introducing crappy notation, I decided that it made better sense to
29
- modify Enumerable methods to accept arguments.
30
-
31
- There are two advantages to this. First, superior notation, i.e. no need
32
- for the ampersand. One of the reasons I chose Ruby as my primary programming
33
- language in the first place was the beauty of its notation. I don't want
34
- to see that ruined by Symbol#to_proc. Also, coming from a C background, I
35
- find the ampersand too reminiscent of C address notation.
36
-
37
- Second, Symbol#to_proc is very slow.
20
+ This library was created in reaction to the ugly "&" (or worse, "&its")
21
+ notation started by Ruby on Rails and perpetuated by the Symbol#to_proc
22
+ adherents.
23
+
24
+ The theory behind Symbol#to_proc is that it's a generic metaprogramming
25
+ solution that will solve a certain range of programming problems. The
26
+ reality is that 99% of people use it for list comprehensions*. So, instead
27
+ of introducing crappy notation, I decided that it made better sense to
28
+ modify Enumerable methods to accept arguments.
29
+
30
+ There are two advantages to this. First, superior notation, i.e. no need
31
+ for the ampersand. One of the reasons I chose Ruby as my primary programming
32
+ language in the first place was the beauty of its notation. I don't want
33
+ to see that ruined by Symbol#to_proc. Also, coming from a C background, I
34
+ find the ampersand too reminiscent of C address notation.
35
+
36
+ Second, Symbol#to_proc is very slow.
38
37
 
39
- Update: It seems Symbol#to_proc is reasonably fast now in the 1.9.x branch.
40
- However, it does not allow you to pass arguments to a method. That means
41
- you still can't do the equivalent of [1,2,3].map(:+, 1), for example.
38
+ Update: It seems Symbol#to_proc is reasonably fast now in the 1.9.x branch.
39
+ However, it does not allow you to pass arguments to a method. That means
40
+ you still can't do the equivalent of [1,2,3].map(:+, 1), for example.
42
41
 
43
- * Based on the questions and solutions that I see on the ruby-talk and rails
44
- mailing lists. I've monitored the former for almost seven years and the
45
- latter for close to two now. This is in addition to many blogs I read that
46
- occasionally touch on the subject.
42
+ * Based on the questions and solutions that I see on the ruby-talk and rails
43
+ mailing lists. I've monitored the former for almost seven years and the
44
+ latter for close to two now. This is in addition to many blogs I read that
45
+ occasionally touch on the subject.
47
46
 
48
47
  = Future Plans
49
- Modify several more Enumerable methods.
48
+ Modify several more Enumerable methods.
50
49
 
51
50
  = License
52
51
  Artistic 2.0
53
52
 
53
+ = Copyright
54
+ (C) 2009-2014 Daniel J. Berger, All Rights Reserved
55
+
54
56
  = Warranty
55
- This package is provided "as is" and without any express or
56
- implied warranties, including, without limitation, the implied
57
- warranties of merchantability and fitness for a particular purpose
57
+ This package is provided "as is" and without any express or
58
+ implied warranties, including, without limitation, the implied
59
+ warranties of merchantability and fitness for a particular purpose
58
60
 
59
61
  = Author
60
- Daniel J. Berger
61
- djberg96 at nospam at gmail dot com
62
+ Daniel J. Berger
data/Rakefile CHANGED
@@ -1,26 +1,31 @@
1
1
  require 'rake'
2
2
  require 'rake/testtask'
3
+ require 'rake/clean'
3
4
 
4
- desc "Install the enumerable-extra library (non-gem)"
5
- task :install do
6
- dest = File.join(Config::CONFIG['sitelibdir'], 'enumerable')
7
- Dir.mkdir(dest) unless File.exists? dest
8
- cp 'lib/enumerable/extra.rb', dest, :verbose => true
9
- end
5
+ CLEAN.include("*.gem", "*.rbc")
10
6
 
11
- desc 'Build the enumerable-extra gem'
12
- task :gem do
13
- spec = eval(IO.read('enumerable-extra.gemspec'))
14
- Gem::Builder.new(spec).build
15
- end
7
+ namespace :gem do
8
+ desc 'Build the enumerable-extra gem'
9
+ task :create => [:clean] do
10
+ spec = eval(IO.read('enumerable-extra.gemspec'))
11
+ if Gem::VERSION < "2.0"
12
+ Gem::Builder.new(spec).build
13
+ else
14
+ require 'rubygems/package'
15
+ Gem::Package.build(spec)
16
+ end
17
+ end
16
18
 
17
- desc "Install the enumerable-extra library as a gem"
18
- task :install_gem => [:gem] do
19
- file = Dir["*.gem"].first
20
- sh "gem install #{file}"
19
+ desc "Install the enumerable-extra library as a gem"
20
+ task :install => [:create] do
21
+ file = Dir["*.gem"].first
22
+ sh "gem install -l #{file}"
23
+ end
21
24
  end
22
25
 
23
26
  Rake::TestTask.new do |t|
24
- t.warning = true
25
- t.verbose = true
27
+ t.warning = true
28
+ t.verbose = true
26
29
  end
30
+
31
+ task :default => :test
@@ -2,17 +2,16 @@ require 'rubygems'
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'enumerable-extra'
5
- s.version = '0.1.2'
5
+ s.version = '0.2.0'
6
6
  s.license = 'Artistic 2.0'
7
7
  s.summary = 'Enhanced methods for Enumerable objects'
8
8
  s.author = 'Daniel Berger'
9
9
  s.email = 'djberg96@gmail.com'
10
- s.homepage = 'http://www.rubyforge.org/projects/shards'
11
- s.files = Dir['**/*'].reject{ |f| f.include?('CVS') }
10
+ s.homepage = 'https://github.com/djberg96/enumerable-extra'
11
+ s.files = Dir['**/*'].reject{ |f| f.include?('git') }
12
12
  s.test_file = 'test/test_enumerable_extra.rb'
13
13
  s.has_rdoc = true
14
14
 
15
- s.rubyforge_project = 'shards'
16
15
  s.extra_rdoc_files = ['README', 'CHANGES', 'MANIFEST']
17
16
 
18
17
  s.description = <<-EOF
@@ -1,129 +1,142 @@
1
1
  module Enumerable
2
2
 
3
- # The version of the enumerable-extra library.
4
- EXTRA_VERSION = '0.1.2'
3
+ # The version of the enumerable-extra library.
4
+ EXTRA_VERSION = '0.2.0'
5
5
 
6
- alias old_map map
7
- alias old_collect collect
6
+ alias old_map map
7
+ alias old_collect collect
8
8
 
9
- # Returns the numeric total of the elements of +enum+, using +total+ as
10
- # an accumulator (0 by default). Raises an error if any of the elements
11
- # are non-numeric.
12
- #
13
- def sum(total = 0)
14
- each{ |val| total += val }
15
- total
16
- end
9
+ # Returns the numeric total of the elements of +enum+, using +total+ as
10
+ # an accumulator (0 by default). Raises an error if any of the elements
11
+ # are non-numeric.
12
+ #
13
+ def sum(total = 0)
14
+ each{ |val| total += val }
15
+ total
16
+ end
17
17
 
18
- # Returns a new array containing the results of running +method+ once for
19
- # every element in the enumerable object. If both arguments and a block
20
- # are provided the arguments are processed first, then passed to
21
- # the block.
22
- #
23
- # If no method argument is provided, then it behaves as the standard MRI
24
- # method.
25
- #
26
- # Examples:
27
- #
28
- # array = ['foo', 'bar']
29
- #
30
- # # No arguments
31
- # array.map(:capitalize) => ['Foo', 'Bar']
32
- #
33
- # # With arguments
34
- # array.map(:+, 'x') => ['foox', 'barx']
35
- #
36
- # # With arguments and a block
37
- # array.map(:capitalize){ |e| e + 'x' } => ['Foox', 'Barx']
38
- #
39
- # Note that for 1.9.x users, Enumerator objects are converted explicitly
40
- # back into arrays.
41
- #
42
- def map(method=nil, *args, &block)
43
- if method
44
- array = []
45
- method = method.to_sym unless method.is_a?(Symbol)
18
+ # Returns a new array containing the results of running +method+ once for
19
+ # every element in the enumerable object. If both arguments and a block
20
+ # are provided the arguments are processed first, then passed to
21
+ # the block.
22
+ #
23
+ # If no method argument is provided, then it behaves as the standard MRI
24
+ # method.
25
+ #
26
+ # Examples:
27
+ #
28
+ # array = ['foo', 'bar']
29
+ #
30
+ # # No arguments
31
+ # array.map(:capitalize) => ['Foo', 'Bar']
32
+ #
33
+ # # With arguments
34
+ # array.map(:+, 'x') => ['foox', 'barx']
35
+ #
36
+ # # With arguments and a block
37
+ # array.map(:capitalize){ |e| e + 'x' } => ['Foox', 'Barx']
38
+ #
39
+ # Note that for 1.9.x users, Enumerator objects are converted explicitly
40
+ # back into arrays.
41
+ #
42
+ def map(method=nil, *args, &block)
43
+ if method
44
+ array = []
45
+ method = method.to_sym unless method.is_a?(Symbol)
46
46
 
47
- each{ |obj|
48
- temp = obj.send(method, *args)
49
- if block
50
- array << block.call(temp)
51
- else
52
- array << temp
53
- end
54
- }
47
+ each{ |obj|
48
+ temp = obj.send(method, *args)
49
+ if block
50
+ array << block.call(temp)
51
+ else
52
+ array << temp
53
+ end
54
+ }
55
55
 
56
- # Convert enumerators back to arrays for 1.9.x
57
- RUBY_VERSION.to_f >= 1.9 ? array.to_a : array
58
- else
59
- RUBY_VERSION.to_f ? old_map(&block).to_a : old_map(&block)
60
- end
61
- end
56
+ # Convert enumerators back to arrays for 1.9.x
57
+ RUBY_VERSION.to_f >= 1.9 ? array.to_a : array
58
+ else
59
+ RUBY_VERSION.to_f ? old_map(&block).to_a : old_map(&block)
60
+ end
61
+ end
62
62
 
63
- # Reset the aliases
64
- alias collect map
63
+ # Reset the aliases
64
+ alias collect map
65
65
  end
66
66
 
67
67
  class Array
68
- # These methods are defined separately in array.c, and they are not actual
69
- # aliases, so we must alias them each separately from Enumerable.
68
+ # These methods are defined separately in array.c, and they are not actual
69
+ # aliases, so we must alias them each separately from Enumerable.
70
70
 
71
- alias old_map map
72
- alias old_map! map!
73
- alias old_collect collect
74
- alias old_collect! collect!
71
+ alias old_map map
72
+ alias old_map! map!
73
+ alias old_collect collect
74
+ alias old_collect! collect!
75
+ alias old_each each
75
76
 
76
- # Returns a new array containing the results of running +block+ once for
77
- # every element in the +array+.
78
- #
79
- # Examples:
80
- #
81
- # array = ['foo', 'bar']
82
- #
83
- # # No arguments
84
- # array.map(:capitalize) => ['Foo', 'Bar']
85
- #
86
- # # With arguments
87
- # array.map(:+, 'x') => ['foox', 'barx']
88
- #
89
- # # With arguments and a block
90
- # array.map(:capitalize){ |e| e + 'x' } => ['Foox', 'Barx']
91
- #
92
- # Note that for 1.9.x users, Enumerator objects are converted explicitly
93
- # back into arrays.
94
- #--
95
- # The Array class actually has its own implementation of the +map+ method,
96
- # hence the duplication.
97
- #
98
- def map(method=nil, *args, &block)
99
- if method
100
- array = []
101
- method = method.to_sym unless method.is_a?(Symbol)
77
+ # Returns a new array containing the results of running +block+ once for
78
+ # every element in the +array+.
79
+ #
80
+ # Examples:
81
+ #
82
+ # array = ['foo', 'bar']
83
+ #
84
+ # # No arguments
85
+ # array.map(:capitalize) => ['Foo', 'Bar']
86
+ #
87
+ # # With arguments
88
+ # array.map(:+, 'x') => ['foox', 'barx']
89
+ #
90
+ # # With arguments and a block
91
+ # array.map(:capitalize){ |e| e + 'x' } => ['Foox', 'Barx']
92
+ #
93
+ # Note that for 1.9.x users, Enumerator objects are converted explicitly
94
+ # back into arrays.
95
+ #--
96
+ # The Array class actually has its own implementation of the +map+ method,
97
+ # hence the duplication.
98
+ #
99
+ def map(method=nil, *args, &block)
100
+ if method
101
+ array = []
102
+ method = method.to_sym unless method.is_a?(Symbol)
102
103
 
103
- each{ |obj|
104
- temp = obj.send(method, *args)
105
- if block
106
- array << block.call(temp)
107
- else
108
- array << temp
109
- end
110
- }
104
+ each{ |obj|
105
+ temp = obj.send(method, *args)
106
+ if block
107
+ array << block.call(temp)
108
+ else
109
+ array << temp
110
+ end
111
+ }
111
112
 
112
- RUBY_VERSION.to_f >= 1.9 ? array.to_a : array
113
- else
114
- RUBY_VERSION.to_f >= 1.9 ? old_map(&block).to_a : old_map(&block)
115
- end
116
- end
113
+ RUBY_VERSION.to_f >= 1.9 ? array.to_a : array
114
+ else
115
+ RUBY_VERSION.to_f >= 1.9 ? old_map(&block).to_a : old_map(&block)
116
+ end
117
+ end
117
118
 
118
- # Same as Array#map, but modifies the receiver in place. Also note that
119
- # a block is _not_ required. If no block is given, an array of values
120
- # is returned instead
121
- #
122
- def map!(method=nil, *args, &block)
123
- self.replace(map(method, *args, &block))
124
- end
119
+ # Same as Array#map, but modifies the receiver in place. Also note that
120
+ # a block is _not_ required. If no block is given, an array of values
121
+ # is returned instead
122
+ #
123
+ def map!(method=nil, *args, &block)
124
+ self.replace(map(method, *args, &block))
125
+ end
125
126
 
126
- # Reset the aliases
127
- alias collect map
128
- alias collect! map!
127
+ # Iterates over each element in the array, yielding the result. When no
128
+ # arguments are provided this behaves as the standard Array#each. With
129
+ # arguments it behaves the same as Array#zip.
130
+ #
131
+ def each(*others, &block)
132
+ if others.nil? || others.empty?
133
+ old_each(&block)
134
+ else
135
+ zip(*others, &block)
136
+ end
137
+ end
138
+
139
+ # Reset the aliases
140
+ alias collect map
141
+ alias collect! map!
129
142
  end
@@ -4,74 +4,85 @@
4
4
  # Test case for the enumerable-extra library. You should run this
5
5
  # test via the 'rake test' task.
6
6
  ########################################################################
7
- require 'test/unit'
7
+ require 'test-unit'
8
8
  require 'enumerable/extra'
9
9
 
10
10
  class TC_Enumerable_Extra < Test::Unit::TestCase
11
- def setup
12
- @words = %w/foo bar baz/
13
- @numbers = [1,2,3]
14
- @hash = {'foo' => 1, 'bar' => 2}
15
- @array = []
16
- end
11
+ def setup
12
+ @words = %w/foo bar baz/
13
+ @numbers = [1,2,3]
14
+ @hash = {'foo' => 1, 'bar' => 2}
15
+ @array = []
16
+ end
17
17
 
18
- def test_version
19
- assert_equal('0.1.2', Enumerable::EXTRA_VERSION)
20
- end
18
+ test "version number is set properly" do
19
+ assert_equal('0.2.0', Enumerable::EXTRA_VERSION)
20
+ end
21
21
 
22
- def test_sum
23
- assert_respond_to(@numbers, :sum)
24
- assert_equal(6, @numbers.sum)
25
- assert_equal(20, @numbers.sum(14))
26
- end
22
+ def test_sum
23
+ assert_respond_to(@numbers, :sum)
24
+ assert_equal(6, @numbers.sum)
25
+ assert_equal(20, @numbers.sum(14))
26
+ end
27
27
 
28
- def test_sum_expected_errors
29
- assert_raises(TypeError){ @words.sum }
30
- end
28
+ def test_sum_expected_errors
29
+ assert_raises(TypeError){ @words.sum }
30
+ end
31
31
 
32
- def test_map_array_no_block
33
- assert_nothing_raised{ @words.map }
34
- assert_equal(%w/foo bar baz/, @words.map)
35
- assert_equal(%w/FOO BAR BAZ/, @words.map(:upcase))
36
- assert_equal(%w/fooA barA bazA/, @words.map(:+, 'A'))
37
- assert_equal(%w/foo bar baz/, @words) # Verify receiver unmodified
38
- end
32
+ def test_map_array_no_block
33
+ assert_nothing_raised{ @words.map }
34
+ assert_equal(%w/foo bar baz/, @words.map)
35
+ assert_equal(%w/FOO BAR BAZ/, @words.map(:upcase))
36
+ assert_equal(%w/fooA barA bazA/, @words.map(:+, 'A'))
37
+ assert_equal(%w/foo bar baz/, @words) # Verify receiver unmodified
38
+ end
39
39
 
40
- # Test the alias explicitly
41
- def test_collect_array_no_block
42
- assert_nothing_raised{ @words.collect }
43
- assert_equal(%w/foo bar baz/, @words.collect)
44
- assert_equal(%w/FOO BAR BAZ/, @words.collect(:upcase))
45
- assert_equal(%w/fooA barA bazA/, @words.collect(:+, 'A'))
46
- assert_equal(%w/foo bar baz/, @words) # Verify receiver unmodified
47
- end
40
+ # Test the alias explicitly
41
+ def test_collect_array_no_block
42
+ assert_nothing_raised{ @words.collect }
43
+ assert_equal(%w/foo bar baz/, @words.collect)
44
+ assert_equal(%w/FOO BAR BAZ/, @words.collect(:upcase))
45
+ assert_equal(%w/fooA barA bazA/, @words.collect(:+, 'A'))
46
+ assert_equal(%w/foo bar baz/, @words) # Verify receiver unmodified
47
+ end
48
48
 
49
- def test_map_bang_array_no_block
50
- assert_nothing_raised{ @words.map! }
51
- assert_equal(%w/foo bar baz/, @words.map!)
52
- assert_equal(%w/FOO BAR BAZ/, @words.map!(:upcase))
53
- assert_equal(%w/FOO BAR BAZ/, @words) # Verify receiver modified
54
- end
49
+ def test_map_bang_array_no_block
50
+ assert_nothing_raised{ @words.map! }
51
+ assert_equal(%w/foo bar baz/, @words.map!)
52
+ assert_equal(%w/FOO BAR BAZ/, @words.map!(:upcase))
53
+ assert_equal(%w/FOO BAR BAZ/, @words) # Verify receiver modified
54
+ end
55
55
 
56
- def test_map_with_block
57
- assert_nothing_raised{ @words.map{} }
58
- assert_nothing_raised{ @words.map{ |e| @array << e } }
59
- assert_equal(%w/foo bar baz/, @array)
60
-
61
- @array = []
62
- assert_nothing_raised{ @words.map(:upcase){ |e| @array << e } }
63
- assert_equal(%w/FOO BAR BAZ/, @array)
56
+ def test_map_with_block
57
+ assert_nothing_raised{ @words.map{} }
58
+ assert_nothing_raised{ @words.map{ |e| @array << e } }
59
+ assert_equal(%w/foo bar baz/, @array)
64
60
 
65
- @array = []
66
- assert_nothing_raised{ @words.map(:+, 'A'){ |e| @array << e } }
67
- assert_equal(%w/fooA barA bazA/, @array)
68
- assert_equal(%w/foo bar baz/, @words) # Verify receiver unmodified
69
- end
61
+ @array = []
62
+ assert_nothing_raised{ @words.map(:upcase){ |e| @array << e } }
63
+ assert_equal(%w/FOO BAR BAZ/, @array)
70
64
 
71
- def teardown
72
- @words = nil
73
- @numbers = nil
74
- @hash = nil
75
- @array = nil
76
- end
65
+ @array = []
66
+ assert_nothing_raised{ @words.map(:+, 'A'){ |e| @array << e } }
67
+ assert_equal(%w/fooA barA bazA/, @array)
68
+ assert_equal(%w/foo bar baz/, @words) # Verify receiver unmodified
69
+ end
70
+
71
+ test "each accepts arguments" do
72
+ a1 = [1,2,3]
73
+ a2 = [4,5,6]
74
+ assert_nothing_raised{ a1.each(a2){} }
75
+ assert_equal([[1,4],[2,5],[3,6]], a1.each(a2))
76
+ end
77
+
78
+ test "each defaults to using the old behavior if no arguments are passed" do
79
+ assert_nothing_raised{ @array.each{} }
80
+ end
81
+
82
+ def teardown
83
+ @words = nil
84
+ @numbers = nil
85
+ @hash = nil
86
+ @array = nil
87
+ end
77
88
  end
metadata CHANGED
@@ -1,63 +1,58 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: enumerable-extra
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Daniel Berger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
-
12
- date: 2009-09-28 00:00:00 -06:00
13
- default_executable:
11
+ date: 2014-11-01 00:00:00.000000000 Z
14
12
  dependencies: []
15
-
16
- description: " The enumerable-extra library provides overridden Enumerable methods\n that make it easier to handle common operations that apply to each\n element of a list without resorting to Symbol#to_proc. It also adds\n an Enumerable#sum method.\n"
13
+ description: |2
14
+ The enumerable-extra library provides overridden Enumerable methods
15
+ that make it easier to handle common operations that apply to each
16
+ element of a list without resorting to Symbol#to_proc. It also adds
17
+ an Enumerable#sum method.
17
18
  email: djberg96@gmail.com
18
19
  executables: []
19
-
20
20
  extensions: []
21
-
22
- extra_rdoc_files:
21
+ extra_rdoc_files:
23
22
  - README
24
23
  - CHANGES
25
24
  - MANIFEST
26
- files:
25
+ files:
27
26
  - CHANGES
28
- - enumerable-extra.gemspec
29
- - lib/enumerable/extra.rb
30
27
  - MANIFEST
31
- - Rakefile
32
28
  - README
29
+ - Rakefile
30
+ - enumerable-extra.gemspec
31
+ - lib/enumerable/extra.rb
33
32
  - test/test_enumerable_extra.rb
34
- has_rdoc: true
35
- homepage: http://www.rubyforge.org/projects/shards
36
- licenses:
33
+ homepage: https://github.com/djberg96/enumerable-extra
34
+ licenses:
37
35
  - Artistic 2.0
36
+ metadata: {}
38
37
  post_install_message:
39
38
  rdoc_options: []
40
-
41
- require_paths:
39
+ require_paths:
42
40
  - lib
43
- required_ruby_version: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: "0"
48
- version:
49
- required_rubygems_version: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: "0"
54
- version:
41
+ required_ruby_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ required_rubygems_version: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - '>='
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
55
51
  requirements: []
56
-
57
- rubyforge_project: shards
58
- rubygems_version: 1.3.5
52
+ rubyforge_project:
53
+ rubygems_version: 2.4.2
59
54
  signing_key:
60
- specification_version: 3
55
+ specification_version: 4
61
56
  summary: Enhanced methods for Enumerable objects
62
- test_files:
57
+ test_files:
63
58
  - test/test_enumerable_extra.rb