pathway 0.12.1 → 0.12.2

Sign up to get free protection for your applications and to get access to all the features.
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: []