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.
- checksums.yaml +7 -0
- data/CHANGES +5 -0
- data/README +41 -40
- data/Rakefile +22 -17
- data/enumerable-extra.gemspec +3 -4
- data/lib/enumerable/extra.rb +124 -111
- data/test/test_enumerable_extra.rb +69 -58
- metadata +33 -38
checksums.yaml
ADDED
@@ -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
data/README
CHANGED
@@ -1,61 +1,62 @@
|
|
1
1
|
= Description
|
2
|
-
|
3
|
-
|
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
|
-
|
7
|
-
rake install (non-gem) OR rake install_gem (gem)
|
6
|
+
gem install enumerable-extra
|
8
7
|
|
9
8
|
= Synopsis
|
10
|
-
|
9
|
+
require 'enumerable/extra'
|
11
10
|
|
12
|
-
|
11
|
+
array = %w/foo bar baz/
|
13
12
|
|
14
|
-
|
15
|
-
|
13
|
+
array.map(:upcase) => ['FOO', 'BAR', 'BAZ']
|
14
|
+
array.map(:+, 'A') => ['fooA', 'barA', 'bazA']
|
16
15
|
|
17
|
-
|
18
|
-
|
16
|
+
numbers = [1,2,3]
|
17
|
+
numbers.sum => 6
|
19
18
|
|
20
19
|
= Motivation
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
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
|
-
|
40
|
-
|
41
|
-
|
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
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
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
|
-
|
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
|
-
|
56
|
-
|
57
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
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 :
|
19
|
-
|
20
|
-
|
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
|
-
|
25
|
-
|
27
|
+
t.warning = true
|
28
|
+
t.verbose = true
|
26
29
|
end
|
30
|
+
|
31
|
+
task :default => :test
|
data/enumerable-extra.gemspec
CHANGED
@@ -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.
|
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 = '
|
11
|
-
s.files = Dir['**/*'].reject{ |f| f.include?('
|
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
|
data/lib/enumerable/extra.rb
CHANGED
@@ -1,129 +1,142 @@
|
|
1
1
|
module Enumerable
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
# The version of the enumerable-extra library.
|
4
|
+
EXTRA_VERSION = '0.2.0'
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
alias old_map map
|
7
|
+
alias old_collect collect
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
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
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
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
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
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
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
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
|
-
|
64
|
-
|
63
|
+
# Reset the aliases
|
64
|
+
alias collect map
|
65
65
|
end
|
66
66
|
|
67
67
|
class Array
|
68
|
-
|
69
|
-
|
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
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
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
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
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
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
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
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
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
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
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
|
-
|
127
|
-
|
128
|
-
|
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
|
7
|
+
require 'test-unit'
|
8
8
|
require 'enumerable/extra'
|
9
9
|
|
10
10
|
class TC_Enumerable_Extra < Test::Unit::TestCase
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
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
|
-
|
19
|
-
|
20
|
-
|
18
|
+
test "version number is set properly" do
|
19
|
+
assert_equal('0.2.0', Enumerable::EXTRA_VERSION)
|
20
|
+
end
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
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
|
-
|
29
|
-
|
30
|
-
|
28
|
+
def test_sum_expected_errors
|
29
|
+
assert_raises(TypeError){ @words.sum }
|
30
|
+
end
|
31
31
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
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
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
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
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
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
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
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
|
-
|
66
|
-
|
67
|
-
|
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
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
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.
|
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
|
-
|
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
|
-
|
35
|
-
|
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:
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
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
|
-
|
58
|
-
rubygems_version: 1.3.5
|
52
|
+
rubyforge_project:
|
53
|
+
rubygems_version: 2.4.2
|
59
54
|
signing_key:
|
60
|
-
specification_version:
|
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
|