ruff 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +59 -0
- data/docs/Ruff.html +4 -4
- data/docs/Ruff/Effect.html +2 -2
- data/docs/Ruff/Handler.html +28 -20
- data/docs/Ruff/Standard.html +115 -0
- data/docs/Ruff/Standard/CurrentTime.html +236 -0
- data/docs/Ruff/Standard/CurrentTime/Instance.html +311 -0
- data/docs/Ruff/Standard/Defer.html +236 -0
- data/docs/Ruff/Standard/Defer/Instance.html +335 -0
- data/docs/Ruff/Standard/State.html +392 -0
- data/docs/Ruff/Standard/State/Instance.html +489 -0
- data/docs/Ruff/Throws.html +2 -2
- data/docs/Ruff/Throws/Eff.html +2 -2
- data/docs/Ruff/Throws/Resend.html +2 -2
- data/docs/_index.html +87 -3
- data/docs/class_list.html +1 -1
- data/docs/file.README.html +66 -4
- data/docs/frames.html +1 -1
- data/docs/index.html +66 -4
- data/docs/method_list.html +171 -3
- data/docs/top-level-namespace.html +2 -2
- data/lib/ruff/handler.rb +11 -9
- data/lib/ruff/standard.rb +6 -0
- data/lib/ruff/standard/current_time.rb +29 -0
- data/lib/ruff/standard/defer.rb +40 -0
- data/lib/ruff/standard/state.rb +64 -0
- data/lib/ruff/version.rb +1 -1
- data/version.h +1 -1
- metadata +12 -1
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
Top Level Namespace
|
8
8
|
|
9
|
-
— Ruff 0.0.
|
9
|
+
— Ruff 0.0.8 Documentation
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -100,7 +100,7 @@
|
|
100
100
|
</div>
|
101
101
|
|
102
102
|
<div id="footer">
|
103
|
-
Generated on Thu Oct 3
|
103
|
+
Generated on Thu Oct 3 03:25:53 2019 by
|
104
104
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
105
105
|
0.9.20 (ruby-2.6.4).
|
106
106
|
</div>
|
data/lib/ruff/handler.rb
CHANGED
@@ -4,8 +4,6 @@ require 'securerandom'
|
|
4
4
|
class Ruff::Handler
|
5
5
|
include Ruff::Throws
|
6
6
|
|
7
|
-
@valh_id = SecureRandom.uuid
|
8
|
-
|
9
7
|
# makes a new handler, internally having fresh empty hash.
|
10
8
|
#
|
11
9
|
# This is a effect-handler store and when handliong it is looked up.
|
@@ -16,6 +14,7 @@ class Ruff::Handler
|
|
16
14
|
|
17
15
|
def initialize
|
18
16
|
@handlers = Hash.new
|
17
|
+
@valh_id = SecureRandom.uuid
|
19
18
|
@handlers[@valh_id] = ->(x) { x }
|
20
19
|
end
|
21
20
|
|
@@ -115,13 +114,16 @@ class Ruff::Handler
|
|
115
114
|
if effh = @handlers[r.id]
|
116
115
|
effh[continue, *r.args]
|
117
116
|
else
|
118
|
-
Fiber.yield
|
117
|
+
Fiber.yield Resend.new(r, continue)
|
119
118
|
end
|
120
119
|
elsif r.is_a? Resend
|
121
|
-
|
122
|
-
|
120
|
+
eff = r.eff
|
121
|
+
next_k = rehandles.(r.k)
|
122
|
+
|
123
|
+
if effh = @handlers[eff.id]
|
124
|
+
effh.(next_k, *eff.args)
|
123
125
|
else
|
124
|
-
Fiber.yield
|
126
|
+
Fiber.yield Resend.new(eff, next_k)
|
125
127
|
end
|
126
128
|
else
|
127
129
|
@handlers[@valh_id].(r)
|
@@ -145,16 +147,16 @@ class Ruff::Handler
|
|
145
147
|
->(*args) {
|
146
148
|
continue[
|
147
149
|
newh.run {
|
148
|
-
k
|
150
|
+
k.(*args)
|
149
151
|
}
|
150
152
|
]
|
151
153
|
}
|
152
154
|
}
|
153
155
|
|
154
156
|
continue = ->(*arg) {
|
155
|
-
handle
|
157
|
+
handle.(co.resume(*arg))
|
156
158
|
}
|
157
159
|
|
158
|
-
continue
|
160
|
+
continue.(nil)
|
159
161
|
end
|
160
162
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Ruff::Standard::CurrentTime
|
2
|
+
class Instance
|
3
|
+
def initialize
|
4
|
+
@eff = Ruff.instance
|
5
|
+
end
|
6
|
+
|
7
|
+
def get
|
8
|
+
@eff.perform
|
9
|
+
end
|
10
|
+
|
11
|
+
def with &th
|
12
|
+
Ruff.handler.on(@eff){|k| k[Time.now]}.run &th
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# ---
|
17
|
+
@inst = Instance.new
|
18
|
+
|
19
|
+
def get
|
20
|
+
@inst.get
|
21
|
+
end
|
22
|
+
|
23
|
+
def with &th
|
24
|
+
@inst.with &th
|
25
|
+
end
|
26
|
+
|
27
|
+
module_function :get, :with
|
28
|
+
end
|
29
|
+
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Ruff::Standard::Defer
|
2
|
+
class Instance
|
3
|
+
def initialize
|
4
|
+
@eff = Ruff.instance
|
5
|
+
end
|
6
|
+
|
7
|
+
def register &prc
|
8
|
+
@eff.perform prc
|
9
|
+
end
|
10
|
+
|
11
|
+
def with &th
|
12
|
+
procs = []
|
13
|
+
|
14
|
+
Ruff.handler
|
15
|
+
.on(@eff){|k, prc|
|
16
|
+
procs << prc
|
17
|
+
k[]
|
18
|
+
}
|
19
|
+
.to {|_|
|
20
|
+
procs.reverse_each{|prc|
|
21
|
+
prc[]
|
22
|
+
}
|
23
|
+
}
|
24
|
+
.run &th
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# ---
|
29
|
+
@inst = Instance.new
|
30
|
+
|
31
|
+
def register &prc
|
32
|
+
@inst.register &prc
|
33
|
+
end
|
34
|
+
|
35
|
+
def with &th
|
36
|
+
@inst.with &th
|
37
|
+
end
|
38
|
+
|
39
|
+
module_function :register, :with
|
40
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module Ruff::Standard::State
|
2
|
+
class Instance
|
3
|
+
def initialize
|
4
|
+
@get = Ruff.instance
|
5
|
+
@modify = Ruff.instance
|
6
|
+
end
|
7
|
+
|
8
|
+
def get
|
9
|
+
@get.perform
|
10
|
+
end
|
11
|
+
|
12
|
+
def modify &fn
|
13
|
+
@modify.perform fn
|
14
|
+
end
|
15
|
+
|
16
|
+
def put s
|
17
|
+
@modify.perform ->(_) { s }
|
18
|
+
end
|
19
|
+
|
20
|
+
def with_init init, &task
|
21
|
+
state = init
|
22
|
+
|
23
|
+
Ruff.handler
|
24
|
+
.on(@modify){|k, fn|
|
25
|
+
state = fn[state]
|
26
|
+
k[nil]
|
27
|
+
}
|
28
|
+
.on(@get){|k|
|
29
|
+
k[state]
|
30
|
+
}
|
31
|
+
.run &task
|
32
|
+
end
|
33
|
+
|
34
|
+
def with &task
|
35
|
+
with_init(nil, &task)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# ---
|
40
|
+
@inst = Instance.new
|
41
|
+
|
42
|
+
def get
|
43
|
+
@inst.get
|
44
|
+
end
|
45
|
+
|
46
|
+
def modify &fn
|
47
|
+
@inst.modify &fn
|
48
|
+
end
|
49
|
+
|
50
|
+
def put s
|
51
|
+
@inst.put s
|
52
|
+
end
|
53
|
+
|
54
|
+
def with_init init, &task
|
55
|
+
@inst.with_init init, &task
|
56
|
+
end
|
57
|
+
|
58
|
+
def with &task
|
59
|
+
@inst.with &task
|
60
|
+
end
|
61
|
+
|
62
|
+
module_function :get, :put, :modify, :with, :with_init
|
63
|
+
end
|
64
|
+
|
data/lib/ruff/version.rb
CHANGED
data/version.h
CHANGED
@@ -1 +1 @@
|
|
1
|
-
#define RUFF_VERSION "0.0.
|
1
|
+
#define RUFF_VERSION "0.0.8"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nymphium
|
@@ -54,6 +54,13 @@ files:
|
|
54
54
|
- docs/Ruff.html
|
55
55
|
- docs/Ruff/Effect.html
|
56
56
|
- docs/Ruff/Handler.html
|
57
|
+
- docs/Ruff/Standard.html
|
58
|
+
- docs/Ruff/Standard/CurrentTime.html
|
59
|
+
- docs/Ruff/Standard/CurrentTime/Instance.html
|
60
|
+
- docs/Ruff/Standard/Defer.html
|
61
|
+
- docs/Ruff/Standard/Defer/Instance.html
|
62
|
+
- docs/Ruff/Standard/State.html
|
63
|
+
- docs/Ruff/Standard/State/Instance.html
|
57
64
|
- docs/Ruff/Throws.html
|
58
65
|
- docs/Ruff/Throws/Eff.html
|
59
66
|
- docs/Ruff/Throws/Resend.html
|
@@ -75,6 +82,10 @@ files:
|
|
75
82
|
- lib/ruff/effect.rb
|
76
83
|
- lib/ruff/handler.rb
|
77
84
|
- lib/ruff/objects.rb
|
85
|
+
- lib/ruff/standard.rb
|
86
|
+
- lib/ruff/standard/current_time.rb
|
87
|
+
- lib/ruff/standard/defer.rb
|
88
|
+
- lib/ruff/standard/state.rb
|
78
89
|
- lib/ruff/version.cpp.rb
|
79
90
|
- lib/ruff/version.rb
|
80
91
|
- ruff.gemspec
|