composable_operations 0.6.0 → 0.7.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ac9f54ccfaf7e9e03e47174f435b00f536764c9
|
4
|
+
data.tar.gz: ee9f3b4c7a5185403b4b418a3860bb05af007891
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10dbdfddb4ad3957b07e95316518902b6880f2ef3e739ce298b143824cc568402eba18aadfcd47c0907684351175abb5612f860ee2736daf0afc58ef79f3d3b5
|
7
|
+
data.tar.gz: 12f3736f3056b60b79a18e9645a267f5f7f4718f89a384b231d4cc3f60b88c63f9144757b6f90a0f2bb809b9766d1fedfb88aa08822778988257867c9d43418a
|
@@ -8,8 +8,8 @@ module ComposableOperations
|
|
8
8
|
@_options = options
|
9
9
|
end
|
10
10
|
|
11
|
-
def create(context, input
|
12
|
-
new *
|
11
|
+
def create(context, *input)
|
12
|
+
new *input, Hash[Array(@_options).map do |key, value|
|
13
13
|
[key, value.kind_of?(Proc) ? context.instance_exec(&value) : value]
|
14
14
|
end]
|
15
15
|
end
|
@@ -46,7 +46,11 @@ module ComposableOperations
|
|
46
46
|
|
47
47
|
def execute
|
48
48
|
self.class.operations.inject(input) do |data, operation|
|
49
|
-
operation =
|
49
|
+
operation = if data.respond_to?(:to_ary)
|
50
|
+
operation.create(self, *data)
|
51
|
+
else
|
52
|
+
operation.create(self, data)
|
53
|
+
end
|
50
54
|
operation.perform
|
51
55
|
|
52
56
|
if operation.failed?
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ComposableOperations::ComposedOperation, "input forwarding:" do
|
4
|
+
|
5
|
+
describe "An operation pipeline that first constructs an enumerator, then passes it from operation to operation and finally returns it as the result" do
|
6
|
+
|
7
|
+
let(:enum_generator) do
|
8
|
+
Class.new(ComposableOperations::Operation) do
|
9
|
+
def execute
|
10
|
+
%w[just some text].enum_for(:each)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:null_operation) do
|
16
|
+
Class.new(ComposableOperations::Operation) do
|
17
|
+
processes :enumerator
|
18
|
+
def execute
|
19
|
+
enumerator
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
subject(:pipeline) do
|
25
|
+
ComposableOperations::ComposedOperation.compose(enum_generator, null_operation)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should actually return an enumerator" do
|
29
|
+
result = pipeline.perform
|
30
|
+
result.should be_kind_of(Enumerator)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "An operation pipeline that first constructs an object that responds #to_a, then passes it from operation to operation and finally returns it as the result" do
|
35
|
+
|
36
|
+
let(:dummy) do
|
37
|
+
Object.new.tap do |o|
|
38
|
+
def o.to_a
|
39
|
+
%w[just some text]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
let(:object_representable_as_array_generator) do
|
45
|
+
spec_context = self
|
46
|
+
Class.new(ComposableOperations::Operation) do
|
47
|
+
define_method(:execute) do
|
48
|
+
spec_context.dummy
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
let(:null_operation) do
|
54
|
+
Class.new(ComposableOperations::Operation) do
|
55
|
+
processes :object_representable_as_array
|
56
|
+
def execute
|
57
|
+
object_representable_as_array
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
subject(:pipeline) do
|
63
|
+
ComposableOperations::ComposedOperation.compose(object_representable_as_array_generator, null_operation)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should actually return this object" do
|
67
|
+
result = pipeline.perform
|
68
|
+
result.should == dummy
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: composable_operations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Konstantin Tennhard
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: smart_properties
|
@@ -105,6 +105,7 @@ files:
|
|
105
105
|
- lib/composable_operations/version.rb
|
106
106
|
- spec/composable_operations/composed_operation_spec.rb
|
107
107
|
- spec/composable_operations/control_flow_spec.rb
|
108
|
+
- spec/composable_operations/operation_input_forwarding_spec.rb
|
108
109
|
- spec/composable_operations/operation_input_processing_spec.rb
|
109
110
|
- spec/composable_operations/operation_spec.rb
|
110
111
|
- spec/spec_helper.rb
|
@@ -128,13 +129,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
129
|
version: '0'
|
129
130
|
requirements: []
|
130
131
|
rubyforge_project:
|
131
|
-
rubygems_version: 2.0.
|
132
|
+
rubygems_version: 2.0.3
|
132
133
|
signing_key:
|
133
134
|
specification_version: 4
|
134
135
|
summary: Tool set for operation pipelines.
|
135
136
|
test_files:
|
136
137
|
- spec/composable_operations/composed_operation_spec.rb
|
137
138
|
- spec/composable_operations/control_flow_spec.rb
|
139
|
+
- spec/composable_operations/operation_input_forwarding_spec.rb
|
138
140
|
- spec/composable_operations/operation_input_processing_spec.rb
|
139
141
|
- spec/composable_operations/operation_spec.rb
|
140
142
|
- spec/spec_helper.rb
|