dyndoc-ruby-core 1.2.5 → 1.4.8
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 +5 -5
- data/dyndoc/Tools/julia/Fig.dyn +28 -0
- data/lib/dyndoc-core.rb +7 -0
- data/lib/dyndoc/base/filter/server.rb +61 -25
- data/lib/dyndoc/base/scanner.rb +4 -3
- data/lib/dyndoc/base/tmpl/eval.rb +9 -7
- data/lib/dyndoc/base/tmpl/manager.rb +17 -7
- data/lib/dyndoc/base/tmpl/parse_do.rb +62 -33
- data/lib/dyndoc/init/config.rb +9 -1
- data/share/julia/dynArray.jl +20 -19
- data/share/julia/dyndoc.jl +51 -82
- data/share/julia/dyndocOLD.jl +192 -0
- data/share/julia/dynreport.jl +127 -0
- data/share/julia/ruby.jl +6 -6
- metadata +68 -67
data/lib/dyndoc/init/config.rb
CHANGED
@@ -19,7 +19,7 @@ module Dyndoc
|
|
19
19
|
}
|
20
20
|
|
21
21
|
require 'logger'
|
22
|
-
@@dyn_logger =
|
22
|
+
@@dyn_logger = nil
|
23
23
|
|
24
24
|
def Dyndoc.cfg_dir
|
25
25
|
@@cfg_dir
|
@@ -29,10 +29,18 @@ module Dyndoc
|
|
29
29
|
Settings[:cfg_dyn]
|
30
30
|
end
|
31
31
|
|
32
|
+
def Dyndoc.add_logger
|
33
|
+
@@dyn_logger = Logger.new(@@cfg_dir[:log_file], 7, 1048576)
|
34
|
+
end
|
35
|
+
|
32
36
|
def Dyndoc.logger
|
33
37
|
@@dyn_logger
|
34
38
|
end
|
35
39
|
|
40
|
+
def Dyndoc.logger_info(txt)
|
41
|
+
@@dyn_logger.info(txt)
|
42
|
+
end
|
43
|
+
|
36
44
|
@@dyn_block={}
|
37
45
|
|
38
46
|
def Dyndoc.dyn_block
|
data/share/julia/dynArray.jl
CHANGED
@@ -1,21 +1,24 @@
|
|
1
|
-
|
1
|
+
|
2
2
|
|
3
3
|
module Dyndoc
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
|
6
|
+
using Main.Ruby
|
7
|
+
|
8
|
+
import Base.setindex!,Base.getindex,Base.IO,Base.show #,Base.showarray
|
9
|
+
import Main.Ruby.start,Main.Ruby.stop,Main.Ruby.run,Main.Ruby.alive
|
7
10
|
|
8
11
|
export DynVector,DynArray,getindex,setindex!,show,Vector,sync,getkey
|
9
12
|
|
10
13
|
# this is just a wrapper of Vector type with update of all connected vectors
|
11
|
-
# when change on the vector occurs
|
14
|
+
# when change on the vector occurs
|
12
15
|
|
13
16
|
|
14
|
-
|
17
|
+
mutable struct DynVector
|
15
18
|
ary::Vector
|
16
|
-
key::
|
19
|
+
key::String
|
17
20
|
|
18
|
-
DynVector(a::Vector,k::
|
21
|
+
#DynVector(a::Vector,k::String)=(x=new();x.ary=a;x.key=k;x)
|
19
22
|
end
|
20
23
|
|
21
24
|
function getindex(dynvect::DynVector,i::Integer)
|
@@ -26,35 +29,34 @@ end
|
|
26
29
|
function setindex!(dynvect::DynVector,value,i::Integer)
|
27
30
|
dynvect.ary[i]=value
|
28
31
|
## println("inisde vect:",Ruby.alive())
|
29
|
-
if Ruby.alive()
|
30
|
-
Ruby.run("Dyndoc::Vector[\""*dynvect.key*"\"].sync(:jl)")
|
32
|
+
if Ruby.alive()
|
33
|
+
Ruby.run("Dyndoc::Vector[\""*dynvect.key*"\"].sync(:jl)")
|
31
34
|
end
|
32
35
|
end
|
33
36
|
|
34
|
-
show(io::IO,dynvect::DynVector)=
|
37
|
+
show(io::IO,dynvect::DynVector)=show(io,dynvect.ary)
|
35
38
|
|
36
39
|
# gather all the julia vectors connected to dyndoc.
|
37
40
|
|
38
|
-
|
41
|
+
mutable struct DynArray
|
39
42
|
vars::Dict
|
40
|
-
|
41
43
|
DynArray()=(x=new();x.vars=Dict();x)
|
42
44
|
end
|
43
45
|
|
44
46
|
global const Vec=DynArray()
|
45
47
|
|
46
|
-
function getindex(dynary::DynArray,key::
|
48
|
+
function getindex(dynary::DynArray,key::String)
|
47
49
|
#println("getindex(" * key * ")->todo")
|
48
50
|
#if Ruby.alive()
|
49
51
|
#println("getindex(" * key * ")->to sync")
|
50
|
-
#Ruby.run("Dyndoc::Vector[\""*key*"\"].sync_to(:jl)")
|
52
|
+
#Ruby.run("Dyndoc::Vector[\""*key*"\"].sync_to(:jl)")
|
51
53
|
#end
|
52
54
|
#println("getindex(" * key * ")->done")
|
53
55
|
dynary.vars[key]
|
54
56
|
end
|
55
57
|
getindex(dynary::DynArray,key::Symbol)=getindex(dynary,string(key))
|
56
58
|
|
57
|
-
function setindex!(dynary::DynArray,value,key::
|
59
|
+
function setindex!(dynary::DynArray,value,key::String)
|
58
60
|
#println("key:" * key)
|
59
61
|
#println(keys(dynary.vars))
|
60
62
|
if(haskey(dynary.vars,key))
|
@@ -65,7 +67,7 @@ function setindex!(dynary::DynArray,value,key::ASCIIString)
|
|
65
67
|
end
|
66
68
|
|
67
69
|
## println("inside array:",Ruby.alive())
|
68
|
-
|
70
|
+
|
69
71
|
if Ruby.alive()
|
70
72
|
Ruby.run("Dyndoc::Vector[\""*key*"\"].sync(:jl)")
|
71
73
|
end
|
@@ -73,13 +75,13 @@ end
|
|
73
75
|
setindex!(dynary::DynArray,value,key::Symbol)=setindex!(dynary,value,string(key))
|
74
76
|
|
75
77
|
|
76
|
-
sync(dynary::DynArray,key::
|
78
|
+
sync(dynary::DynArray,key::String)= if Ruby.alive() Ruby.run("Dyndoc::Vector[\""*key*"\"].sync(:jl)") end
|
77
79
|
|
78
80
|
show(io::IO,dynary::DynArray)=show(io,dynary.vars)
|
79
81
|
|
80
82
|
# NO MORE KEY WITH THE FORM "<name>@<ruby id object>"
|
81
83
|
# function getkey(dynary::DynArray,k::Symbol)
|
82
|
-
# for k2 in keys(dynary.vars)
|
84
|
+
# for k2 in keys(dynary.vars)
|
83
85
|
# if split(k2,"@")[1] == string(k)
|
84
86
|
# return k2
|
85
87
|
# end
|
@@ -90,4 +92,3 @@ show(io::IO,dynary::DynArray)=show(io,dynary.vars)
|
|
90
92
|
# setindex!(dynary::DynArray,value,key::Symbol)=setindex!(dynary,value,getkey(dynary,key))
|
91
93
|
|
92
94
|
end
|
93
|
-
|
data/share/julia/dyndoc.jl
CHANGED
@@ -1,87 +1,55 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
# res=Any[] #Dict{AbstractString,Any}()
|
7
|
-
# for l=split(cmd,"\n")
|
8
|
-
# #println("l => ",l)
|
9
|
-
# push!(cmd0,l)
|
10
|
-
# pcmd0=Base.parse_input_line(join(cmd0,"\n"))
|
11
|
-
# #print(join(cmd0,"\n")*":");println(pcmd0)
|
12
|
-
# add = typeof(pcmd0)==Expr && pcmd0.head == :continue
|
13
|
-
# if !add
|
14
|
-
# #print("ici:")
|
15
|
-
# #println(Base.eval(pcmd0))
|
16
|
-
# push!(res,(join(cmd0,"\n"),eval(pcmd0)))
|
17
|
-
# cmd0=AbstractString[]
|
18
|
-
# end
|
19
|
-
# #println(res)
|
20
|
-
# end
|
21
|
-
# res
|
22
|
-
# end
|
23
|
-
|
24
|
-
module DyndocSandbox
|
25
|
-
importall Ruby
|
26
|
-
importall Dyndoc
|
1
|
+
module Dyndoc2Sandbox
|
2
|
+
import Main.Ruby.run,Main.Ruby.alive
|
3
|
+
import Main.Dyndoc.DynVector,Main.Dyndoc.DynArray,Main.Dyndoc.getindex,Main.Dyndoc.setindex!,Main.Dyndoc.show,Main.Dyndoc.Vector,Main.Dyndoc.sync,Main.Dyndoc.getkey
|
4
|
+
using InteractiveUtils
|
5
|
+
end
|
27
6
|
|
28
|
-
# Replace OUTPUT_STREAM references so we can capture output.
|
29
|
-
OUTPUT_STREAM = IOBuffer()
|
30
|
-
print(x) = Base.print(OUTPUT_STREAM, x)
|
31
|
-
println(x) = Base.println(OUTPUT_STREAM, x)
|
32
7
|
|
33
|
-
|
34
|
-
|
35
|
-
emit(mime, data) = push!(MIME_OUTPUT, (mime, data))
|
8
|
+
function replace_dyndoc2sandbox(txt)
|
9
|
+
replace(replace(txt,"Main.Dyndoc2Sandbox." => ""),"Main.Dyndoc2Sandbox" => "Main")
|
36
10
|
end
|
37
11
|
|
38
|
-
function
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
12
|
+
function echo_repl_julia(res)
|
13
|
+
# buf = IOBuffer();
|
14
|
+
# td = TextDisplay(buf);
|
15
|
+
# display(td, res);
|
16
|
+
# takebuf_string(buf)
|
17
|
+
#println(typeof(res))
|
18
|
+
replace_dyndoc2sandbox(repr("text/plain",res))
|
44
19
|
end
|
45
20
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
21
|
+
## Rmk: The process is based on what is done in weave.jl (src/run.jl)
|
22
|
+
getstdout() = stdout #Base.STDOUT
|
23
|
+
function capture_output_expr(expr)
|
24
|
+
#oldSTDOUT = STDOUT
|
25
|
+
oldSTDOUT = getstdout()
|
26
|
+
out = nothing
|
27
|
+
obj = nothing
|
28
|
+
rw, wr = redirect_stdout()
|
29
|
+
reader = @async read(rw, String) # @async readstring(rw)
|
30
|
+
try
|
31
|
+
obj = Core.eval(Dyndoc2Sandbox, expr)
|
32
|
+
obj != nothing && display(obj)
|
33
|
+
#catch E
|
34
|
+
# throw_errors && throw(E)
|
35
|
+
# display(E)
|
36
|
+
# @warn("ERROR: $(typeof(E)) occurred, including output in Weaved document")
|
37
|
+
|
38
|
+
finally
|
39
|
+
redirect_stdout(oldSTDOUT)
|
40
|
+
close(wr)
|
41
|
+
out = fetch(reader) #wait(reader)
|
42
|
+
close(rw)
|
43
|
+
end
|
44
|
+
return (obj, out)
|
52
45
|
end
|
53
46
|
|
54
|
-
|
55
|
-
# module DyndocSandbox
|
56
|
-
# # Copied from Gadfly.jl/src/weave.jl
|
57
|
-
# # Replace OUTPUT_STREAM references so we can capture output.
|
58
|
-
# OUTPUT_STREAM = IOString()
|
59
|
-
# print(x) = Base.print(OUTPUT_STREAM, x)
|
60
|
-
# println(x) = Base.println(OUTPUT_STREAM, x)
|
61
|
-
|
62
|
-
# function eval(expr)
|
63
|
-
# result = try
|
64
|
-
# Base.eval(DyndocSandbox, expr)
|
65
|
-
# seek(DyndocSandbox.OUTPUT_STREAM, 0)
|
66
|
-
# output = takebuf_string(DyndocSandbox.OUTPUT_STREAM)
|
67
|
-
# truncate(DyndocSandbox.OUTPUT_STREAM, 0)
|
68
|
-
# output
|
69
|
-
# catch e
|
70
|
-
# io = IOBuffer()
|
71
|
-
# print(io, "ERROR: ")
|
72
|
-
# Base.error_show(io, e)
|
73
|
-
# tmp = bytestring(io)
|
74
|
-
# close(io)
|
75
|
-
# tmp
|
76
|
-
# end
|
77
|
-
# result
|
78
|
-
# end
|
79
|
-
# end
|
80
|
-
|
81
|
-
function capture_julia(cmd::AbstractString)
|
47
|
+
function capture_output_julia(cmd::AbstractString)
|
82
48
|
add,cmd0=true,AbstractString[]
|
83
49
|
res=Any[] #Dict{AbstractString,Any}()
|
84
50
|
#println(cmd)
|
51
|
+
#cmd=replace(cmd,r"\$","\$")
|
52
|
+
|
85
53
|
for l=split(cmd,"\n")
|
86
54
|
#println("l => ",l)
|
87
55
|
push!(cmd0,l)
|
@@ -91,17 +59,18 @@ function capture_julia(cmd::AbstractString)
|
|
91
59
|
if !add
|
92
60
|
#print("ici:")
|
93
61
|
#println(Base.eval(pcmd0))
|
94
|
-
result,error = "",""
|
62
|
+
result,error,out = "","",""
|
95
63
|
try
|
96
|
-
result=
|
64
|
+
result,out=capture_output_expr(pcmd0)
|
97
65
|
catch e
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
66
|
+
#io = IOBuffer()
|
67
|
+
#print(io, "ERROR: ")
|
68
|
+
#Base.error_show(io, e)
|
69
|
+
error = "ERROR: $(sprint(showerror,e))"
|
70
|
+
#close(io)
|
71
|
+
end
|
72
|
+
println(l)
|
73
|
+
push!(res,(join(cmd0,"\n"), echo_repl_julia(result),replace_dyndoc2sandbox(out),replace_dyndoc2sandbox(error),""))
|
105
74
|
cmd0=AbstractString[]
|
106
75
|
end
|
107
76
|
#println(res)
|
@@ -0,0 +1,192 @@
|
|
1
|
+
#cmd="a=1\n(a)\nfor i in 1:3\nprintln(i)\nend"
|
2
|
+
|
3
|
+
# # Unused! See capture_julia
|
4
|
+
# function capture_cmd(cmd::AbstractString)
|
5
|
+
# add,cmd0=true,AbstractString[]
|
6
|
+
# res=Any[] #Dict{AbstractString,Any}()
|
7
|
+
# for l=split(cmd,"\n")
|
8
|
+
# #println("l => ",l)
|
9
|
+
# push!(cmd0,l)
|
10
|
+
# pcmd0=Base.parse_input_line(join(cmd0,"\n"))
|
11
|
+
# #print(join(cmd0,"\n")*":");println(pcmd0)
|
12
|
+
# add = typeof(pcmd0)==Expr && pcmd0.head == :continue
|
13
|
+
# if !add
|
14
|
+
# #print("ici:")
|
15
|
+
# #println(Base.eval(pcmd0))
|
16
|
+
# push!(res,(join(cmd0,"\n"),eval(pcmd0)))
|
17
|
+
# cmd0=AbstractString[]
|
18
|
+
# end
|
19
|
+
# #println(res)
|
20
|
+
# end
|
21
|
+
# res
|
22
|
+
# end
|
23
|
+
|
24
|
+
module DyndocSandbox
|
25
|
+
import Main.Ruby.start,Main.Ruby.stop,Main.Ruby.run,Main.Ruby.alive
|
26
|
+
import Main.Dyndoc.DynVector,Main.Dyndoc.DynArray,Main.Dyndoc.getindex,Main.Dyndoc.setindex!,Main.Dyndoc.show,Main.Dyndoc.Vector,Main.Dyndoc.sync,Main.Dyndoc.getkey
|
27
|
+
|
28
|
+
# Replace OUTPUT_STREAM references so we can capture output.
|
29
|
+
OUTPUT_STREAM = IOBuffer()
|
30
|
+
print(x) = Base.print(OUTPUT_STREAM, x)
|
31
|
+
println(x) = Base.println(OUTPUT_STREAM, x)
|
32
|
+
|
33
|
+
# Output
|
34
|
+
MIME_OUTPUT = Array(Tuple, 0)
|
35
|
+
emit(mime, data) = push!(MIME_OUTPUT, (mime, data))
|
36
|
+
end
|
37
|
+
|
38
|
+
function get_stdout_iobuffer()
|
39
|
+
#seek(DyndocSandbox.OUTPUT_STREAM, 0)
|
40
|
+
#jl4rb_out =
|
41
|
+
takebuf_string(DyndocSandbox.OUTPUT_STREAM)
|
42
|
+
#truncate(DyndocSandbox.OUTPUT_STREAM, 0)
|
43
|
+
#jl4rb_out
|
44
|
+
end
|
45
|
+
|
46
|
+
function get_stderr_iobuffer()
|
47
|
+
#jl4rb_out = takebuf_string(STDERR.buffer)
|
48
|
+
#jl4rb_out
|
49
|
+
## THIS FAILS WHEN DYNDOC DAEMONIZED SO AUTOMATIC EMPTY RESULT for now
|
50
|
+
## MAYBE TO DELETE SOON!
|
51
|
+
""
|
52
|
+
end
|
53
|
+
|
54
|
+
# export weave
|
55
|
+
# module DyndocSandbox
|
56
|
+
# # Copied from Gadfly.jl/src/weave.jl
|
57
|
+
# # Replace OUTPUT_STREAM references so we can capture output.
|
58
|
+
# OUTPUT_STREAM = IOString()
|
59
|
+
# print(x) = Base.print(OUTPUT_STREAM, x)
|
60
|
+
# println(x) = Base.println(OUTPUT_STREAM, x)
|
61
|
+
|
62
|
+
# function eval(expr)
|
63
|
+
# result = try
|
64
|
+
# Base.eval(DyndocSandbox, expr)
|
65
|
+
# seek(DyndocSandbox.OUTPUT_STREAM, 0)
|
66
|
+
# output = takebuf_string(DyndocSandbox.OUTPUT_STREAM)
|
67
|
+
# truncate(DyndocSandbox.OUTPUT_STREAM, 0)
|
68
|
+
# output
|
69
|
+
# catch e
|
70
|
+
# io = IOBuffer()
|
71
|
+
# print(io, "ERROR: ")
|
72
|
+
# Base.error_show(io, e)
|
73
|
+
# tmp = bytestring(io)
|
74
|
+
# close(io)
|
75
|
+
# tmp
|
76
|
+
# end
|
77
|
+
# result
|
78
|
+
# end
|
79
|
+
# end
|
80
|
+
|
81
|
+
|
82
|
+
function capture_julia(cmd::AbstractString)
|
83
|
+
add,cmd0=true,AbstractString[]
|
84
|
+
res=Any[] #Dict{AbstractString,Any}()
|
85
|
+
#println(cmd)
|
86
|
+
#cmd=replace(cmd,r"\$","\$")
|
87
|
+
# for standard redirection
|
88
|
+
##OUT: (outRead, outWrite) = redirect_stdout()
|
89
|
+
for l=split(cmd,"\n")
|
90
|
+
#println("l => ",l)
|
91
|
+
push!(cmd0,l)
|
92
|
+
pcmd0=Base.parse_input_line(join(cmd0,"\n"))
|
93
|
+
#print(join(cmd0,"\n")*":");println(pcmd0)
|
94
|
+
add = typeof(pcmd0)==Expr && pcmd0.head == :incomplete
|
95
|
+
if !add
|
96
|
+
#print("ici:")
|
97
|
+
#println(Base.eval(pcmd0))
|
98
|
+
result,error = "",""
|
99
|
+
try
|
100
|
+
result=eval(DyndocSandbox, pcmd0)
|
101
|
+
catch e
|
102
|
+
#io = IOBuffer()
|
103
|
+
#print(io, "ERROR: ")
|
104
|
+
#Base.error_show(io, e)
|
105
|
+
error = "Error: $(string(e))"
|
106
|
+
#close(io)
|
107
|
+
end
|
108
|
+
|
109
|
+
##OUT: data_out = readavailable(outRead)
|
110
|
+
|
111
|
+
##OUT: push!(res,(join(cmd0,"\n"),echo_repl_julia(result),get_stdout_iobuffer(),data_out,error,get_stderr_iobuffer()))
|
112
|
+
push!(res,(join(cmd0,"\n"),echo_repl_julia(result),get_stdout_iobuffer(),error,get_stderr_iobuffer()))
|
113
|
+
cmd0=AbstractString[]
|
114
|
+
end
|
115
|
+
#println(res)
|
116
|
+
end
|
117
|
+
##OUT: close(outWrite);close(outRead)
|
118
|
+
res
|
119
|
+
end
|
120
|
+
|
121
|
+
|
122
|
+
module Dyndoc2Sandbox
|
123
|
+
import Main.Ruby.run,Main.Ruby.alive
|
124
|
+
import Main.Dyndoc.DynVector,Main.Dyndoc.DynArray,Main.Dyndoc.getindex,Main.Dyndoc.setindex!,Main.Dyndoc.show,Main.Dyndoc.Vector,Main.Dyndoc.sync,Main.Dyndoc.getkey
|
125
|
+
end
|
126
|
+
|
127
|
+
function echo_repl_julia(res)
|
128
|
+
buf = IOBuffer();
|
129
|
+
td = TextDisplay(buf);
|
130
|
+
display(td, res);
|
131
|
+
takebuf_string(buf)
|
132
|
+
end
|
133
|
+
|
134
|
+
## Rmk: The process is based on what is done in weave.jl (src/run.jl)
|
135
|
+
getstdout() = stdout #Base.STDOUT
|
136
|
+
function capture_output_expr(expr)
|
137
|
+
#oldSTDOUT = STDOUT
|
138
|
+
oldSTDOUT = getstdout()
|
139
|
+
out = nothing
|
140
|
+
obj = nothing
|
141
|
+
rw, wr = redirect_stdout()
|
142
|
+
reader = @async read(rw, String) # @async readstring(rw)
|
143
|
+
try
|
144
|
+
obj = eval(Dyndoc2Sandbox, expr)
|
145
|
+
obj != nothing && display(obj)
|
146
|
+
catch E
|
147
|
+
throw_errors && throw(E)
|
148
|
+
display(E)
|
149
|
+
@warn("ERROR: $(typeof(E)) occurred, including output in Weaved document")
|
150
|
+
|
151
|
+
finally
|
152
|
+
redirect_stdout(oldSTDOUT)
|
153
|
+
close(wr)
|
154
|
+
out = wait(reader)
|
155
|
+
close(rw)
|
156
|
+
end
|
157
|
+
return (obj, out)
|
158
|
+
end
|
159
|
+
|
160
|
+
function capture_output_julia(cmd::AbstractString)
|
161
|
+
add,cmd0=true,AbstractString[]
|
162
|
+
res=Any[] #Dict{AbstractString,Any}()
|
163
|
+
#println(cmd)
|
164
|
+
#cmd=replace(cmd,r"\$","\$")
|
165
|
+
|
166
|
+
for l=split(cmd,"\n")
|
167
|
+
#println("l => ",l)
|
168
|
+
push!(cmd0,l)
|
169
|
+
pcmd0=Base.parse_input_line(join(cmd0,"\n"))
|
170
|
+
#print(join(cmd0,"\n")*":");println(pcmd0)
|
171
|
+
add = typeof(pcmd0)==Expr && pcmd0.head == :incomplete
|
172
|
+
if !add
|
173
|
+
#print("ici:")
|
174
|
+
#println(Base.eval(pcmd0))
|
175
|
+
result,error,out = "","",""
|
176
|
+
try
|
177
|
+
result,out=capture_output_expr(pcmd0)
|
178
|
+
catch e
|
179
|
+
#io = IOBuffer()
|
180
|
+
#print(io, "ERROR: ")
|
181
|
+
#Base.error_show(io, e)
|
182
|
+
error = "Error: $(string(e))"
|
183
|
+
#close(io)
|
184
|
+
end
|
185
|
+
|
186
|
+
push!(res,(join(cmd0,"\n"),echo_repl_julia(result),out,error,""))
|
187
|
+
cmd0=AbstractString[]
|
188
|
+
end
|
189
|
+
#println(res)
|
190
|
+
end
|
191
|
+
res
|
192
|
+
end
|