iruby 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES +5 -0
- data/lib/iruby/display.rb +3 -0
- data/lib/iruby/kernel.rb +65 -4
- data/lib/iruby/utils.rb +8 -0
- data/lib/iruby/version.rb +1 -1
- data/test/iruby/kernel_test.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84f8ef4d7c7ae64831b901c85aa2e978bd07847c5707899bc82f7f3eed17a825
|
4
|
+
data.tar.gz: 2a2b12b2d7da7571a41286b3de58813c8f3173136bc47cd63516254682f76421
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '079c7183d157d4ca8177ca0025c4a8cfa95bb7cfa1497bfc2d65c9f4b38e00d92d4597ed54557c4ea03cfe56c93ed44768fa17b20fe29957078d8f4074e3f1c3'
|
7
|
+
data.tar.gz: 23a5d31658720706a3e5b2a9db90747e135a5ef473a8eadf554e6ceaa5eab1c0f035ba17161d1c10bcbeb952908b409c4d51144b23c566a15839c3d1574e7da9
|
data/CHANGES
CHANGED
data/lib/iruby/display.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
module IRuby
|
2
2
|
module Display
|
3
3
|
class << self
|
4
|
+
# @private
|
4
5
|
def convert(obj, options)
|
5
6
|
Representation.new(obj, options)
|
6
7
|
end
|
7
8
|
|
9
|
+
# @private
|
8
10
|
def display(obj, options = {})
|
9
11
|
obj = convert(obj, options)
|
10
12
|
options = obj.options
|
@@ -37,6 +39,7 @@ module IRuby
|
|
37
39
|
data
|
38
40
|
end
|
39
41
|
|
42
|
+
# @private
|
40
43
|
def clear_output(wait = false)
|
41
44
|
IRuby::Kernel.instance.session.send(:publish, :clear_output, wait: wait)
|
42
45
|
end
|
data/lib/iruby/kernel.rb
CHANGED
@@ -8,10 +8,26 @@ module IRuby
|
|
8
8
|
@events = EventManager.new([:initialized])
|
9
9
|
|
10
10
|
class << self
|
11
|
+
# Return the event manager defined in the `IRuby::Kernel` class.
|
12
|
+
# This event manager can handle the following event:
|
13
|
+
#
|
14
|
+
# - `initialized`: The event occurred after the initialization of
|
15
|
+
# a `IRuby::Kernel` instance is finished
|
16
|
+
#
|
17
|
+
# @example Registering initialized event
|
18
|
+
# IRuby::Kernel.events.register(:initialized) do |result|
|
19
|
+
# STDERR.puts "IRuby kernel has been initialized"
|
20
|
+
# end
|
21
|
+
#
|
22
|
+
# @see IRuby::EventManager
|
23
|
+
# @see IRuby::Kernel#events
|
11
24
|
attr_reader :events
|
25
|
+
|
26
|
+
# Returns the singleton kernel instance
|
12
27
|
attr_accessor :instance
|
13
28
|
end
|
14
29
|
|
30
|
+
# Returns a session object
|
15
31
|
attr_reader :session
|
16
32
|
|
17
33
|
EVENTS = [
|
@@ -40,8 +56,35 @@ module IRuby
|
|
40
56
|
self.class.events.trigger(:initialized, self)
|
41
57
|
end
|
42
58
|
|
59
|
+
# Returns the event manager defined in a `IRuby::Kernel` instance.
|
60
|
+
# This event manager can handle the following events:
|
61
|
+
#
|
62
|
+
# - `pre_execute`: The event occurred before running the code
|
63
|
+
#
|
64
|
+
# - `pre_run_cell`: The event occurred before running the code and
|
65
|
+
# if the code execution is not silent
|
66
|
+
#
|
67
|
+
# - `post_execute`: The event occurred after running the code
|
68
|
+
#
|
69
|
+
# - `post_run_cell`: The event occurred after running the code and
|
70
|
+
# if the code execution is not silent
|
71
|
+
#
|
72
|
+
# The callback functions of `pre_run_cell` event must take one argument
|
73
|
+
# to get an `ExecutionInfo` object.
|
74
|
+
# The callback functions of `post_run_cell` event must take one argument
|
75
|
+
# to get the result of the code execution.
|
76
|
+
#
|
77
|
+
# @example Registering post_run_cell event
|
78
|
+
# IRuby::Kernel.instance.events.register(:post_run_cell) do |result|
|
79
|
+
# STDERR.puts "The result of the last execution: %p" % result
|
80
|
+
# end
|
81
|
+
#
|
82
|
+
# @see IRuby::EventManager
|
83
|
+
# @see IRuby::ExecutionInfo
|
84
|
+
# @see IRuby::Kernel.events
|
43
85
|
attr_reader :events
|
44
86
|
|
87
|
+
# @private
|
45
88
|
def create_backend
|
46
89
|
PryBackend.new
|
47
90
|
rescue Exception => e
|
@@ -49,6 +92,7 @@ module IRuby
|
|
49
92
|
PlainBackend.new
|
50
93
|
end
|
51
94
|
|
95
|
+
# @private
|
52
96
|
def run
|
53
97
|
send_status :starting
|
54
98
|
while @running
|
@@ -56,6 +100,7 @@ module IRuby
|
|
56
100
|
end
|
57
101
|
end
|
58
102
|
|
103
|
+
# @private
|
59
104
|
def dispatch
|
60
105
|
msg = @session.recv(:reply)
|
61
106
|
IRuby.logger.debug "Kernel#dispatch: msg = #{msg}"
|
@@ -72,6 +117,7 @@ module IRuby
|
|
72
117
|
@session.send(:publish, :error, error_content(e))
|
73
118
|
end
|
74
119
|
|
120
|
+
# @private
|
75
121
|
def kernel_info_request(msg)
|
76
122
|
@session.send(:reply, :kernel_info_reply,
|
77
123
|
protocol_version: '5.0',
|
@@ -93,11 +139,13 @@ module IRuby
|
|
93
139
|
status: :ok)
|
94
140
|
end
|
95
141
|
|
142
|
+
# @private
|
96
143
|
def send_status(status)
|
97
144
|
IRuby.logger.debug "Send status: #{status}"
|
98
145
|
@session.send(:publish, :status, execution_state: status)
|
99
146
|
end
|
100
147
|
|
148
|
+
# @private
|
101
149
|
def execute_request(msg)
|
102
150
|
code = msg[:content]['code']
|
103
151
|
store_history = msg[:content]['store_history']
|
@@ -134,16 +182,20 @@ module IRuby
|
|
134
182
|
content[:execution_count] = @execution_count
|
135
183
|
end
|
136
184
|
|
185
|
+
unless result.nil? || silent
|
186
|
+
@session.send(:publish, :execute_result,
|
187
|
+
data: Display.display(result),
|
188
|
+
metadata: {},
|
189
|
+
execution_count: @execution_count)
|
190
|
+
end
|
191
|
+
|
137
192
|
events.trigger(:post_execute)
|
138
193
|
events.trigger(:post_run_cell, result) unless silent
|
139
194
|
|
140
195
|
@session.send(:reply, :execute_reply, content)
|
141
|
-
@session.send(:publish, :execute_result,
|
142
|
-
data: Display.display(result),
|
143
|
-
metadata: {},
|
144
|
-
execution_count: @execution_count) unless result.nil? || msg[:content]['silent']
|
145
196
|
end
|
146
197
|
|
198
|
+
# @private
|
147
199
|
def error_content(e)
|
148
200
|
rindex = e.backtrace.rindex{|line| line.start_with?(@backend.eval_path)} || -1
|
149
201
|
backtrace = SyntaxError === e && rindex == -1 ? [] : e.backtrace[0..rindex]
|
@@ -152,12 +204,14 @@ module IRuby
|
|
152
204
|
traceback: ["#{RED}#{e.class}#{RESET}: #{e.message}", *backtrace] }
|
153
205
|
end
|
154
206
|
|
207
|
+
# @private
|
155
208
|
def is_complete_request(msg)
|
156
209
|
# FIXME: the code completeness should be judged by using ripper or other Ruby parser
|
157
210
|
@session.send(:reply, :is_complete_reply,
|
158
211
|
status: :unknown)
|
159
212
|
end
|
160
213
|
|
214
|
+
# @private
|
161
215
|
def complete_request(msg)
|
162
216
|
# HACK for #26, only complete last line
|
163
217
|
code = msg[:content]['code']
|
@@ -173,36 +227,43 @@ module IRuby
|
|
173
227
|
status: :ok)
|
174
228
|
end
|
175
229
|
|
230
|
+
# @private
|
176
231
|
def connect_request(msg)
|
177
232
|
@session.send(:reply, :connect_reply, Hash[%w(shell_port iopub_port stdin_port hb_port).map {|k| [k, @config[k]] }])
|
178
233
|
end
|
179
234
|
|
235
|
+
# @private
|
180
236
|
def shutdown_request(msg)
|
181
237
|
@session.send(:reply, :shutdown_reply, msg[:content])
|
182
238
|
@running = false
|
183
239
|
end
|
184
240
|
|
241
|
+
# @private
|
185
242
|
def history_request(msg)
|
186
243
|
# we will just send back empty history for now, pending clarification
|
187
244
|
# as requested in ipython/ipython#3806
|
188
245
|
@session.send(:reply, :history_reply, history: [])
|
189
246
|
end
|
190
247
|
|
248
|
+
# @private
|
191
249
|
def inspect_request(msg)
|
192
250
|
# not yet implemented. See (#119).
|
193
251
|
@session.send(:reply, :inspect_reply, status: :ok, found: false, data: {}, metadata: {})
|
194
252
|
end
|
195
253
|
|
254
|
+
# @private
|
196
255
|
def comm_open(msg)
|
197
256
|
comm_id = msg[:content]['comm_id']
|
198
257
|
target_name = msg[:content]['target_name']
|
199
258
|
Comm.comm[comm_id] = Comm.target[target_name].new(target_name, comm_id)
|
200
259
|
end
|
201
260
|
|
261
|
+
# @private
|
202
262
|
def comm_msg(msg)
|
203
263
|
Comm.comm[msg[:content]['comm_id']].handle_msg(msg[:content]['data'])
|
204
264
|
end
|
205
265
|
|
266
|
+
# @private
|
206
267
|
def comm_close(msg)
|
207
268
|
comm_id = msg[:content]['comm_id']
|
208
269
|
Comm.comm[comm_id].handle_close(msg[:content]['data'])
|
data/lib/iruby/utils.rb
CHANGED
@@ -4,37 +4,45 @@ module IRuby
|
|
4
4
|
Display.convert(object, options)
|
5
5
|
end
|
6
6
|
|
7
|
+
# Display the object
|
7
8
|
def display(obj, options = {})
|
8
9
|
Kernel.instance.session.send(:publish, :display_data,
|
9
10
|
data: Display.display(obj, options),
|
10
11
|
metadata: {}) unless obj.nil?
|
11
12
|
end
|
12
13
|
|
14
|
+
# Clear the output area
|
13
15
|
def clear_output(wait=false)
|
14
16
|
Display.clear_output(wait)
|
15
17
|
end
|
16
18
|
|
19
|
+
# Format the given object into HTML table
|
17
20
|
def table(s, **options)
|
18
21
|
html(HTML.table(s, options))
|
19
22
|
end
|
20
23
|
|
24
|
+
# Treat the given string as LaTeX text
|
21
25
|
def latex(s)
|
22
26
|
convert(s, mime: 'text/latex')
|
23
27
|
end
|
24
28
|
alias tex latex
|
25
29
|
|
30
|
+
# Format the given string of TeX equation into LaTeX text
|
26
31
|
def math(s)
|
27
32
|
convert("$$#{s}$$", mime: 'text/latex')
|
28
33
|
end
|
29
34
|
|
35
|
+
# Treat the given string as HTML
|
30
36
|
def html(s)
|
31
37
|
convert(s, mime: 'text/html')
|
32
38
|
end
|
33
39
|
|
40
|
+
# Treat the given string as JavaScript code
|
34
41
|
def javascript(s)
|
35
42
|
convert(s, mime: 'application/javascript')
|
36
43
|
end
|
37
44
|
|
45
|
+
# Treat the given string as SVG text
|
38
46
|
def svg(s)
|
39
47
|
convert(s, mime: 'image/svg+xml')
|
40
48
|
end
|
data/lib/iruby/version.rb
CHANGED
data/test/iruby/kernel_test.rb
CHANGED
@@ -70,7 +70,7 @@ module IRubyTest
|
|
70
70
|
@kernel.execute_request(msg)
|
71
71
|
|
72
72
|
assert_equal({
|
73
|
-
msg_types: [ "execute_input", "
|
73
|
+
msg_types: [ "execute_input", "execute_result", "execute_reply" ],
|
74
74
|
execute_reply: {
|
75
75
|
status: "ok",
|
76
76
|
user_expressions: {},
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Mendler
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-05-
|
12
|
+
date: 2021-05-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: data_uri
|