enumerable-extra 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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