pathway 0.12.1 → 0.12.2

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: 45170fed25a15c1d3b5b04630a9829a0a82d3a5f9423a3442445502252a1bb34
4
- data.tar.gz: 424438af1eed0c2a93ca3be3dbe1923033f827809fa67d3b8aac31168402069e
3
+ metadata.gz: 29e0024427e53290982fedc6eadaacbbf3555627e94930d1c52d3bdcbb90a5dd
4
+ data.tar.gz: 98fbe3a72e2aa4c1a3a6b0c1a9ed610231256364b4db44e7840da261bac5a47f
5
5
  SHA512:
6
- metadata.gz: 1a2c4671a9482af68487fa0298bd81cb93940906969e4cf3ecdf170f2332d4b5b988eb77653e71b095619bb1a9e70473a3a94a0eca6462e1aee4cb0d11d8fc88
7
- data.tar.gz: d6dfa471b5d28317b23ae7e671cb1a12052ba11c02a52cd639e4635505c3843c4b7bddf84a7afb3af616bcaae2a067b3f622432d6bf623902b7c7be56a3daa87
6
+ metadata.gz: 81ee05e3aec188a87df7b59032099cfcfb7c59e4641ab6b0db8ebe02bcf693d53fec4db3de16bb62d96e8e84cdf6f45e995411429c53818c748b320da7aa06a2
7
+ data.tar.gz: f64c5e2d2bc08afcca58b62a53dbb98511f59d6f7588e59732c434f0abaae103ac00c2153e76f6b2b2eeb034855bdf1c2561cfa44ce15885ab12be5fa815f1b3
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## [0.12.2] - 2024-08-06
2
+ ### Added
3
+ - Add `Pathway::State#unwrap` and `Pathway::State#u` to access internal state
4
+
1
5
  ## [0.12.1] - 2024-06-23
2
6
  ### Added
3
7
  - Add support for pattern matching on `Result`, `State` and `Error` instances
@@ -8,6 +8,7 @@ module Pathway
8
8
 
9
9
  def _callable(callable)
10
10
  if callable.is_a?(Symbol) && @operation.respond_to?(callable, true) &&
11
+ @operation.method(callable).arity != 0 &&
11
12
  @operation.method(callable).parameters.all? { _1 in [:key|:keyreq|:keyrest|:block,*] }
12
13
 
13
14
  -> state { @operation.send(callable, **state) }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pathway
4
- VERSION = '0.12.1'
4
+ VERSION = '0.12.2'
5
5
  end
data/lib/pathway.rb CHANGED
@@ -83,7 +83,23 @@ module Pathway
83
83
  @hash
84
84
  end
85
85
 
86
- alias :to_h :to_hash
86
+ def unwrap(&bl)
87
+ raise 'a block must be provided' if !block_given?
88
+ params = bl.parameters
89
+ unless params.all? { |(type,_)| [:block, :key, :keyreq, :keyrest].member?(type) }
90
+ raise 'only keyword arguments are supported for unwraping'
91
+ end
92
+
93
+ if params.any? {|(type,_)| type == :keyrest }
94
+ bl.call(**to_hash)
95
+ else
96
+ keys = params.select {|(type,_)| type == :key || type == :keyreq }.map(&:last)
97
+ bl.call(**to_hash.slice(*keys))
98
+ end
99
+ end
100
+
101
+ alias_method :to_h, :to_hash
102
+ alias_method :u, :unwrap
87
103
  end
88
104
 
89
105
  module Plugins
data/pathway.gemspec CHANGED
@@ -43,4 +43,5 @@ Gem::Specification.new do |spec|
43
43
  spec.add_development_dependency "pry"
44
44
  spec.add_development_dependency "pry-byebug"
45
45
  spec.add_development_dependency "pry-doc"
46
+ spec.add_development_dependency "pry-stack"
46
47
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pathway
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.1
4
+ version: 0.12.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pablo Herrero
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-06-23 00:00:00.000000000 Z
11
+ date: 2024-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-inflector
@@ -192,6 +192,20 @@ dependencies:
192
192
  - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: pry-stack
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
195
209
  description: Define your business logic in simple steps.
196
210
  email:
197
211
  - pablodherrero@gmail.com
@@ -240,7 +254,7 @@ licenses:
240
254
  metadata:
241
255
  bug_tracker_uri: https://github.com/pabloh/pathway/issues
242
256
  source_code_uri: https://github.com/pabloh/pathway
243
- post_install_message:
257
+ post_install_message:
244
258
  rdoc_options: []
245
259
  require_paths:
246
260
  - lib
@@ -256,7 +270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
256
270
  version: '0'
257
271
  requirements: []
258
272
  rubygems_version: 3.5.10
259
- signing_key:
273
+ signing_key:
260
274
  specification_version: 4
261
275
  summary: Define your business logic in simple steps.
262
276
  test_files: []