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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 06a704c0f367d6ef1fbca2fecf31f08f1688610a55c2368df9bc483b1ffbc91c
4
- data.tar.gz: b2023f0ac1e7c996cfab97ecac9736940dacd90f62e0a37e3355b1a0bcf2e323
3
+ metadata.gz: f2782175c7ee0d8736a0c06e600067954e65caf2ea9df0e6fbdf4f80c37f6878
4
+ data.tar.gz: 7e5f74957910311f5fb326a7ee6251d69e313fe5107d9fd0b9cea76238c97933
5
5
  SHA512:
6
- metadata.gz: b5708cf88376aacde63c9aa699f2a6001823034d33f3bf1421c497c4b08aaba94305252bb2d476fe5868b247b182a22ebe28a3fc7b4731272790f332e90621d6
7
- data.tar.gz: 5acab733acccd2206910d464151031372b639441e0930ae0abf0081e19e621766e29d4057111e40f6c9148ceeaa7d4508cad2edb0eb8123d5516d9dfda44edc8
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
- Should you ever need to make a plain old Ruby object functionally composable, then you can _include_ the `Pipeable::Composable` module which will give you the necessary `\#>>`, `#<<`, and `#call` methods where you only need to implement the `#call` method.
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
 
@@ -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
@@ -3,10 +3,18 @@
3
3
  module Pipeable
4
4
  # Allows objects to be functionally composable.
5
5
  module Composable
6
- def >>(other) = method(:call) >> other
6
+ def >> other
7
+ warn "`#>>` is deprecated, use `Core::Composable#>>` instead.", category: :deprecated
8
+ method(:call) >> other
9
+ end
7
10
 
8
- def <<(other) = method(:call) << other
11
+ def << other
12
+ warn "`#<<` is deprecated, use `Core::Composable#<<` instead.", category: :deprecated
13
+ method(:call) << other
14
+ end
9
15
 
10
- def call = fail NoMethodError, "`#{self.class.name}##{__method__}` must be implemented."
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.2.0"
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.0"
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.7"
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.2.0
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.0'
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.0'
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.7'
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.7'
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.10
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