decide.rb 0.5.5 → 0.6.1

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: a644014eccc9464b607d16d44c6181de06b712c1aab8e2d33d407de838723fe8
4
- data.tar.gz: 1dbdd3c6a7b3b7efa189d857afa28da43d4f72ac1cc3ca72801bb86b854dfa73
3
+ metadata.gz: 38dfd00197b187505e43c496a3493942ad4b986d4cd7152cfc51affac1f6abf1
4
+ data.tar.gz: f0aea859df148b5f4a3eb9518df261dda2cff1fbd71b96e61ad26623c863c083
5
5
  SHA512:
6
- metadata.gz: 751a52fb88eef2b129cd439765c6d9083759fd3eda0727b831202d4a903e86532fc41ba4633753f0a3318aa197d64a974d612c3d8abedc0fe102d1c28a101fd7
7
- data.tar.gz: 2b658d6758c820c6d199c59a0275ea4cf49eee221570c4c8447f72b240207e9f717e1f3537da02f67512baf3976e448d7611ca49bbf5088032f88e79b2b89989
6
+ metadata.gz: 3b90ffcfa1407bcd0cedba9f0fa2c4882fa4675a6f8b73045c025c02a77eb26f5fc0d311693426c78903c1b3dd75606369b857ab5b9683ae75e68ba80aae6a5d
7
+ data.tar.gz: cbf4b81d9391c97b18a5532fe3f583867f6dc8127403d8c195307a8efc4a1e6ebbd94c298819831587f78711a329812d613014137630d2613174de44ccf0e365
data/CHANGELOG.md CHANGED
@@ -1,3 +1,39 @@
1
+ # 0.6.1
2
+
3
+ * Add `apply` extension for creating applicatives
4
+
5
+ ```ruby
6
+ decider = Decider.map(fn.curry, deciderx)
7
+ decider = Decider.apply(decider, decidery)
8
+ decider = Decider.apply(decider, deciderz)
9
+ # or
10
+ deciderx.map(fn.curry).apply(decidery).apply(deciderz)
11
+ ```
12
+
13
+ # 0.6.0
14
+
15
+ * All extensions takes decider as last argument
16
+
17
+ ```ruby
18
+ # Before
19
+ Decider.dimap_on_state(decider, fl:, fr:)
20
+ Decider.dimap_on_event(decider, fl:, fr:)
21
+ Decider.lmap_on_event(decider, fn)
22
+ Decider.lmap_on_command(decider, fn)
23
+ Decider.lmap_on_state(decider, fn)
24
+ Decider.rmap_on_event(decider, fn)
25
+ Decider.rmap_on_state(decider, fn)
26
+
27
+ # After
28
+ Decider.dimap_on_state(fl, fr, decider)
29
+ Decider.dimap_on_event(fl, fr, decider)
30
+ Decider.lmap_on_event(fn, decider)
31
+ Decider.lmap_on_command(fn, decider)
32
+ Decider.lmap_on_state(fn, decider)
33
+ Decider.rmap_on_event(fn, decider)
34
+ Decider.rmap_on_state(fn, decider)
35
+ ```
36
+
1
37
  # 0.5.5
2
38
 
3
39
  * Add `lmap_on_command` extension that takes proc that maps command and returns a new decider
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Decider
4
- VERSION = "0.5.5"
4
+ VERSION = "0.6.1"
5
5
  end
data/lib/decider.rb CHANGED
@@ -109,11 +109,11 @@ module Decider
109
109
  end
110
110
 
111
111
  define_method(:lmap_on_command) do |fn|
112
- Decider.lmap_on_command(self, fn)
112
+ Decider.lmap_on_command(fn, self)
113
113
  end
114
114
 
115
115
  define_method(:lmap_on_state) do |fn|
116
- Decider.lmap_on_state(self, fn)
116
+ Decider.lmap_on_state(fn, self)
117
117
  end
118
118
 
119
119
  define_method(:map) do |fn|
@@ -121,23 +121,27 @@ module Decider
121
121
  end
122
122
 
