pipeable 2.2.0 → 2.4.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
- checksums.yaml.gz.sig +0 -0
- data/README.adoc +11 -1
- data/lib/pipeable/builder.rb +2 -0
- data/lib/pipeable/composable.rb +11 -3
- data/lib/pipeable/steps/abstract.rb +2 -1
- data/pipeable.gemspec +4 -3
- data.tar.gz.sig +0 -0
- metadata +20 -6
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f2782175c7ee0d8736a0c06e600067954e65caf2ea9df0e6fbdf4f80c37f6878
|
|
4
|
+
data.tar.gz: 7e5f74957910311f5fb326a7ee6251d69e313fe5107d9fd0b9cea76238c97933
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f6ba9c78e38c272d1e7fd33bd3ec116b1d47153b9b481ab0a312ba981e1359196f78de5a37262e1e01cc14192d23daaf964cdce29c77fa25da1f1ab1043b9e30
|
|
7
|
+
data.tar.gz: 5595540ae59c8dfb2534a479020f15ba373dd1c5e80b24dcc6b39b06016041a3c31e0b5182bf1122893fd84885489aa82708d3f88b0dec9d0fddbb0324d5df20
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/README.adoc
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
:command_pattern_link: link:https://alchemists.io/articles/command_pattern[Command Pattern]
|
|
6
6
|
:containable_link: link:https://alchemists.io/projects/containable[Containable]
|
|
7
|
+
:core_link: link:https://alchemists.io/projects/core[Core]
|
|
7
8
|
:debug_link: link:https://github.com/ruby/debug[Debug]
|
|
8
9
|
:dry_monads_link: link:https://dry-rb.org/gems/dry-monads[Dry Monads]
|
|
9
10
|
:dry_schema_link: link:https://dry-rb.org/gems/dry-schema[Dry Schema]
|
|
@@ -583,7 +584,16 @@ Whether you use default, custom, or hybrid steps, you have maximum flexibility w
|
|
|
583
584
|
|
|
584
585
|
=== Composition
|
|
585
586
|
|
|
586
|
-
|
|
587
|
+
To make a plain old Ruby object functionally composable, include `Core::Composable` from the {core_link} gem which is required by Pipeable for you. Example:
|
|
588
|
+
|
|
589
|
+
[source,ruby]
|
|
590
|
+
----
|
|
591
|
+
class Demo
|
|
592
|
+
include Core::Composable
|
|
593
|
+
end
|
|
594
|
+
----
|
|
595
|
+
|
|
596
|
+
The above will allow you to send the following messages: `\#>>`, `#<<`, and `#call`. All you need to do is implement the `#call` message and you get the rest for free. See the {core_link} gem for details.
|
|
587
597
|
|
|
588
598
|
== Development
|
|
589
599
|
|
data/lib/pipeable/builder.rb
CHANGED
|
@@ -35,10 +35,12 @@ module Pipeable
|
|
|
35
35
|
|
|
36
36
|
def define_steps vessel = container
|
|
37
37
|
vessel.each_key do |key|
|
|
38
|
+
# simplecov:disable method
|
|
38
39
|
define_method key do |*positionals, **keywords, &block|
|
|
39
40
|
step = vessel[key]
|
|
40
41
|
step.is_a?(Proc) ? step : step.new(*positionals, **keywords, &block)
|
|
41
42
|
end
|
|
43
|
+
# simplecov:enable method
|
|
42
44
|
end
|
|
43
45
|
end
|
|
44
46
|
end
|
data/lib/pipeable/composable.rb
CHANGED
|
@@ -3,10 +3,18 @@
|
|
|
3
3
|
module Pipeable
|
|
4
4
|
# Allows objects to be functionally composable.
|
|
5
5
|
module Composable
|
|
6
|
-
def >>
|
|
6
|
+
def >> other
|
|
7
|
+
warn "`#>>` is deprecated, use `Core::Composable#>>` instead.", category: :deprecated
|
|
8
|
+
method(:call) >> other
|
|
9
|
+
end
|
|
7
10
|
|
|
8
|
-
def <<
|
|
11
|
+
def << other
|
|
12
|
+
warn "`#<<` is deprecated, use `Core::Composable#<<` instead.", category: :deprecated
|
|
13
|
+
method(:call) << other
|
|
14
|
+
end
|
|
9
15
|
|
|
10
|
-
def call
|
|
16
|
+
def call
|
|
17
|
+
fail NoMethodError, "`#{self.class.name}##{__method__}` must be implemented."
|
|
18
|
+
end
|
|
11
19
|
end
|
|
12
20
|
end
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require "core"
|
|
3
4
|
require "dry/monads"
|
|
4
5
|
|
|
5
6
|
module Pipeable
|
|
@@ -7,7 +8,7 @@ module Pipeable
|
|
|
7
8
|
# Provides a custom step blueprint.
|
|
8
9
|
class Abstract
|
|
9
10
|
include Dry::Monads[:result]
|
|
10
|
-
include Composable
|
|
11
|
+
include Core::Composable
|
|
11
12
|
|
|
12
13
|
def initialize *positionals, **keywords, &block
|
|
13
14
|
@base_positionals = positionals
|
data/pipeable.gemspec
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |spec|
|
|
4
4
|
spec.name = "pipeable"
|
|
5
|
-
spec.version = "2.
|
|
5
|
+
spec.version = "2.4.0"
|
|
6
6
|
spec.authors = ["Brooke Kuhlmann"]
|
|
7
7
|
spec.email = ["brooke@alchemists.io"]
|
|
8
8
|
spec.homepage = "https://alchemists.io/projects/pipeable"
|
|
@@ -24,11 +24,12 @@ Gem::Specification.new do |spec|
|
|
|
24
24
|
|
|
25
25
|
spec.required_ruby_version = ">= 4.0"
|
|
26
26
|
|
|
27
|
-
spec.add_dependency "containable", "~> 2.
|
|
27
|
+
spec.add_dependency "containable", "~> 2.3"
|
|
28
|
+
spec.add_dependency "core", "~> 3.4"
|
|
28
29
|
spec.add_dependency "dry-monads", "~> 1.9"
|
|
29
30
|
spec.add_dependency "marameters", "~> 5.0"
|
|
30
31
|
spec.add_dependency "refinements", "~> 14.0"
|
|
31
|
-
spec.add_dependency "zeitwerk", "~> 2.
|
|
32
|
+
spec.add_dependency "zeitwerk", "~> 2.8"
|
|
32
33
|
|
|
33
34
|
spec.extra_rdoc_files = Dir["README*", "LICENSE*"]
|
|
34
35
|
spec.files = Dir["*.gemspec", "lib/**/*"]
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pipeable
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Brooke Kuhlmann
|
|
@@ -41,14 +41,28 @@ dependencies:
|
|
|
41
41
|
requirements:
|
|
42
42
|
- - "~>"
|
|
43
43
|
- !ruby/object:Gem::Version
|
|
44
|
-
version: '2.
|
|
44
|
+
version: '2.3'
|
|
45
45
|
type: :runtime
|
|
46
46
|
prerelease: false
|
|
47
47
|
version_requirements: !ruby/object:Gem::Requirement
|
|
48
48
|
requirements:
|
|
49
49
|
- - "~>"
|
|
50
50
|
- !ruby/object:Gem::Version
|
|
51
|
-
version: '2.
|
|
51
|
+
version: '2.3'
|
|
52
|
+
- !ruby/object:Gem::Dependency
|
|
53
|
+
name: core
|
|
54
|
+
requirement: !ruby/object:Gem::Requirement
|
|
55
|
+
requirements:
|
|
56
|
+
- - "~>"
|
|
57
|
+
- !ruby/object:Gem::Version
|
|
58
|
+
version: '3.4'
|
|
59
|
+
type: :runtime
|
|
60
|
+
prerelease: false
|
|
61
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
62
|
+
requirements:
|
|
63
|
+
- - "~>"
|
|
64
|
+
- !ruby/object:Gem::Version
|
|
65
|
+
version: '3.4'
|
|
52
66
|
- !ruby/object:Gem::Dependency
|
|
53
67
|
name: dry-monads
|
|
54
68
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -97,14 +111,14 @@ dependencies:
|
|
|
97
111
|
requirements:
|
|
98
112
|
- - "~>"
|
|
99
113
|
- !ruby/object:Gem::Version
|
|
100
|
-
version: '2.
|
|
114
|
+
version: '2.8'
|
|
101
115
|
type: :runtime
|
|
102
116
|
prerelease: false
|
|
103
117
|
version_requirements: !ruby/object:Gem::Requirement
|
|
104
118
|
requirements:
|
|
105
119
|
- - "~>"
|
|
106
120
|
- !ruby/object:Gem::Version
|
|
107
|
-
version: '2.
|
|
121
|
+
version: '2.8'
|
|
108
122
|
email:
|
|
109
123
|
- brooke@alchemists.io
|
|
110
124
|
executables: []
|
|
@@ -161,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
161
175
|
- !ruby/object:Gem::Version
|
|
162
176
|
version: '0'
|
|
163
177
|
requirements: []
|
|
164
|
-
rubygems_version: 4.0.
|
|
178
|
+
rubygems_version: 4.0.20
|
|
165
179
|
specification_version: 4
|
|
166
180
|
summary: A domain specific language for building functionally composable steps.
|
|
167
181
|
test_files: []
|
metadata.gz.sig
CHANGED
|
Binary file
|