enumerabull 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in shit.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
2
+ Version 2, December 2004
3
+
4
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
5
+
6
+ Everyone is permitted to copy and distribute verbatim or modified
7
+ copies of this license document, and changing it is allowed as long
8
+ as the name is changed.
9
+
10
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
11
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
12
+
13
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
@@ -0,0 +1,12 @@
1
+ # Enumerabull
2
+
3
+ Enumerabull pollutes Kernelspace with inverted versions of Enumerable's instance methods.
4
+ It's like unleashing a bull in your Ruby shop to get "functional programming".
5
+
6
+ ## Usage
7
+
8
+ ``` ruby
9
+ p reduce :+, 10, 1..10
10
+ p select :even?, 1..10
11
+ each->n { p n }, 1..10
12
+ ```
@@ -0,0 +1,8 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec) do |task|
5
+ task.rspec_opts = ['--color']
6
+ end
7
+
8
+ task :default => :spec
@@ -0,0 +1,19 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "enumerabull"
7
+ spec.version = "0.0.1"
8
+ spec.authors = ["Three If By Whiskey"]
9
+ spec.email = ["3ifbyw@gmail.com"]
10
+ spec.summary = %[Enumerabull pollutes Kernelspace with inverted versions of Enumerable's instance methods. It's like unleashing a bull in your Ruby shop to get "functional programming".]
11
+ spec.license = "WTFPL"
12
+
13
+ spec.files = `git ls-files -z`.split("\x0")
14
+ spec.test_files = spec.files.grep(/spec/)
15
+ spec.require_paths = ["lib"]
16
+
17
+ spec.add_development_dependency "bundler", "~> 1.5"
18
+ spec.add_development_dependency "rake"
19
+ end
@@ -0,0 +1,17 @@
1
+ module Kernel
2
+ Enumerable.instance_methods.each do |meth|
3
+ define_method(meth) do |*args|
4
+ obj = args.pop
5
+ case pred = args.first
6
+ when Proc, Symbol
7
+ obj.send meth, *args.drop(1), &pred
8
+ else
9
+ obj.send meth, *args
10
+ end
11
+ end
12
+ end
13
+
14
+ alias each each_entry
15
+ alias filter select
16
+ alias remove reject
17
+ end
@@ -0,0 +1,291 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Enumerabull' do
4
+ Enumerable.instance_methods.each do |meth|
5
+ it "should add Enumerable#{meth} to Kernel" do
6
+ Kernel.should respond_to meth
7
+ end
8
+ end
9
+ end
10
+
11
+ describe 'Kernel.all?' do
12
+ it 'should behave like Enumerable#all?' do
13
+ all?(:even?, [2, 4, 6]).should be_true
14
+ end
15
+ end
16
+
17
+ describe 'Kernel.any?' do
18
+ it 'should behave like Enumerable#any?' do
19
+ any?(:odd?, [2, 4, 6]).should be_false
20
+ end
21
+ end
22
+
23
+ describe 'Kernel.chunk' do
24
+ it 'should behave like Enumerable#chunk' do
25
+ chunk(:even?, 1..10).to_a.should == (1..10).chunk(&:even?).to_a
26
+ end
27
+ end
28
+
29
+ describe 'Kernel.collect' do
30
+ it 'should behave like Enumerable#collect' do
31
+ collect(-> x { x + 1 }, 1..3).should == [2, 3, 4]
32
+ end
33
+ end
34
+
35
+ describe 'Kernel.collect_concat' do
36
+ it 'should behave like Enumerable#collect_concat' do
37
+ collect_concat(-> x { [x - 1, x + 1] }, 1..2).should == [0, 2, 1, 3]
38
+ end
39
+ end
40
+
41
+ describe 'Kernel.count' do
42
+ it 'should behave like Enumerable#count' do
43
+ count(:even?, 1..10).should == 5
44
+ end
45
+ end
46
+
47
+ describe 'Kernel.cycle' do
48
+ it 'should behave like Enumerable#cycle' do
49
+ cycle(2, [1, 2]).to_a.should == [1, 2, 1, 2]
50
+ end
51
+ end
52
+
53
+ describe 'Kernel.detect' do
54
+ it 'should behave like Enumerable#detect' do
55
+ detect(:even?, [1, 3, 4]).should == 4
56
+ end
57
+ end
58
+
59
+ describe 'Kernel.drop' do
60
+ it 'should behave like Enumerable#drop' do
61
+ drop(2, 1..4).should == [3, 4]
62
+ end
63
+ end
64
+
65
+ describe 'Kernel.drop_while' do
66
+ it 'should behave like Enumerable#drop_while' do
67
+ drop_while(-> x { x < 5 }, 1..5).should == [5]
68
+ end
69
+ end
70
+
71
+ describe 'Kernel.each_cons' do
72
+ it 'should behave like Enumerable#each_cons' do
73
+ each_cons(2, 1..10).to_a.should == (1..10).each_cons(2).to_a
74
+ end
75
+ end
76
+
77
+ describe 'Kernel.each_entry' do
78
+ it 'should behave like Enumerable#each_entry' do
79
+ each_entry(1..3).to_a.should == (1..3).each_entry.to_a
80
+ end
81
+ end
82
+
83
+ describe 'Kernel.each_slice' do
84
+ it 'should behave like Enumerable#each_slice' do
85
+ each_slice(2, 1..6).to_a.should == (1..6).each_slice(2).to_a
86
+ end
87
+ end
88
+
89
+ describe 'Kernel.each_with_index' do
90
+ it 'should behave like Enumerable#each_with_index' do
91
+ each_with_index(1..3).to_a.should == (1..3).each_with_index.to_a
92
+ end
93
+ end
94
+
95
+ describe 'Kernel.each_with_object' do
96
+ it 'should behave like Enumerable#each_with_object' do
97
+ each_with_object({}, 1..3).to_a.should == (1..3).each_with_object({}).to_a
98
+ end
99
+ end
100
+
101
+ describe 'Kernel.entries' do
102
+ it 'should behave like Enumerable#entries' do
103
+ entries(1..3).should == (1..3).entries
104
+ end
105
+ end
106
+
107
+ describe 'Kernel.find' do
108
+ it 'should behave like Enumerable#find' do
109
+ find(:even?, [1, 3, 4]).should == 4
110
+ end
111
+ end
112
+
113
+ describe 'Kernel.find_all' do
114
+ it 'should behave like Enumerable#find_all' do
115
+ find_all(:even?, 1..6).should == [2, 4, 6]
116
+ end
117
+ end
118
+
119
+ describe 'Kernel.find_index' do
120
+ it 'should behave like Enumerable#find_index' do
121
+ find_index(:even?, [1, 3, 4]).should == 2
122
+ end
123
+ end
124
+
125
+ describe 'Kernel.first' do
126
+ it 'should behave like Enumerable#first' do
127
+ first([1, 2, 3]).should == 1
128
+ end
129
+ end
130
+
131
+ describe 'Kernel.flat_map' do
132
+ it 'should behave like Enumerable#flat_map' do
133
+ flat_map(-> x { [x - 1, x + 1] }, 1..2).should == [0, 2, 1, 3]
134
+ end
135
+ end
136
+
137
+ describe 'Kernel.grep' do
138
+ it 'should behave like Enumerable#grep' do
139
+ grep(Symbol, [1, :a, 2, :b]).should == [:a, :b]
140
+ end
141
+ end
142
+
143
+ describe 'Kernel.group_by' do
144
+ it 'should behave like Enumerable#group_by' do
145
+ group_by(:even?, 1..4).values.should == [[1, 3], [2, 4]]
146
+ end
147
+ end
148
+
149
+ describe 'Kernel.include?' do
150
+ it 'should behave like Enumerable#include?' do
151
+ include?(2, 1..3).should be_true
152
+ end
153
+ end
154
+
155
+ describe 'Kernel.inject' do
156
+ it 'should behave like Enumerable#inject' do
157
+ inject(:+, 1..3).should == 6
158
+ end
159
+ end
160
+
161
+ describe 'Kernel.map' do
162
+ it 'should behave like Enumerable#map' do
163
+ map(:to_s, 1..3).should == %w[1 2 3]
164
+ end
165
+ end
166
+
167
+ describe 'Kernel.max' do
168
+ it 'should behave like Enumerable#max' do
169
+ max(1..3).should == 3
170
+ end
171
+ end
172
+
173
+ describe 'Kernel.max_by' do
174
+ it 'should behave like Enumerable#max_by' do
175
+ max_by(:size, %w[a bb ccc]).should == 'ccc'
176
+ end
177
+ end
178
+
179
+ describe 'Kernel.member?' do
180
+ it 'should behave like Enumerable#member?' do
181
+ member?(2, 1..3).should be_true
182
+ end
183
+ end
184
+
185
+ describe 'Kernel.min' do
186
+ it 'should behave like Enumerable#min' do
187
+ min(1..3).should == 1
188
+ end
189
+ end
190
+
191
+ describe 'Kernel.min_by' do
192
+ it 'should behave like Enumerable#min_by' do
193
+ min_by(:size, %w[a bb ccc]).should == 'a'
194
+ end
195
+ end
196
+
197
+ describe 'Kernel.minmax' do
198
+ it 'should behave like Enumerable#minmax' do
199
+ minmax(1..5).should == [1, 5]
200
+ end
201
+ end
202
+
203
+ describe 'Kernel.minmax_by' do
204
+ it 'should behave like Enumerable#minmax_by' do
205
+ minmax_by(:size, %w[a bb ccc]).should == %w[a ccc]
206
+ end
207
+ end
208
+
209
+ describe 'Kernel.none?' do
210
+ it 'should behave like Enumerable#none?' do
211
+ none?([false, nil]).should be_true
212
+ end
213
+ end
214
+
215
+ describe 'Kernel.one?' do
216
+ it 'should behave like Enumerable#one?' do
217
+ one?([true, false, nil]).should be_true
218
+ end
219
+ end
220
+
221
+ describe 'Kernel.partition' do
222
+ it 'should behave like Enumerable#partition' do
223
+ partition(:odd?, 1..4).should == [[1, 3], [2, 4]]
224
+ end
225
+ end
226
+
227
+ describe 'Kernel.reduce' do
228
+ it 'should behave like Enumerable#reduce' do
229
+ reduce(:-, 0, 1..3).should == -6
230
+ end
231
+ end
232
+
233
+ describe 'Kernel.reject' do
234
+ it 'should behave like Enumerable#reject' do
235
+ reject(:odd?, 1..4).should == [2, 4]
236
+ end
237
+ end
238
+
239
+ describe 'Kernel.reverse_each' do
240
+ it 'should behave like Enumerable#reverse_each' do
241
+ reverse_each([[3, 4], [1, 2]]).to_a.should == [[1, 2], [3, 4]]
242
+ end
243
+ end
244
+
245
+ describe 'Kernel.select' do
246
+ it 'should behave like Enumerable#select' do
247
+ select(:even?, 1..4).should == [2, 4]
248
+ end
249
+ end
250
+
251
+ describe 'Kernel.slice_before' do
252
+ it 'should behave like Enumerable#slice_before' do
253
+ slice_before(:even?, 1..4).to_a.should == [[1], [2, 3], [4]]
254
+ end
255
+ end
256
+
257
+ describe 'Kernel.sort' do
258
+ it 'should behave like Enumerable#sort' do
259
+ sort([3, 2, 1]).should == [1, 2, 3]
260
+ end
261
+ end
262
+
263
+ describe 'Kernel.sort_by' do
264
+ it 'should behave like Enumerable#sort_by' do
265
+ sort_by(:size, %w[ccc bb a]).should == %w[a bb ccc]
266
+ end
267
+ end
268
+
269
+ describe 'Kernel.take' do
270
+ it 'should behave like Enumerable#take' do
271
+ take(2, 1..5).should == [1, 2]
272
+ end
273
+ end
274
+
275
+ describe 'Kernel.take_while' do
276
+ it 'should behave like Enumerable#take_while' do
277
+ take_while(:even?, [2, 4, 5]).should == [2, 4]
278
+ end
279
+ end
280
+
281
+ describe 'Kernel.to_a' do
282
+ it 'should behave like Enumerable#to_a' do
283
+ to_a(1..3).should == [1, 2, 3]
284
+ end
285
+ end
286
+
287
+ describe 'Kernel.zip' do
288
+ it 'should behave like Enumerable#zip' do
289
+ zip([1, 2], [:a, :b]).should == [[:a, 1], [:b, 2]]
290
+ end
291
+ end
@@ -0,0 +1 @@
1
+ require File.expand_path('../../lib/enumerabull', __FILE__)
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: enumerabull
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Three If By Whiskey
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-02-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.5'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.5'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description:
47
+ email:
48
+ - 3ifbyw@gmail.com
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - Gemfile
54
+ - LICENSE
55
+ - README.md
56
+ - Rakefile
57
+ - enumerabull.gemspec
58
+ - lib/enumerabull.rb
59
+ - spec/enumerabull_spec.rb
60
+ - spec/spec_helper.rb
61
+ homepage:
62
+ licenses:
63
+ - WTFPL
64
+ post_install_message:
65
+ rdoc_options: []
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ requirements: []
81
+ rubyforge_project:
82
+ rubygems_version: 1.8.23
83
+ signing_key:
84
+ specification_version: 3
85
+ summary: Enumerabull pollutes Kernelspace with inverted versions of Enumerable's instance
86
+ methods. It's like unleashing a bull in your Ruby shop to get "functional programming".
87
+ test_files:
88
+ - enumerabull.gemspec
89
+ - spec/enumerabull_spec.rb
90
+ - spec/spec_helper.rb