shifty 0.4.2 → 0.5.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 +4 -4
- data/lib/shifty/dsl.rb +31 -20
- data/lib/shifty/taggable.rb +1 -1
- data/lib/shifty/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b2d09c087eca2d3c2790efab38c0e12230edd9738daf7e43c6788a8671c64356
|
4
|
+
data.tar.gz: 98fe18da84e2889e1b0c1bb90ea41ffcb6928e50868033fa33627bce58482052
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0fb0046526de78394da2a742f9c9d41d07d58717592f0ce40f13d32e6cdf8e2c0c42d30fffe2bc53e164398422639c5f42943c0e7edb064eb0ec8c21960fe833
|
7
|
+
data.tar.gz: 45792b0187073a88781217d1559afc185471bbdbd849c233af81055a9dc5d71ebf8bbd018a3224baa4d0a32795109802eadfcfe9dba754f964907154dabc0e4c
|
data/lib/shifty/dsl.rb
CHANGED
@@ -19,18 +19,23 @@ module Shifty
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
def relay_worker(&block)
|
22
|
+
def relay_worker(options = {}, &block)
|
23
|
+
options[:tags] ||= []
|
24
|
+
options[:tags] << :relay
|
23
25
|
ensure_regular_arity(block)
|
24
26
|
|
25
|
-
Worker.new(
|
27
|
+
Worker.new(options) do |value|
|
26
28
|
value && block.call(value)
|
27
29
|
end
|
28
30
|
end
|
29
31
|
|
30
|
-
def side_worker(
|
32
|
+
def side_worker(options = {}, &block)
|
33
|
+
options[:tags] ||= []
|
34
|
+
options[:tags] << :side_effect
|
35
|
+
mode = options[:mode] || :normal
|
31
36
|
ensure_regular_arity(block)
|
32
37
|
|
33
|
-
Worker.new(
|
38
|
+
Worker.new(options) do |value|
|
34
39
|
value.tap do |v|
|
35
40
|
used_value = (mode == :hardened) ?
|
36
41
|
Marshal.load(Marshal.dump(v)) : v
|
@@ -40,15 +45,13 @@ module Shifty
|
|
40
45
|
end
|
41
46
|
end
|
42
47
|
|
43
|
-
def filter_worker(
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
callable = argument.respond_to?(:call) ? argument : block
|
48
|
-
ensure_callable(callable)
|
48
|
+
def filter_worker(options = {}, &block)
|
49
|
+
options[:tags] ||= []
|
50
|
+
options[:tags] << :filter
|
51
|
+
ensure_callable!(block)
|
49
52
|
|
50
|
-
Worker.new(
|
51
|
-
while value && !
|
53
|
+
Worker.new(options) do |value, supply|
|
54
|
+
while value && !block.call(value)
|
52
55
|
value = supply.shift
|
53
56
|
end
|
54
57
|
value
|
@@ -62,14 +65,18 @@ module Shifty
|
|
62
65
|
end
|
63
66
|
end
|
64
67
|
|
65
|
-
def batch_worker(options = {
|
68
|
+
def batch_worker(options = {}, &block)
|
69
|
+
options[:tags] ||= []
|
70
|
+
options[:tags] << :batch
|
71
|
+
options[:gathering] ||= 1
|
72
|
+
|
66
73
|
ensure_regular_arity(block) if block
|
67
74
|
batch_full = block ||
|
68
75
|
proc { |_, batch| batch.size >= options[:gathering] }
|
69
76
|
|
70
|
-
|
77
|
+
options[:context] = BatchContext.new({batch_full: batch_full})
|
71
78
|
|
72
|
-
Worker.new(
|
79
|
+
Worker.new(options) do |value, supply, context|
|
73
80
|
if value
|
74
81
|
context.collection = [value]
|
75
82
|
until context.batch_complete?(
|
@@ -83,10 +90,12 @@ module Shifty
|
|
83
90
|
end
|
84
91
|
end
|
85
92
|
|
86
|
-
def splitter_worker(&block)
|
93
|
+
def splitter_worker(options = {}, &block)
|
94
|
+
options[:tags] ||= []
|
95
|
+
options[:tags] << :splitter
|
87
96
|
ensure_regular_arity(block)
|
88
97
|
|
89
|
-
Worker.new(
|
98
|
+
Worker.new(options) do |value|
|
90
99
|
if value.nil?
|
91
100
|
value
|
92
101
|
else
|
@@ -99,9 +108,11 @@ module Shifty
|
|
99
108
|
end
|
100
109
|
end
|
101
110
|
|
111
|
+
# don't like that this is a second exception to accepting options..
|
102
112
|
def trailing_worker(trail_length = 2)
|
113
|
+
options = {tags: [:trailing]}
|
103
114
|
trail = []
|
104
|
-
Worker.new(
|
115
|
+
Worker.new(options) do |value, supply|
|
105
116
|
if value
|
106
117
|
trail.unshift value
|
107
118
|
if trail.size >= trail_length
|
@@ -113,7 +124,7 @@ module Shifty
|
|
113
124
|
|
114
125
|
trail
|
115
126
|
else
|
116
|
-
value
|
127
|
+
value # hint: it's nil!
|
117
128
|
end
|
118
129
|
end
|
119
130
|
end
|
@@ -128,7 +139,7 @@ module Shifty
|
|
128
139
|
raise WorkerInitializationError.new([msg].flatten.join(" "))
|
129
140
|
end
|
130
141
|
|
131
|
-
def ensure_callable(callable)
|
142
|
+
def ensure_callable!(callable)
|
132
143
|
unless callable&.respond_to?(:call)
|
133
144
|
throw_with "You must supply a callable"
|
134
145
|
end
|
data/lib/shifty/taggable.rb
CHANGED
data/lib/shifty/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shifty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel Helbling
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|