dyndoc-ruby-core 1.2.6 → 1.5.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 +5 -5
- data/dyndoc/Tools/julia/Fig.dyn +28 -0
- data/lib/dyndoc-core.rb +5 -1
- data/lib/dyndoc/base/filter/filter_mngr.rb +3 -3
- data/lib/dyndoc/base/filter/server.rb +59 -23
- data/lib/dyndoc/base/scanner.rb +12 -10
- data/lib/dyndoc/base/tmpl/eval.rb +9 -7
- data/lib/dyndoc/base/tmpl/manager.rb +9 -6
- data/lib/dyndoc/base/tmpl/parse_do.rb +62 -33
- data/lib/dyndoc/base/utils.rb +1 -1
- data/share/julia/dynArray.jl +10 -8
- 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 +5 -5
- metadata +68 -67
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 37c974a007f31e6b20f6b08a58059b0bc9fa3985f0c1942d827cc9790e562186
|
4
|
+
data.tar.gz: d1dd34fd772846afa17963341fcb13d54fc66452a1370efe5c146b707cb361b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 50a41020a4dd69fe0d261b416f80e6a8d3a78728599564850f65542fd64f5f1e8f8459d3e567edb3c6306789e70d587674fa822e09a4a55cc1ba73d17c6852c5
|
7
|
+
data.tar.gz: 9f0f7cf7f5f39015606e2c2c14bbfea6fb24b118b9a8222414e1e17bffc9eb1d5ba1b9213658e9055f07a1fb7d80e4ef4084f0756fed008684bfacdeaac9f3b2
|
@@ -0,0 +1,28 @@
|
|
1
|
+
[#rb<]
|
2
|
+
$jlfig=0
|
3
|
+
$jlfig_exts={:png=>".png",:jpeg =>".jpg",:pdf=>".pdf"}
|
4
|
+
[#<]
|
5
|
+
|
6
|
+
{#def]imgJL[#,] jlcode[] [#,] img[]
|
7
|
+
[#,] widthR[15] [#,] heightR[15][#,] unitR[cm][#,] resR[72][#,] optR[]
|
8
|
+
[#,] optTex[scale=0.75]
|
9
|
+
[#,] newR[TRUE]
|
10
|
+
[#=]delete[FALSE]
|
11
|
+
[#?]Dyndoc.tmpl_mngr.fmtOutput == "tex"[#<]
|
12
|
+
{#if]#{0?img}[#=]img[:{File.join($dyn_rsrc,"img","jlfig_:{$jlfig+=1}:{$jlfig_exts[:png]}")}]
|
13
|
+
[#else][#<]
|
14
|
+
{#if]File.dirname(#{=img})=="."[#>]img[:{File.join($dyn_rsrc,"img",#{=img})}][#if}
|
15
|
+
[#if}
|
16
|
+
[#?]Dyndoc.tmpl_mngr.fmtOutput == "html"[#<]
|
17
|
+
{#if]#{0?img}[#=]img[#r{gsub("\\\\","/",tempfile(fileext=".png"))}][#=]delete[TRUE][#if}
|
18
|
+
[#?]#{+?jlcode}[#<]#{jlcode}[#?]end
|
19
|
+
[#R<]require(base64)
|
20
|
+
#print(#{=img})
|
21
|
+
codeimg<-img(#{=img})
|
22
|
+
#print(codeimg)
|
23
|
+
if(#{delete}) unlink(#{=img})
|
24
|
+
[#?]Dyndoc.tmpl_mngr.fmtOutput == "html"
|
25
|
+
[#>][#r{codeimg}]
|
26
|
+
[#?]Dyndoc.tmpl_mngr.fmtOutput == "tex"
|
27
|
+
[#>][\includegraphics[#{optTex}]{#{img}}]
|
28
|
+
[#}
|
data/lib/dyndoc-core.rb
CHANGED
@@ -30,6 +30,9 @@ Settings.define 'cfg_dyn.cmd_pandoc_options', :type => Array, :default => []
|
|
30
30
|
Settings.define 'cfg_dyn.options.pdflatex_nb_pass', :type => Integer, :default => 1
|
31
31
|
Settings.define 'cfg_dyn.options.pdflatex_echo', :type => :boolean, :default => false
|
32
32
|
Settings.define 'cfg_dyn.debug', :type => :boolean, :default => false
|
33
|
+
Settings.define 'cfg_dyn.parse_rescue', :type => :boolean, :default => true
|
34
|
+
Settings.define 'cfg_dyn.parse_rescue_mode', :type => Symbol, :default => :simple
|
35
|
+
Settings.define 'cfg_dyn.ruby_only', :type => :boolean, :default => false
|
33
36
|
|
34
37
|
Settings.define 'cfg_dyn.dyndoc_session', :type => Symbol, :default => :normal #or :interactive
|
35
38
|
|
@@ -44,6 +47,7 @@ Settings.define 'cfg_dyn.devel_mode', :type=> Symbol, :default=> :none
|
|
44
47
|
Settings.define 'cfg_dyn.ruby_debug', :type=> Symbol, :default=> :none
|
45
48
|
|
46
49
|
Settings.define 'cfg_dyn.model_doc', :default => "default"
|
50
|
+
Settings.define 'cfg_dyn.exec_mode', :default => "no"
|
47
51
|
Settings.define 'cfg_dyn.format_doc', :default => :tex
|
48
52
|
Settings.define 'cfg_dyn.pandoc_filter', :default => ""
|
49
53
|
|
@@ -61,7 +65,7 @@ require 'dyndoc/init/config'
|
|
61
65
|
Dyndoc.init_dyndoc_library_path
|
62
66
|
Dyndoc.init_rootDoc
|
63
67
|
Dyndoc.add_logger
|
64
|
-
Dyndoc.logger.info("dyndoc-core loaded!")
|
68
|
+
## Dyndoc.logger.info("dyndoc-core loaded!")
|
65
69
|
## Dyndoc.logger.info(".dyndoc.yml: "+File.join(ENV["HOME"],".dyndoc.yml"))
|
66
70
|
|
67
71
|
CqlsDoc=Dyndoc #for compatibity
|
@@ -395,7 +395,7 @@ module Dyndoc
|
|
395
395
|
when "@"
|
396
396
|
return txt if @mode==:pre
|
397
397
|
res=CallFilter.output(txt,self)
|
398
|
-
when "#","##"
|
398
|
+
when "#","##","%"
|
399
399
|
#p @envir
|
400
400
|
#p @envir.output(txt,@mode,@escape)
|
401
401
|
#p @envir.output(in_type+"{"+txt2+"}",@mode,@escape)
|
@@ -575,7 +575,7 @@ module Dyndoc
|
|
575
575
|
else
|
576
576
|
res.to_s
|
577
577
|
end
|
578
|
-
when "=","@=","#=","##=" ,"none="
|
578
|
+
when "=","@=","#=","%=","##=" ,"none="
|
579
579
|
#puts "convert [=]";p res
|
580
580
|
if res.is_a? Array
|
581
581
|
res.join(",")
|
@@ -587,7 +587,7 @@ module Dyndoc
|
|
587
587
|
"%Q{"+res2+"}"
|
588
588
|
end
|
589
589
|
end
|
590
|
-
when "","@","#","##","none","#F"
|
590
|
+
when "","@","#","%","##","none","#F"
|
591
591
|
if res.is_a? Array
|
592
592
|
res.join(",")
|
593
593
|
else
|
@@ -93,7 +93,9 @@ module Dyndoc
|
|
93
93
|
end
|
94
94
|
|
95
95
|
rescue SyntaxError
|
96
|
-
|
96
|
+
|
97
|
+
$outRbError="RbServer syntax error in: "+code
|
98
|
+
puts $outRbError
|
97
99
|
raise SystemError if Dyndoc.cfg_dyn[:dyndoc_mode]==:normal and Dyndoc.cfg_dyn[:ruby_debug]!=:none
|
98
100
|
if Dyndoc.cfg_dyn[:dyndoc_mode]!=:normal
|
99
101
|
$dyn_logger.write("\nERROR Ruby Syntax:\n"+code+"\n")
|
@@ -104,10 +106,30 @@ module Dyndoc
|
|
104
106
|
out
|
105
107
|
end
|
106
108
|
|
109
|
+
def RbServer.redirect
|
110
|
+
if block_given?
|
111
|
+
require 'stringio'
|
112
|
+
begin
|
113
|
+
# redirect output to StringIO objects
|
114
|
+
oldstdout,oldstderr=$stdout, $stderr
|
115
|
+
stdout, stderr = StringIO.new, StringIO.new
|
116
|
+
$stdout, $stderr = stdout, stderr
|
117
|
+
yield
|
118
|
+
ensure
|
119
|
+
# restore normal output
|
120
|
+
$stdout, $stderr = oldstdout,oldstderr
|
121
|
+
end
|
122
|
+
return {stdout: stdout.string, stderr: stderr.string}
|
123
|
+
else
|
124
|
+
return {stdout: "", stderr: ""}
|
125
|
+
end
|
126
|
+
|
127
|
+
end
|
128
|
+
|
107
129
|
def RbServer.capture(code,rbEnvir=nil)
|
108
130
|
|
109
131
|
require 'stringio'
|
110
|
-
|
132
|
+
require 'ostruct'
|
111
133
|
|
112
134
|
begin
|
113
135
|
# redirect output to StringIO objects
|
@@ -273,10 +295,10 @@ module Dyndoc
|
|
273
295
|
short[0]=short[0].to_i
|
274
296
|
short[2]=short[2].to_i
|
275
297
|
## Dyndoc.warn "short",[short,txt]
|
276
|
-
(0...short[0]).each{|i| txtout << txt[i].force_encoding("utf-8") << "\n"}
|
298
|
+
(0...short[0]).each{|i| txtout << (txt[i] ? txt[i].force_encoding("utf-8") : "") << "\n"}
|
277
299
|
txtout << short[1] << "\n"
|
278
300
|
le = txt.length
|
279
|
-
((le-short[2])...le).each{|i| txtout << txt[i].force_encoding("utf-8") << "\n"}
|
301
|
+
((le-short[2])...le).each{|i| txtout << (txt[i] ? txt[i].force_encoding("utf-8") : "") << "\n"}
|
280
302
|
else
|
281
303
|
txt=txt.map{|e| e.force_encoding("utf-8")}
|
282
304
|
txtout << txt.join("\n")
|
@@ -808,59 +830,73 @@ module Dyndoc
|
|
808
830
|
@@initVerb=nil
|
809
831
|
|
810
832
|
def JLServer.initVerb
|
811
|
-
Julia << "include(
|
833
|
+
Julia << "Base.include(@__MODULE__,\""+File.join(Dyndoc.cfg_dir[:gem_path],"share","julia","dyndoc.jl")+"\")"
|
834
|
+
Julia << "push!(Libdl.DL_LOAD_PATH,\"/usr/lib\");push!(Libdl.DL_LOAD_PATH,\"/usr/local/lib\")"
|
812
835
|
@@initVerb=true
|
813
836
|
end
|
814
837
|
|
815
838
|
def JLServer.inputsAndOutputs(code,hash=true)
|
816
839
|
JLServer.initVerb unless @@initVerb
|
817
|
-
|
818
|
-
|
819
|
-
|
840
|
+
Dyndoc.logger.info("JLServer.inputsAndOutputs: "+code.strip)
|
841
|
+
res=(Julia << 'capture_output_julia('+code.strip.inspect.gsub("$","\\$")+')')
|
842
|
+
Dyndoc.logger.info("JLServer.inputsAndOutputs:"+res.inspect)
|
843
|
+
res.map!{|input,output,output2,error,error2|
|
820
844
|
{:input=>input,:output=>output,:output2=>output2,:error=>error,:error2=>error2}
|
821
845
|
} if res and hash
|
822
846
|
res
|
823
847
|
end
|
824
848
|
|
825
849
|
def JLServer.eval(code)
|
826
|
-
Julia.eval(code)
|
850
|
+
Julia.eval("capture_output_julia("+code.strip.inspect.gsub("$","\\$")+")")
|
827
851
|
end
|
828
852
|
|
829
853
|
def JLServer.output(code,opts={})
|
830
|
-
opts={:print=>true}.merge(opts)
|
854
|
+
#opts={:print=>true}.merge(opts)
|
831
855
|
## Dyndoc.warn "jlserv",code+"|"+Julia.eval(code,:print=>opts[:print]).to_s
|
832
|
-
Julia.eval(code,:print=>opts[:print]).to_s
|
856
|
+
#Julia.eval(code,:print=>opts[:print]).to_s
|
857
|
+
|
858
|
+
res=JLServer.inputsAndOutputs(code,false)
|
859
|
+
Dyndoc.warn "jlserv.output",[code,res]
|
860
|
+
return "" unless res
|
861
|
+
res=res.map{|input,output,output2,error,error2|
|
862
|
+
#Dyndoc.warn "output",output
|
863
|
+
output
|
864
|
+
}
|
865
|
+
res.length==0 ? "" : res[-1]
|
833
866
|
end
|
834
867
|
|
835
868
|
def JLServer.outputs(code,opts={}) #may have more than one lines in code
|
836
869
|
## Dyndoc.warn "JLServer.outputs opts",opts
|
837
|
-
##
|
870
|
+
##
|
871
|
+
Dyndoc.warn "JLServer code",code
|
872
|
+
res=JLServer.inputsAndOutputs(code,false)
|
838
873
|
if opts[:block]
|
839
|
-
res=JLServer.inputsAndOutputs(code,false)
|
840
874
|
return "" unless res
|
841
875
|
res.map{|input,output,output2,error,error2|
|
842
876
|
## Dyndoc.warn "output2",output2
|
843
|
-
|
877
|
+
output
|
844
878
|
}.join("\n")
|
845
|
-
else
|
846
|
-
JLServer.eval(code)
|
847
879
|
end
|
848
880
|
end
|
849
881
|
|
850
882
|
def JLServer.echo(code,prompt="julia> ",tab=2)
|
851
883
|
out=""
|
852
884
|
res=JLServer.inputsAndOutputs(code)
|
853
|
-
##
|
885
|
+
##
|
886
|
+
Dyndoc.warn "JLServer",res
|
887
|
+
return "Error when executing: "+code unless res
|
854
888
|
res.each do |cmd|
|
855
889
|
## Dyndoc.warn "input",cmd
|
856
890
|
out << prompt+ cmd[:input].split("\n").each_with_index.map{|e,i| i==0 ? e : " "*(prompt.length)+e}.join("\n").gsub(/\t/," "*tab)
|
857
|
-
out << "\n"
|
891
|
+
out << "\n" unless cmd[:input].strip[-1]==";"
|
858
892
|
## Dyndoc.warn "output1",out
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
893
|
+
if cmd[:error]==""
|
894
|
+
out << ((cmd[:output]=="nothing" or (cmd[:input].strip)[-1]==";") ? "" : cmd[:output])
|
895
|
+
out << ((cmd[:output2]=="nothing" or (cmd[:input].strip)[-1]==";") ? "" : cmd[:output2]) #cmd[:output2]
|
896
|
+
else
|
897
|
+
out << cmd[:error]
|
898
|
+
end
|
899
|
+
out << (cmd[:output]=="nothing" ? "" : "\n")
|
864
900
|
## Dyndoc.warn "output3",out
|
865
901
|
end
|
866
902
|
out
|
data/lib/dyndoc/base/scanner.rb
CHANGED
@@ -219,7 +219,7 @@ module Dyndoc
|
|
219
219
|
#IMPORTANT: process has to have as the second argument e[:type] corresponding to the inside_type and as the third argument res[:type] corresponding to the out_type
|
220
220
|
##Dyndoc.warn "scan",txt2,e[:type],res[:type],(filter ? filter.process(txt2,e[:type],res[:type]) : txt2)
|
221
221
|
txt2=((filter and !(txt2=~/\[HTML\]/)) ? filter.process(txt2,e[:type],res[:type]) : txt2)
|
222
|
-
##p txt2
|
222
|
+
##p [:txt2,txt2]
|
223
223
|
txt << txt2
|
224
224
|
end
|
225
225
|
#puts "txt";p txt
|
@@ -232,7 +232,7 @@ module Dyndoc
|
|
232
232
|
class CallScanner < Scanner
|
233
233
|
|
234
234
|
@@type[:call]={
|
235
|
-
:start=>/\\?(
|
235
|
+
:start=>/\\?(?:\#|\%|\#\#|@|#F|#R|#r|\:R|\:r|#Rb|#rb|\:|\:Rb|\:rb|\:jl|#jl)?\{/,
|
236
236
|
:stop=> /\\?\}/,
|
237
237
|
:mode=>{:start=>-1,:stop=>0,:length=>1},
|
238
238
|
:escape_start=>['\{'], #doivent être parsable dans start
|
@@ -257,11 +257,11 @@ module Dyndoc
|
|
257
257
|
}
|
258
258
|
=end
|
259
259
|
@@type[:dtag] = {
|
260
|
-
:start=>'\{[
|
261
|
-
:stop=> '\[[
|
262
|
-
:atom=>{:match=>/(\{[
|
260
|
+
:start=>'\{[\#\@\%]([\w\:\|-]*[<>]?[=?!><]?(\.\w*)?)\]',
|
261
|
+
:stop=> '\[[\#\@\%]([\w\:\|-]*[<>]?[=?!><]?)\}',
|
262
|
+
:atom=>{:match=>/(\{[\#\@\%][\w\:\|]*)([\#\@\%]\})/,:replace=>{2=>"][#}"}},
|
263
263
|
:block=> '\]', #no longer |
|
264
|
-
:keyword=>['\[[
|
264
|
+
:keyword=>['\[[\#\%\@]','\]'],
|
265
265
|
:mode=>{:start=>0,:stop=>-1,:length=>1}
|
266
266
|
}
|
267
267
|
|
@@ -275,7 +275,7 @@ module Dyndoc
|
|
275
275
|
init_tag(@tag_type) if [:dtag].include? @tag_type
|
276
276
|
end
|
277
277
|
|
278
|
-
@@tagblck_set=[:<<,:<,:do,:>>,:>,:">!",:out,:nl,:"\\n",:"r<",:"R<",:"rb<",:"m<",:"M<",:"jl<",:"r>>",:"R>>",:rverb,:"rb>>",:rbverb,:"jl>>",:jlverb,:rout,:"r>",:"R>",:"rb>",:"m>",:"M>",:"jl>",:"_<",:"_>",:"__>",:"html>",:"tex>",:"txtl>",:"ttm>",:"md>",:"adoc>",:tag,:"??",:"?",:yield,:"=",:"-",:+,:"%",:"tex=",:"tex+",:"md=",:"md+",:"adoc=",:"adoc+",:"html=",:"html+",:"rb=",:"rb+",:"R=",:"R+",:"jl=",:"jl+",:"txtl=",:"txtl+"]
|
278
|
+
@@tagblck_set=[:<<,:<,:do,:>>,:>,:">!",:out,:nl,:"\\n",:"r<",:"R<",:"rb<",:"m<",:"M<",:"jl<",:"sh<",:"r>>",:"R>>",:rverb,:"rb>>",:rbverb,:"jl>>",:jlverb,:rout,:"r>",:"R>",:"rb>",:"m>",:"M>",:"jl>",:"_<",:"_>",:"__>",:"html>",:"tex>",:"txtl>",:"ttm>",:"md>",:"adoc>",:tag,:"??",:"?",:yield,:"=",:"-",:+,:"%",:"tex=",:"tex+",:"md=",:"md+",:"adoc=",:"adoc+",:"html=",:"html+",:"rb=",:"rb+",:"R=",:"R+",:"jl=",:"jl+",:"txtl=",:"txtl+"]
|
279
279
|
#Rmk: when a symbol is included in another one, you have to place it before! Ex: :>> before :> and also :<< before :<
|
280
280
|
|
281
281
|
@@tagblck_dyndoc_set = [:main,:content,:before,:after,:require,:helpers,:preamble,:postamble,:style,:title,:path,:first,:last,:default,:cfg]
|
@@ -302,6 +302,7 @@ module Dyndoc
|
|
302
302
|
:"rb<" => [:blck, :"rb<"],
|
303
303
|
:"R<" => [:blck, :"R<"],
|
304
304
|
:"jl<" => [:blck, :"jl<"],
|
305
|
+
:"sh<" => [:blck, :"sh<"],
|
305
306
|
:"r>>" => [:blck, :"r>>"],
|
306
307
|
:"R>>" => [:blck, :"r>>"],
|
307
308
|
:"*<" => [:blck, :"*<"],
|
@@ -366,7 +367,7 @@ module Dyndoc
|
|
366
367
|
},
|
367
368
|
:mode_arg=>:next_block,
|
368
369
|
:tag_code=>[:code,:<,:>,:<<,:txt], #used for arg mode!
|
369
|
-
:arg=>[:if,:unless,:elsif,:for,:case,:def,:func,:meth,:new,:super,:call,:input,:when,:break,:set,:style,:keys,:"?",:"rb<",:"r<",:"R<",:"m<",:"M<",:"jl<"],
|
370
|
+
:arg=>[:if,:unless,:elsif,:for,:case,:def,:func,:meth,:new,:super,:call,:input,:when,:break,:set,:style,:keys,:"?",:"rb<",:"r<",:"R<",:"m<",:"M<",:"jl<",:"sh<"],
|
370
371
|
:blck=>{
|
371
372
|
:instr=>[:document,:if,:unless,:case,:loop,:set,:tag,:keys,:rverb,:rbverb,:jlverb,:for],
|
372
373
|
:keyword=>{
|
@@ -620,11 +621,12 @@ module Dyndoc
|
|
620
621
|
end
|
621
622
|
##Dyndoc.warn "to scan", @scan.string[@scan.pos..-1]
|
622
623
|
##Dyndoc.warn "tag_reg",[blocktag_reg,tag_reg]
|
624
|
+
##p ["tag_reg",[blocktag_reg,tag_reg]]
|
623
625
|
end
|
624
626
|
if (tag_keyword and (@scan.check_until(blocktag_reg))) #or (!@named_tags.empty? and check_until_for_named_tags)
|
625
627
|
check_until_for_named_tags unless @named_tags.empty?
|
626
628
|
key=@scan[2]
|
627
|
-
##Dyndoc.warn "keyword",[key,@scan[0],@scan[1],@scan[2]]
|
629
|
+
##Dyndoc.warn p ["keyword",[key.scan(tag_reg),key.scan(tag_reg)[-1],key,@scan[0],@scan[1],@scan[2]]]
|
628
630
|
##Dyndoc.warn "pre_math,tag_selected",[@scan.pre_match,@tag_selected] if key=="[#tag]"
|
629
631
|
res << find_text(from,key,inside)
|
630
632
|
@is_arg=false if @is_arg
|
@@ -634,7 +636,7 @@ module Dyndoc
|
|
634
636
|
res << (key=@tag_selected)
|
635
637
|
else
|
636
638
|
#key=tag_reg.match(key)[0]
|
637
|
-
key= key.scan(tag_reg)[
|
639
|
+
key= key.scan(tag_reg)[-1]
|
638
640
|
##Dyndoc.warn "key(AP)",key if key=="tag"
|
639
641
|
res << (key=key.to_sym) if key and !key.empty?
|
640
642
|
end
|
@@ -201,13 +201,15 @@ module Dyndoc
|
|
201
201
|
#p input
|
202
202
|
=end
|
203
203
|
# REPLACEMENT of ABOVE!
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
204
|
+
unless @libs.keys.include? tmpl
|
205
|
+
if tmpl and File.exists? tmpl
|
206
|
+
input=Dyndoc.read_content_file(tmpl)
|
207
|
+
@libs[tmpl]=input
|
208
|
+
filter.envir["_FILENAME_"]=tmpl.dup #register name of template!!!
|
209
|
+
filter.envir["_FILENAME_ORIG_"]=tmpl_orig.dup #register name of template!!!
|
210
|
+
filter.envir["_PWD_"]=File.dirname(tmpl) #register name of template!!!
|
211
|
+
txt=parse(@libs[tmpl],filter,tags)
|
212
|
+
end
|
211
213
|
end
|
212
214
|
}
|
213
215
|
end
|
@@ -89,16 +89,17 @@ module Dyndoc
|
|
89
89
|
# init rb4jl stuff
|
90
90
|
# since inside ruby, no need Ruby.start and Ruby.stop like in rb4R.
|
91
91
|
# sort of equivalent of JLServer.init_filter (but not yet defined)!
|
92
|
-
Julia << "include(
|
92
|
+
#Julia << "Base.include(@__MODULE__,\"ruby.jl\")"
|
93
|
+
Julia << "Base.include(@__MODULE__,\""+File.join(Dyndoc.cfg_dir[:gem_path],"share","julia","ruby.jl")+ "\")"
|
93
94
|
Dyndoc.logger.info "initJulia: ruby.jl"
|
94
|
-
Julia << "include(
|
95
|
+
Julia << "Base.include(@__MODULE__,\""+File.join(Dyndoc.cfg_dir[:gem_path],"share","julia","dynArray.jl")+ "\")"
|
95
96
|
Dyndoc.logger.info "initJulia: dynArray.jl"
|
96
97
|
#-| To debug ruby.jl and dynArray.jl => uncomment below and commnt above
|
97
98
|
# Julia << "include(\""+File.expand_path("~/Github/dyndoc/share/julia/ruby.jl")+"\")"
|
98
99
|
# Julia << "include(\""+File.expand_path("~/Github/dyndoc/share/julia/dynArray.jl")+"\")"
|
99
|
-
Julia << "using Dyndoc"
|
100
|
+
Julia << "using Main.Dyndoc"
|
100
101
|
Dyndoc.logger.info "initJulia: using Dyndoc"
|
101
|
-
Julia << "Ruby.alive(true)"
|
102
|
+
Julia << "Dyndoc.Ruby.alive(true)"
|
102
103
|
#Julia << "global const _dynArray=DynArray()"
|
103
104
|
Dyndoc.logger.info "Julia initialized inside dyndoc!"
|
104
105
|
|
@@ -120,8 +121,10 @@ module Dyndoc
|
|
120
121
|
@cfg[:part_tag][0]=@cfg[:part_tag][0][1..-1] if !(@cfg[:part_tag].empty?) and (@partTag_add= (@cfg[:part_tag][0][0,1]=="+"))
|
121
122
|
=end
|
122
123
|
## default system root appended
|
123
|
-
|
124
|
-
|
124
|
+
unless Dyndoc.cfg_dyn[:ruby_only]
|
125
|
+
TemplateManager.initR if Dyndoc.cfg_dyn[:langs].include? :R
|
126
|
+
TemplateManager.initJulia if Dyndoc.cfg_dyn[:langs].include? :jl
|
127
|
+
end
|
125
128
|
rbenvir_init(binding)
|
126
129
|
@rEnvir=["Global"]
|
127
130
|
@envirs={}
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
|
+
require 'securerandom'
|
4
|
+
|
3
5
|
## TODO: .force_encoding("utf-8") needs to be added (see server.rb)
|
4
6
|
module Dyndoc
|
5
7
|
|
@@ -26,10 +28,11 @@ module Dyndoc
|
|
26
28
|
class TemplateManager
|
27
29
|
|
28
30
|
@@depth=0
|
31
|
+
@@outError=""
|
29
32
|
|
30
33
|
@@cmd=["newBlck","input","require","def","func","meth","new","super","blck","do","if","for","case", "loop","r","renv","rverb","rbverb","jlverb","rout","rb","var","set","hide","format","txt","code","<","<<",">","eval","ifndef","tags","keys","opt","document","yield","get","part","style"]
|
31
34
|
## Alias
|
32
|
-
@@cmdAlias={"unless"=>"if","out"=>"do","r<"=>"r","R<"=>"R","rb<"=>"rb","r>"=>"r","R>"=>"R","rb>"=>"rb","m<"=>"m","M<"=>"m","m>"=>"m","M>"=>"m","jl>"=>"jl","jl<"=>"jl","<"=>"txt","<<"=>"txt",">"=>"txt","code"=>"txt","dyn"=>"eval","r>>"=>"rverb","R>>"=>"rverb","rout"=>"rverb","rb>>" => "rbverb","jl>>" => "jlverb","saved"=>"blck","blckAnyTag"=>"blck"}
|
35
|
+
@@cmdAlias={"unless"=>"if","out"=>"do","r<"=>"r","R<"=>"R","rb<"=>"rb","r>"=>"r","R>"=>"R","rb>"=>"rb","m<"=>"m","M<"=>"m","m>"=>"m","M>"=>"m","jl>"=>"jl","jl<"=>"jl","sh<"=>"sh","<"=>"txt","<<"=>"txt",">"=>"txt","code"=>"txt","dyn"=>"eval","r>>"=>"rverb","R>>"=>"rverb","rout"=>"rverb","rb>>" => "rbverb","jl>>" => "jlverb","saved"=>"blck","blckAnyTag"=>"blck"}
|
33
36
|
@@cmd += @@cmdAlias.keys
|
34
37
|
|
35
38
|
def add_dtag(dtag,cmdAlias=nil)
|
@@ -87,7 +90,7 @@ module Dyndoc
|
|
87
90
|
@vars,varsOld=filterLoc.envir,@vars
|
88
91
|
Dyndoc.vars=@vars
|
89
92
|
@filter=filterLoc unless @filter ##root filter
|
90
|
-
out=""
|
93
|
+
out,$outError ="",""
|
91
94
|
#p texblock
|
92
95
|
texblock.map{|b|
|
93
96
|
#p b
|
@@ -96,33 +99,49 @@ module Dyndoc
|
|
96
99
|
cmd=@@cmdAlias[cmd] if @@cmdAlias.keys.include? cmd
|
97
100
|
#Dyndoc.warn "parse:cmd,b",[cmd,b]
|
98
101
|
@@depth+=1
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
102
|
+
## To deactivate, put it inside ~/.dyndoc.yml
|
103
|
+
if Dyndoc.cfg_dyn[:parse_rescue]
|
104
|
+
begin
|
105
|
+
## Dyndoc.warn "cmd",[cmd,b]
|
106
|
+
method("do_"+cmd).call(out,b,filterLoc)
|
107
|
+
## Dyndoc.warn [:out,out] if cmd=="eval"
|
108
|
+
rescue
|
109
|
+
$outError << "=> Leaving block depth #{@@depth}: " << "\n"
|
110
|
+
codeText = b.inspect
|
111
|
+
##Dyndoc.warn "codeText",codeText
|
112
|
+
nbChar=(Dyndoc.cfg_dyn[:nbChar_error]) ? Dyndoc.cfg_dyn[:nbChar_error] : 80
|
113
|
+
if codeText.length > nbChar
|
114
|
+
codeText=codeText[0..((nbChar*2/3).to_int)]+" ...... "+codeText[(-(nbChar/3).to_int)..-1]
|
115
|
+
end
|
116
|
+
$outError << codeText << "\n"
|
117
|
+
if $outRbError && !$outRbError.empty?
|
118
|
+
$outError << $outRbError << "\n"
|
119
|
+
$outRbError = ""
|
120
|
+
end
|
121
|
+
if @@depth==1
|
122
|
+
$outError << "=> Exiting abnormally!</code>" << "\n"
|
123
|
+
@@outError << "<pre style='background-color: #EBECE4;'><code>"+$outError+"</code></pre>" << "\n"
|
124
|
+
puts "@@outError: \n"+@@outError
|
125
|
+
#raise SystemExit
|
126
|
+
out << @@outError
|
127
|
+
@@outError=""
|
128
|
+
else
|
129
|
+
@@outError << "<pre style='background-color: #EBECE4;'><code>Dyn Runtime Error\n"+$outError+"</code></pre>"
|
130
|
+
$outError=""
|
131
|
+
if Dyndoc.cfg_dyn[:parse_rescue_mode]==:simple
|
132
|
+
out << @@outError
|
133
|
+
@@outError=""
|
134
|
+
else
|
135
|
+
raise RuntimeError, "Dyn Runtime Error"
|
136
|
+
end
|
137
|
+
end
|
138
|
+
Dyndoc.warn "out #{@@depth} :",$outError
|
139
|
+
|
140
|
+
ensure
|
141
|
+
@@depth -= 1
|
120
142
|
end
|
121
|
-
|
122
|
-
|
123
|
-
end
|
124
|
-
###TO temporarily AVOID RESCUE MODE:
|
125
|
-
###
|
143
|
+
else
|
144
|
+
method("do_"+cmd).call(out,b,filterLoc)
|
126
145
|
end
|
127
146
|
}
|
128
147
|
##restore old partTag and vars
|
@@ -404,7 +423,7 @@ p [vars,b2]
|
|
404
423
|
if @@newBlcks.keys.include? @blckDepth[-1]
|
405
424
|
@blckName ||= []
|
406
425
|
tmp=blck[1][1].strip
|
407
|
-
@blckName << (tmp.empty? ?
|
426
|
+
@blckName << (tmp.empty? ? SecureRandom.uuid.strip : tmp)
|
408
427
|
#puts "blckNAME";p @blckName
|
409
428
|
end
|
410
429
|
|
@@ -482,7 +501,7 @@ p [vars,b2]
|
|
482
501
|
when :do,:<
|
483
502
|
i,*b2=next_block(blck,i)
|
484
503
|
parse(b2,filter) if cond_tag and cond
|
485
|
-
when :"r<",:"rb<",:"R<",:"m<",:"M<",:"jl<"
|
504
|
+
when :"r<",:"rb<",:"R<",:"m<",:"M<",:"jl<",:"sh<"
|
486
505
|
# if current_block_tag==:"jl<"
|
487
506
|
# ##p "iciiiii"
|
488
507
|
# end
|
@@ -498,7 +517,7 @@ p [vars,b2]
|
|
498
517
|
b2=[code.unshift(newblck)]
|
499
518
|
##puts "r<;rb<";p b2
|
500
519
|
filter.outType=":"+(blck[i].to_s)[0...-1]
|
501
|
-
#
|
520
|
+
#Dyndoc.warn "rb,jl,R block",filter.outType
|
502
521
|
parse(b2,filter)
|
503
522
|
filter.outType=nil
|
504
523
|
end
|
@@ -1056,7 +1075,7 @@ p [vars,b2]
|
|
1056
1075
|
when :binding
|
1057
1076
|
i,*b2=next_block(blck,i)
|
1058
1077
|
rbEnvir=b2[0][1].strip
|
1059
|
-
when :do,:<,:out,:>,:"r<",:"rb<",:"r>",:"R>",:"R<",:"r>>",:rverb,:"rb>>",:rbverb,:"jl>>",:jlverb,:"rb>",:"?",:tag,:"??",:yield,:>>,:"=",:"+",:<<,:"txtl>",:"md>",:"adoc>",:"ttm>",:"html>",:"tex>",:"_>"
|
1078
|
+
when :do,:<,:out,:>,:"r<",:"rb<",:"r>",:"R>",:"R<",:"r>>",:rverb,:"rb>>",:rbverb,:"jl>>",:jlverb,:"jl>",:"jl<",:"sh<",:"rb>",:"?",:tag,:"??",:yield,:>>,:"=",:"+",:<<,:"txtl>",:"md>",:"adoc>",:"ttm>",:"html>",:"tex>",:"_>"
|
1060
1079
|
code = blck[i..-1].unshift(:blck)
|
1061
1080
|
when :","
|
1062
1081
|
i,*b2=next_block(blck,i)
|
@@ -2138,6 +2157,7 @@ p call
|
|
2138
2157
|
def do_jl(tex,blck,filter)
|
2139
2158
|
return unless Dyndoc.cfg_dyn[:langs].include? :jl
|
2140
2159
|
## jlBlock stuff
|
2160
|
+
## Dyndoc.warn "do_jl",blck
|
2141
2161
|
as_default_tmpl_mngr! if
|
2142
2162
|
dynBlock=dynBlock_in_doLangBlock?(blck)
|
2143
2163
|
if dynBlock
|
@@ -2161,7 +2181,7 @@ p call
|
|
2161
2181
|
as_default_tmpl_mngr!
|
2162
2182
|
tex << JLServer.outputs(code,:block => true)
|
2163
2183
|
else
|
2164
|
-
JLServer.
|
2184
|
+
JLServer.outputs(code)
|
2165
2185
|
end
|
2166
2186
|
## revert all the stuff
|
2167
2187
|
if dynBlock
|
@@ -2171,6 +2191,15 @@ p call
|
|
2171
2191
|
filter.outType=nil
|
2172
2192
|
end
|
2173
2193
|
|
2194
|
+
def do_sh(tex,blck,filter)
|
2195
|
+
#Dyndoc.warn "do_sh: blck ";p blck[1..-1]
|
2196
|
+
filter.outType="none"
|
2197
|
+
code=parse(blck[1..-1],filter)
|
2198
|
+
%x[ #{code} ]
|
2199
|
+
#Dyndoc.warn "do_sh: code ";p code
|
2200
|
+
filter.outType=nil
|
2201
|
+
end
|
2202
|
+
|
2174
2203
|
def do_m(tex,blck,filter)
|
2175
2204
|
newblck=blck[0]
|
2176
2205
|
# Dyndoc.warn "do_m";p blck
|