123
123
  define_method(:rmap_on_state) do |fn|
124
- Decider.rmap_on_state(self, fn)
124
+ Decider.rmap_on_state(fn, self)
125
125
  end
126
126
 
127
127
  define_method(:dimap_on_state) do |fl:, fr:|
128
- Decider.dimap_on_state(self, fl: fl, fr: fr)
128
+ Decider.dimap_on_state(fl, fr, self)
129
129
  end
130
130
 
131
131
  define_method(:lmap_on_event) do |fn|
132
- Decider.lmap_on_event(self, fn)
132
+ Decider.lmap_on_event(fn, self)
133
133
  end
134
134
 
135
135
  define_method(:rmap_on_event) do |fn|
136
- Decider.rmap_on_event(self, fn)
136
+ Decider.rmap_on_event(fn, self)
137
137
  end
138
138
 
139
139
  define_method(:dimap_on_event) do |fl:, fr:|
140
- Decider.dimap_on_event(self, fl: fl, fr: fr)
140
+ Decider.dimap_on_event(fl, fr, self)
141
+ end
142
+
143
+ define_method(:apply) do |f|
144
+ Decider.apply(self, f)
141
145
  end
142
146
  end
143
147
  end
@@ -235,7 +239,7 @@ module Decider
235
239
  end
236
240
  end
237
241
 
238
- def self.lmap_on_command(decider, fn)
242
+ def self.lmap_on_command(fn, decider)
239
243
  define do
240
244
  initial_state decider.initial_state
241
245
 
@@ -253,19 +257,19 @@ module Decider
253
257
  end
254
258
  end
255
259
 
256
- def self.lmap_on_state(decider, fn)
257
- dimap_on_state(decider, fl: fn, fr: ->(state) { state })
260
+ def self.lmap_on_state(fn, decider)
261
+ dimap_on_state(fn, ->(state) { state }, decider)
258
262
  end
259
263
 
260
264
  def self.map(fn, decider)
261
- dimap_on_state(decider, fl: ->(state) { state }, fr: fn)
265
+ dimap_on_state(->(state) { state }, fn, decider)
262
266
  end
263
267
 
264
- def self.rmap_on_state(decider, fn)
265
- dimap_on_state(decider, fl: ->(state) { state }, fr: fn)
268
+ def self.rmap_on_state(fn, decider)
269
+ dimap_on_state(->(state) { state }, fn, decider)
266
270
  end
267
271
 
268
- def self.dimap_on_state(decider, fl:, fr:)
272
+ def self.dimap_on_state(fl, fr, decider)
269
273
  define do
270
274
  initial_state fr.call(decider.initial_state)
271
275
 
@@ -283,15 +287,15 @@ module Decider
283
287
  end
284
288
  end
285
289
 
286
- def self.lmap_on_event(decider, fn)
287
- dimap_on_event(decider, fl: fn, fr: ->(event) { event })
290
+ def self.lmap_on_event(fn, decider)
291
+ dimap_on_event(fn, ->(event) { event }, decider)
288
292
  end
289
293
 
290
- def self.rmap_on_event(decider, fn)
291
- dimap_on_event(decider, fl: ->(event) { event }, fr: fn)
294
+ def self.rmap_on_event(fn, decider)
295
+ dimap_on_event(->(event) { event }, fn, decider)
292
296
  end
293
297
 
294
- def self.dimap_on_event(decider, fl:, fr:)
298
+ def self.dimap_on_event(fl, fr, decider)
295
299
  define do
296
300
  initial_state decider.initial_state
297
301
 
@@ -311,6 +315,10 @@ module Decider
311
315
  end
312
316
  end
313
317
 
318
+ def self.apply(f, x)
319
+ map2(->(f, x) { f.call(x) }, f, x)
320
+ end
321
+
314
322
  def self.map2(fn, dx, dy)
315
323
  define do
316
324
  initial_state fn.call(dx.initial_state, dy.initial_state)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decide.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Dudulski
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-06-22 00:00:00.000000000 Z
10
+ date: 2025-06-23 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: concurrent-ruby