decider 0.9.0 → 0.10.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
- data/CHANGELOG.md +4 -0
- data/lib/decider/version.rb +1 -1
- data/lib/decider/view.rb +19 -4
- data/lib/decider.rb +16 -4
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 21f3d750ca980c0f3f4af0c798b0ab0be623959f61a66dc16c596d8be8076880
|
|
4
|
+
data.tar.gz: 1fe993a700c878a7244b629585113feac135cdfce65ec3fd68edae3a8f48f9c9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8d473ceb5129e7d62dd943ad2ff9b0538b5dff49222ac2f5a9dc92305b79efd7f5935365e5781a066e258b4a327ad111ae692985848e3bb939391a655fc544bc
|
|
7
|
+
data.tar.gz: 635d00dd5ed86650c7ecccb07c148ee2b6bd3aec6808e9bed5abb4a23f408e49badab98ba31cb3ceafe3fa400b5e2b1590b414f3c3c58748a8497f0f62ddeb97
|
data/CHANGELOG.md
CHANGED
data/lib/decider/version.rb
CHANGED
data/lib/decider/view.rb
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Decider::View
|
|
4
|
+
StateAlreadyDefined = Class.new(StandardError)
|
|
5
|
+
StateNotDefined = Class.new(StandardError)
|
|
6
|
+
|
|
4
7
|
class Module < ::Module
|
|
5
8
|
EVOLVE_FALLBACK = proc { [nil, proc { state }] }
|
|
6
9
|
|
|
@@ -11,8 +14,15 @@ module Decider::View
|
|
|
11
14
|
end
|
|
12
15
|
|
|
13
16
|
def initialize(initial_state:, evolutions:)
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
case initial_state
|
|
18
|
+
in Proc
|
|
19
|
+
define_method(:initial_state) do
|
|
20
|
+
initial_state.call
|
|
21
|
+
end
|
|
22
|
+
else
|
|
23
|
+
define_method(:initial_state) do
|
|
24
|
+
initial_state
|
|
25
|
+
end
|
|
16
26
|
end
|
|
17
27
|
|
|
18
28
|
define_method(:evolve) do |*args|
|
|
@@ -92,10 +102,15 @@ module Decider::View
|
|
|
92
102
|
|
|
93
103
|
attr_reader :evolutions
|
|
94
104
|
|
|
95
|
-
def initial_state(state)
|
|
105
|
+
def initial_state(state = DEFAULT, &block)
|
|
96
106
|
raise StateAlreadyDefined if @initial_state != DEFAULT
|
|
97
107
|
|
|
98
|
-
@initial_state =
|
|
108
|
+
@initial_state =
|
|
109
|
+
if block_given?
|
|
110
|
+
block
|
|
111
|
+
else
|
|
112
|
+
state
|
|
113
|
+
end
|
|
99
114
|
end
|
|
100
115
|
|
|
101
116
|
def evolve(*args, &block)
|
data/lib/decider.rb
CHANGED
|
@@ -58,8 +58,15 @@ module Decider
|
|
|
58
58
|
Terminal = Data.define(:state)
|
|
59
59
|
|
|
60
60
|
def initialize(initial_state:, deciders:, evolutions:, terminal:)
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
case initial_state
|
|
62
|
+
in Proc
|
|
63
|
+
define_method(:initial_state) do
|
|
64
|
+
initial_state.call
|
|
65
|
+
end
|
|
66
|
+
else
|
|
67
|
+
define_method(:initial_state) do
|
|
68
|
+
initial_state
|
|
69
|
+
end
|
|
63
70
|
end
|
|
64
71
|
|
|
65
72
|
define_method(:decide) do |command, state|
|
|
@@ -189,10 +196,15 @@ module Decider
|
|
|
189
196
|
|
|
190
197
|
attr_reader :deciders, :evolutions, :terminal
|
|
191
198
|
|
|
192
|
-
def initial_state(state)
|
|
199
|
+
def initial_state(state = DEFAULT, &block)
|
|
193
200
|
raise StateAlreadyDefined if @initial_state != DEFAULT
|
|
194
201
|
|
|
195
|
-
@initial_state =
|
|
202
|
+
@initial_state =
|
|
203
|
+
if block_given?
|
|
204
|
+
block
|
|
205
|
+
else
|
|
206
|
+
state
|
|
207
|
+
end
|
|
196
208
|
end
|
|
197
209
|
|
|
198
210
|
def decide(*args, &block)
|