reducers 0.0.5
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/.autotest +1 -0
- data/.gemtest +0 -0
- data/.rspec +1 -0
- data/History.txt +6 -0
- data/Manifest.txt +11 -0
- data/README.txt +59 -0
- data/Rakefile +49 -0
- data/bin/reducers +3 -0
- data/lib/reducers.rb +330 -0
- data/lib/reducers/functional.rb +42 -0
- data/spec/reducers_spec.rb +9 -0
- data/spec/spec_helper.rb +17 -0
- metadata +175 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9e4ce6f19825a68ed2f7fe8789f4664ad5e53162
|
4
|
+
data.tar.gz: 58ca8955c2d87b32de33fb068654c2caddd48193
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: cf8a8a0f43172d79c381ed2fe051222235ea910104b93a334b0ac5233a724164d30a82f442faa6fa9470ba0b99fd632dd7a8a1bdd3833e28ac2a1be89f11fda7
|
7
|
+
data.tar.gz: 849e17e58a0cc129a20ada47ece1a5a95e2a7e7e2caab69a2ea63419e9afb8103688e6e15bb4e831a952644bc42fab92eb4b3e765fda3e339c65cfbd933b041e
|
data/.autotest
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "autotest/bundler"
|
data/.gemtest
ADDED
File without changes
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
|
data/History.txt
ADDED
data/Manifest.txt
ADDED
data/README.txt
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
= reducers
|
2
|
+
|
3
|
+
== https://github.com/dsisnero/reducers
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
== DESCRIPTION:
|
8
|
+
|
9
|
+
This library is intended to provide a reducer library on collections for ruby like the clojure reducers
|
10
|
+
|
11
|
+
== FEATURES/PROBLEMS:
|
12
|
+
|
13
|
+
*
|
14
|
+
|
15
|
+
== SYNOPSIS:
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
== REQUIREMENTS:
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
== INSTALL:
|
24
|
+
|
25
|
+
sudo gem install reducers
|
26
|
+
|
27
|
+
== DEVELOPERS:
|
28
|
+
|
29
|
+
After checking out the source, run:
|
30
|
+
|
31
|
+
$ rake newb
|
32
|
+
|
33
|
+
This task will install any missing dependencies, run the tests/specs,
|
34
|
+
and generate the RDoc.
|
35
|
+
|
36
|
+
== LICENSE:
|
37
|
+
|
38
|
+
(The MIT License)
|
39
|
+
|
40
|
+
Copyright (c) 2012 FIX
|
41
|
+
|
42
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
43
|
+
a copy of this software and associated documentation files (the
|
44
|
+
'Software'), to deal in the Software without restriction, including
|
45
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
46
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
47
|
+
permit persons to whom the Software is furnished to do so, subject to
|
48
|
+
the following conditions:
|
49
|
+
|
50
|
+
The above copyright notice and this permission notice shall be
|
51
|
+
included in all copies or substantial portions of the Software.
|
52
|
+
|
53
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
54
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
55
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
56
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
57
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
58
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
59
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'hoe'
|
5
|
+
|
6
|
+
Hoe.plugin :bundler
|
7
|
+
|
8
|
+
# Hoe.plugin :compiler
|
9
|
+
# Hoe.plugin :compiler
|
10
|
+
# Hoe.plugin :gem_prelude_sucks
|
11
|
+
# Hoe.plugin :gem_prelude_sucks
|
12
|
+
# Hoe.plugin :inline
|
13
|
+
# Hoe.plugin :inline
|
14
|
+
# Hoe.plugin :racc
|
15
|
+
# Hoe.plugin :racc
|
16
|
+
# Hoe.plugin :rcov
|
17
|
+
# Hoe.plugin :rcov
|
18
|
+
# Hoe.plugin :rubyforge
|
19
|
+
# Hoe.plugin :rubyforge
|
20
|
+
|
21
|
+
Hoe.spec 'reducers' do
|
22
|
+
|
23
|
+
developer('Dominic Sisneros', 'dsisnero@gmail.com')
|
24
|
+
# extra_deps << ['blah', '~> 1.0']
|
25
|
+
# extra_dev_deps << ['blah', '~>1.0']
|
26
|
+
# dependency(name,version,type) :type one of :[:runtime, :dev,
|
27
|
+
# :development, :developer]
|
28
|
+
dependency('hoe-bundler', '> 0.0.0', :dev)
|
29
|
+
dependency('rspec', '> 0.0.0', :dev)
|
30
|
+
dependency('ZenTest', '> 0.0.0', :dev)
|
31
|
+
dependency('cucumber', '> 0.0.0', :dev)
|
32
|
+
dependency('aruba', '> 0.0.0', :dev)
|
33
|
+
dependency('lazing', '>0.0.0', :dev)
|
34
|
+
|
35
|
+
##
|
36
|
+
# Optional: Extra files you want to add to RDoc.
|
37
|
+
#
|
38
|
+
# .txt files are automatically included (excluding the obvious).
|
39
|
+
|
40
|
+
# extra_rdoc_files
|
41
|
+
|
42
|
+
##
|
43
|
+
# Optional: The filename for the project history. [default: History.txt]
|
44
|
+
|
45
|
+
# history_file
|
46
|
+
|
47
|
+
|
48
|
+
# self.rubyforge_name = 'reducers' # if different than 'reducers'
|
49
|
+
end
|
data/bin/reducers
ADDED
data/lib/reducers.rb
ADDED
@@ -0,0 +1,330 @@
|
|
1
|
+
require_relative 'reducers/functional'
|
2
|
+
|
3
|
+
module Enumerable
|
4
|
+
|
5
|
+
def lazy2(&block)
|
6
|
+
Reducers::Reducible.new(self)
|
7
|
+
end
|
8
|
+
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
module Reducers
|
13
|
+
|
14
|
+
VERSION = '0.0.5'
|
15
|
+
|
16
|
+
module Transformers
|
17
|
+
|
18
|
+
def map(&block)
|
19
|
+
add_proc mapping(&block)
|
20
|
+
self
|
21
|
+
end
|
22
|
+
|
23
|
+
def mash
|
24
|
+
reduce({}) do |result, input|
|
25
|
+
|
26
|
+
r = yield input
|
27
|
+
|
28
|
+
case r
|
29
|
+
when Hash
|
30
|
+
nk, nv = *r.to_a[0]
|
31
|
+
when Range
|
32
|
+
nk, nv = r.first, r.last
|
33
|
+
else
|
34
|
+
nk, nv = *r
|
35
|
+
end
|
36
|
+
result[nk] = nv
|
37
|
+
result
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def duplicate_on(&block)
|
42
|
+
group_by(&block).map{|x| x[1]}.select{|x| x.size > 1}
|
43
|
+
end
|
44
|
+
|
45
|
+
def group_by()
|
46
|
+
groups = reduce({}) do |h,i|
|
47
|
+
result = yield i
|
48
|
+
if h[result]
|
49
|
+
h[result] << i
|
50
|
+
else
|
51
|
+
h[result] = [i]
|
52
|
+
end
|
53
|
+
h
|
54
|
+
end
|
55
|
+
groups.lazy2
|
56
|
+
end
|
57
|
+
|
58
|
+
def grep(patt)
|
59
|
+
select{|x| x =~ patt}
|
60
|
+
end
|
61
|
+
|
62
|
+
def select(&block)
|
63
|
+
add_proc filtering(&block)
|
64
|
+
self
|
65
|
+
end
|
66
|
+
|
67
|
+
def reject(&block)
|
68
|
+
add_proc filtering(&(block.complement))
|
69
|
+
self
|
70
|
+
end
|
71
|
+
|
72
|
+
def mapcat(&block)
|
73
|
+
add_proc mapcatting(&block)
|
74
|
+
self
|
75
|
+
end
|
76
|
+
|
77
|
+
def take(n)
|
78
|
+
add_proc taking(n)
|
79
|
+
self
|
80
|
+
end
|
81
|
+
|
82
|
+
def drop(n)
|
83
|
+
add_proc dropping(n)
|
84
|
+
self
|
85
|
+
end
|
86
|
+
|
87
|
+
def take_while(&block)
|
88
|
+
add_proc take_while_proc(&block)
|
89
|
+
self
|
90
|
+
end
|
91
|
+
|
92
|
+
def drop_while(&block)
|
93
|
+
add_proc drop_while_proc(&block)
|
94
|
+
self
|
95
|
+
end
|
96
|
+
|
97
|
+
def flat_map(&block)
|
98
|
+
map(&block).flatten
|
99
|
+
self
|
100
|
+
end
|
101
|
+
|
102
|
+
|
103
|
+
def to_a
|
104
|
+
force
|
105
|
+
end
|
106
|
+
|
107
|
+
protected
|
108
|
+
|
109
|
+
def add_proc(proc)
|
110
|
+
# @chain = chain.compose(proc)
|
111
|
+
@proc_chain << proc
|
112
|
+
end
|
113
|
+
|
114
|
+
def mapping()
|
115
|
+
->(f1){
|
116
|
+
->(result,input){
|
117
|
+
mv = yield input
|
118
|
+
f1[result,mv ]
|
119
|
+
|
120
|
+
}
|
121
|
+
|
122
|
+
}
|
123
|
+
end
|
124
|
+
|
125
|
+
def mashing
|
126
|
+
->(f1){
|
127
|
+
|
128
|
+
->(result,input){
|
129
|
+
r = yield input
|
130
|
+
h = {}
|
131
|
+
case r
|
132
|
+
when Hash
|
133
|
+
nk, nv = *r.to_a[0]
|
134
|
+
when Range
|
135
|
+
nk, nv = r.first, r.last
|
136
|
+
else
|
137
|
+
nk, nv = *r
|
138
|
+
end
|
139
|
+
h[nk] = nv
|
140
|
+
f1[result,h]
|
141
|
+
}
|
142
|
+
}
|
143
|
+
end
|
144
|
+
|
145
|
+
|
146
|
+
def taking(n)
|
147
|
+
->(f1){
|
148
|
+
->(result, input){
|
149
|
+
n = n - 1
|
150
|
+
if n >= 0
|
151
|
+
f1[result, input]
|
152
|
+
else
|
153
|
+
throw(:reduced, result)
|
154
|
+
end
|
155
|
+
}
|
156
|
+
}
|
157
|
+
end
|
158
|
+
|
159
|
+
def dropping(n)
|
160
|
+
->(f1){
|
161
|
+
->(result,input){
|
162
|
+
n = n -1
|
163
|
+
if n < 0
|
164
|
+
f1[result,input]
|
165
|
+
else
|
166
|
+
result
|
167
|
+
end
|
168
|
+
}
|
169
|
+
}
|
170
|
+
end
|
171
|
+
|
172
|
+
def take_while_proc()
|
173
|
+
->(f1){
|
174
|
+
taking = true
|
175
|
+
->(result,input){
|
176
|
+
taking = yield input
|
177
|
+
if taking
|
178
|
+
f1[result,input]
|
179
|
+
else
|
180
|
+
throw(:reduced,result)
|
181
|
+
end
|
182
|
+
}
|
183
|
+
}
|
184
|
+
end
|
185
|
+
|
186
|
+
|
187
|
+
def drop_while_proc()
|
188
|
+
->(f1){
|
189
|
+
dropping = true
|
190
|
+
->(result, input){
|
191
|
+
|
192
|
+
if dropping
|
193
|
+
dropping = yield input
|
194
|
+
end
|
195
|
+
if dropping
|
196
|
+
result
|
197
|
+
else
|
198
|
+
f1[result,input]
|
199
|
+
end
|
200
|
+
}
|
201
|
+
}
|
202
|
+
end
|
203
|
+
|
204
|
+
def filtering()
|
205
|
+
->(f1){
|
206
|
+
->(result,input){
|
207
|
+
if yield input
|
208
|
+
f1[ result,input]
|
209
|
+
else
|
210
|
+
result
|
211
|
+
end
|
212
|
+
}
|
213
|
+
}
|
214
|
+
end
|
215
|
+
|
216
|
+
def parting()
|
217
|
+
->(f1){
|
218
|
+
->(result,input){
|
219
|
+
if yield input
|
220
|
+
[f1[result,input],result]
|
221
|
+
else
|
222
|
+
[result, f1[result,input]]
|
223
|
+
end
|
224
|
+
}}
|
225
|
+
end
|
226
|
+
|
227
|
+
|
228
|
+
def mapcatting()
|
229
|
+
->(f1){
|
230
|
+
->(result,input){
|
231
|
+
mcv = yield input
|
232
|
+
reduce[f1, result, mcv]
|
233
|
+
}
|
234
|
+
}
|
235
|
+
end
|
236
|
+
|
237
|
+
def flatmapping()
|
238
|
+
->(f1){
|
239
|
+
->(result,input){
|
240
|
+
mcv = yield input
|
241
|
+
f1[result, mcv.flatten]
|
242
|
+
}
|
243
|
+
}
|
244
|
+
end
|
245
|
+
|
246
|
+
end
|
247
|
+
|
248
|
+
|
249
|
+
class Undefined; end
|
250
|
+
|
251
|
+
class Reducible
|
252
|
+
|
253
|
+
include Transformers
|
254
|
+
|
255
|
+
|
256
|
+
# attr_reader :chain
|
257
|
+
attr_reader :coll, :proc_chain
|
258
|
+
|
259
|
+
def initialize(coll)
|
260
|
+
@coll = coll
|
261
|
+
@chain = ->x{x}
|
262
|
+
@proc_chain = []
|
263
|
+
end
|
264
|
+
|
265
|
+
def reduce(init = nil, f= Undefined ,&block)
|
266
|
+
if !block or !f == Undefined
|
267
|
+
if f == Undefined
|
268
|
+
f = init
|
269
|
+
init = nil
|
270
|
+
end
|
271
|
+
|
272
|
+
reducer = f
|
273
|
+
else
|
274
|
+
reducer = chain.(block) if f == Undefined
|
275
|
+
end
|
276
|
+
|
277
|
+
result = catch(:reduced){
|
278
|
+
|
279
|
+
if init
|
280
|
+
coll.reduce(init,&reducer)
|
281
|
+
else
|
282
|
+
coll.reduce(&reducer)
|
283
|
+
end
|
284
|
+
}
|
285
|
+
|
286
|
+
end
|
287
|
+
|
288
|
+
def initialize_copy(source)
|
289
|
+
super
|
290
|
+
@proc_chain = @proc_chain.dup
|
291
|
+
end
|
292
|
+
|
293
|
+
def tee
|
294
|
+
p2 = self.dup
|
295
|
+
[self, p2]
|
296
|
+
end
|
297
|
+
|
298
|
+
def partition(&block)
|
299
|
+
p1,p2 = tee
|
300
|
+
[p1.select(&block), p2.reject(&block)]
|
301
|
+
end
|
302
|
+
|
303
|
+
def chain
|
304
|
+
chain ||= Proc.compose(proc_chain)
|
305
|
+
end
|
306
|
+
|
307
|
+
|
308
|
+
def force
|
309
|
+
reduce([]){|r,i| r << i ; r}
|
310
|
+
end
|
311
|
+
|
312
|
+
|
313
|
+
end
|
314
|
+
end
|
315
|
+
|
316
|
+
|
317
|
+
# (defn reducer
|
318
|
+
# ([coll xf]
|
319
|
+
# (reify
|
320
|
+
# clojure.core.protocols/CollReduce
|
321
|
+
# (coll-reduce [_ f1 init]
|
322
|
+
# (clojure.core.protocols/coll-reduce coll (xf f1) init)))))
|
323
|
+
|
324
|
+
# def reducer(coll,xf)
|
325
|
+
# Class.new do
|
326
|
+
# define_method :reduce do |init,coll,f1|
|
327
|
+
# coll.reduce(init,xf.(f1))
|
328
|
+
# end
|
329
|
+
# end
|
330
|
+
# end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Functional
|
2
|
+
|
3
|
+
def identity
|
4
|
+
->x{ x}
|
5
|
+
end
|
6
|
+
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
|
10
|
+
def compose(*proc_chain)
|
11
|
+
proc_chain = proc_chain.first if proc_chain.first.class == Array
|
12
|
+
proc_chain.reduce(->(x){x}){|result,p| result.compose(p)}
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
def complement
|
20
|
+
lambda {|*args| not self.call(*args) }
|
21
|
+
end
|
22
|
+
|
23
|
+
def compose(other)
|
24
|
+
lambda {|*args| call(other.call(*args)) }
|
25
|
+
end
|
26
|
+
|
27
|
+
def pipe(other)
|
28
|
+
other.compose(self)
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
alias :* :compose
|
33
|
+
alias :>> :pipe
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
class Proc; include Functional; extend Functional::ClassMethods; end
|
42
|
+
class Method; include Functional; extend Functional::ClassMethods; end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
2
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
+
# Require this file using `require "spec_helper.rb"` to ensure that it is only
|
4
|
+
# loaded once.
|
5
|
+
#
|
6
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
+
require 'rspec'
|
8
|
+
require 'reducers'
|
9
|
+
|
10
|
+
|
11
|
+
RSpec.configure do |config|
|
12
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
13
|
+
config.run_all_when_everything_filtered = true
|
14
|
+
config.filter_run :focus
|
15
|
+
end
|
16
|
+
|
17
|
+
|
metadata
ADDED
@@ -0,0 +1,175 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: reducers
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.5
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Dominic Sisneros
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-02-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rdoc
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.10'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.10'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: hoe-bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>'
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.0.0
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>'
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.0.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>'
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.0.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>'
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.0.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: ZenTest
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>'
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.0.0
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>'
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.0.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: cucumber
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>'
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.0.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>'
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.0.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: aruba
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>'
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.0.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>'
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.0.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: lazing
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>'
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.0.0
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>'
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.0.0
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: hoe
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '3.5'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ~>
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '3.5'
|
125
|
+
description: This library is intended to provide a reducer library on collections
|
126
|
+
for ruby like the clojure reducers
|
127
|
+
email:
|
128
|
+
- dsisnero@gmail.com
|
129
|
+
executables:
|
130
|
+
- reducers
|
131
|
+
extensions: []
|
132
|
+
extra_rdoc_files:
|
133
|
+
- History.txt
|
134
|
+
- Manifest.txt
|
135
|
+
- README.txt
|
136
|
+
files:
|
137
|
+
- .autotest
|
138
|
+
- .rspec
|
139
|
+
- History.txt
|
140
|
+
- Manifest.txt
|
141
|
+
- README.txt
|
142
|
+
- Rakefile
|
143
|
+
- bin/reducers
|
144
|
+
- lib/reducers.rb
|
145
|
+
- lib/reducers/functional.rb
|
146
|
+
- spec/reducers_spec.rb
|
147
|
+
- spec/spec_helper.rb
|
148
|
+
- .gemtest
|
149
|
+
homepage:
|
150
|
+
licenses: []
|
151
|
+
metadata: {}
|
152
|
+
post_install_message:
|
153
|
+
rdoc_options:
|
154
|
+
- --main
|
155
|
+
- README.txt
|
156
|
+
require_paths:
|
157
|
+
- lib
|
158
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
159
|
+
requirements:
|
160
|
+
- - '>='
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '0'
|
163
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
|
+
requirements:
|
165
|
+
- - '>='
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: '0'
|
168
|
+
requirements: []
|
169
|
+
rubyforge_project: reducers
|
170
|
+
rubygems_version: 2.0.0
|
171
|
+
signing_key:
|
172
|
+
specification_version: 4
|
173
|
+
summary: This library is intended to provide a reducer library on collections for
|
174
|
+
ruby like the clojure reducers
|
175
|
+
test_files: []
|