dyndoc-ruby-core 1.0.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.
Files changed (138) hide show
  1. checksums.yaml +7 -0
  2. data/dyndoc/.DS_Store +0 -0
  3. data/dyndoc/Dyn/.postload +1 -0
  4. data/dyndoc/Dyn/.preload +1 -0
  5. data/dyndoc/Dyn/After.dyn +3 -0
  6. data/dyndoc/Dyn/Base.dyn +18 -0
  7. data/dyndoc/Dyn/Minimum.dyn +20 -0
  8. data/dyndoc/Model/Html/DefaultPost_html.dyn +5 -0
  9. data/dyndoc/Model/Html/DefaultPre_html.dyn +15 -0
  10. data/dyndoc/Model/Odt/DefaultPost_content.xml +3 -0
  11. data/dyndoc/Model/Odt/DefaultPost_tmpl_content.xml +3 -0
  12. data/dyndoc/Model/Odt/DefaultPre_content.xml +8 -0
  13. data/dyndoc/Model/Odt/DefaultPre_tmpl_content.xml +8 -0
  14. data/dyndoc/Model/Tex/ContentPost_tmpl.tex +1 -0
  15. data/dyndoc/Model/Tex/ContentPre_tmpl.tex +6 -0
  16. data/dyndoc/Model/Tex/DefaultPost_tmpl.tex +73 -0
  17. data/dyndoc/Model/Tex/DefaultPre_tmpl.tex +16 -0
  18. data/dyndoc/Model/Ttm/DefaultPost_tmpl.ttm +3 -0
  19. data/dyndoc/Model/Ttm/DefaultPre_tmpl.ttm +16 -0
  20. data/dyndoc/Std/Array.dyn +96 -0
  21. data/dyndoc/Std/Composer.dyn +38 -0
  22. data/dyndoc/Std/DevTag.dyn +101 -0
  23. data/dyndoc/Std/DynVar.dyn +23 -0
  24. data/dyndoc/Std/File.dyn +55 -0
  25. data/dyndoc/Std/Git.dyn +34 -0
  26. data/dyndoc/Std/List.dyn +46 -0
  27. data/dyndoc/Std/OOP.dyn +32 -0
  28. data/dyndoc/Std/Signal.dyn +18 -0
  29. data/dyndoc/Std/String.dyn +22 -0
  30. data/dyndoc/Std/Styles.dyn +1 -0
  31. data/dyndoc/Std/Test.dyn +282 -0
  32. data/dyndoc/Std/Utils.dyn +42 -0
  33. data/dyndoc/Std/Verb.dyn +5 -0
  34. data/dyndoc/Style/Notation/Math.dyn +7 -0
  35. data/dyndoc/Style/Notation/Stat/Classic.dyn +8 -0
  36. data/dyndoc/Style/Notation/Stat/Cqls.dyn +44 -0
  37. data/dyndoc/Style/Text/Std.dyn +5 -0
  38. data/dyndoc/Style/Text/StdAlias.dyn +3 -0
  39. data/dyndoc/Style/Text/StdTex.dyn +17 -0
  40. data/dyndoc/Style/Text/Txt.dyn +1 -0
  41. data/dyndoc/Tex/.postload +1 -0
  42. data/dyndoc/Tex/.preload +1 -0
  43. data/dyndoc/Tex/10pt_tmpl.tex +1 -0
  44. data/dyndoc/Tex/11pt_tmpl.tex +1 -0
  45. data/dyndoc/Tex/12pt_tmpl.tex +1 -0
  46. data/dyndoc/Tex/Article_tmpl.tex +1 -0
  47. data/dyndoc/Tex/Beamer.dyn_tex +35 -0
  48. data/dyndoc/Tex/BeamerHandout_tmpl.tex +2 -0
  49. data/dyndoc/Tex/Book_tmpl.tex +1 -0
  50. data/dyndoc/Tex/DefaultFirst_tmpl.tex +1 -0
  51. data/dyndoc/Tex/DefaultLast_tmpl.tex +8 -0
  52. data/dyndoc/Tex/Default_tmpl.tex +9 -0
  53. data/dyndoc/Tex/First_tmpl.tex +8 -0
  54. data/dyndoc/Tex/Fr_tmpl.tex +17 -0
  55. data/dyndoc/Tex/Header_tmpl.tex +3 -0
  56. data/dyndoc/Tex/InclGraph_tmpl.tex +19 -0
  57. data/dyndoc/Tex/InclSpatProc_tmpl.tex +70 -0
  58. data/dyndoc/Tex/InclSumMI_tmpl.tex +4 -0
  59. data/dyndoc/Tex/LargeA4_tmpl.tex +5 -0
  60. data/dyndoc/Tex/Last_tmpl.tex +1 -0
  61. data/dyndoc/Tex/Option_tmpl.tex +8 -0
  62. data/dyndoc/Tex/Png_tmpl.tex +1 -0
  63. data/dyndoc/Tex/RefCite2_tmpl.tex +16 -0
  64. data/dyndoc/Tex/RefCite_tmpl.tex +16 -0
  65. data/dyndoc/Tex/Report_tmpl.tex +1 -0
  66. data/dyndoc/Tex/Theorem_tmpl.tex +14 -0
  67. data/dyndoc/Tools/.DS_Store +0 -0
  68. data/dyndoc/Tools/Atom.dyn/index.dyn +42 -0
  69. data/dyndoc/Tools/AtomDyndocker.dyn/index.dyn +43 -0
  70. data/dyndoc/Tools/R/Fig.dyn +144 -0
  71. data/dyndoc/Tools/R/Tools.dyn +344 -0
  72. data/dyndoc/Tools/Tex/Beamer.dyn +204 -0
  73. data/dyndoc/Tools/Tex/BeamerSlide.dyn_tex +199 -0
  74. data/dyndoc/Tools/Tex/Pgf.dyn +115 -0
  75. data/dyndoc/Tools/Tex/Table.dyn +278 -0
  76. data/dyndoc/Tools/Tex/Tools.dyn +37 -0
  77. data/dyndoc/Tools/Tex/Verb.dyn +77 -0
  78. data/dyndoc/Tools/Web/.DS_Store +0 -0
  79. data/dyndoc/Tools/Web/Ace.dyn +54 -0
  80. data/dyndoc/Tools/Web/Code.dyn +129 -0
  81. data/dyndoc/Tools/Web/DHtmlX.dyn +39 -0
  82. data/dyndoc/Tools/Web/DataTable.dyn_html +354 -0
  83. data/dyndoc/Tools/Web/Html.dyn +286 -0
  84. data/dyndoc/Tools/Web/Html/JQuery.dyn +123 -0
  85. data/dyndoc/Tools/Web/Html/Styles.dyn +4 -0
  86. data/dyndoc/Tools/Web/JQueryTools.dyn +87 -0
  87. data/dyndoc/Tools/Web/Layout.dyn +86 -0
  88. data/dyndoc/Tools/Web/Layout/CQLS.dyn +6 -0
  89. data/dyndoc/Tools/Web/Layout/LJK.dyn +41 -0
  90. data/dyndoc/Tools/Web/TabBar.dyn +37 -0
  91. data/dyndoc/Tools/Web/Ttm.dyn +20 -0
  92. data/dyndoc/Tools/Web/Txtl.dyn +14 -0
  93. data/lib/dyndoc-core.rb +59 -0
  94. data/lib/dyndoc/base/envir.rb +541 -0
  95. data/lib/dyndoc/base/filter/call.rb +127 -0
  96. data/lib/dyndoc/base/filter/filter_mngr.rb +637 -0
  97. data/lib/dyndoc/base/filter/server.rb +882 -0
  98. data/lib/dyndoc/base/filters.rb +3 -0
  99. data/lib/dyndoc/base/helpers.rb +9 -0
  100. data/lib/dyndoc/base/helpers/core.rb +32 -0
  101. data/lib/dyndoc/base/helpers/parser.rb +188 -0
  102. data/lib/dyndoc/base/scanner.rb +886 -0
  103. data/lib/dyndoc/base/tags.rb +4 -0
  104. data/lib/dyndoc/base/tags/keys_mngr.rb +401 -0
  105. data/lib/dyndoc/base/tags/part_tag.rb +194 -0
  106. data/lib/dyndoc/base/tags/tag_mngr.rb +125 -0
  107. data/lib/dyndoc/base/tags/user_tag.rb +216 -0
  108. data/lib/dyndoc/base/tmpl.rb +6 -0
  109. data/lib/dyndoc/base/tmpl/eval.rb +581 -0
  110. data/lib/dyndoc/base/tmpl/extension.rb +337 -0
  111. data/lib/dyndoc/base/tmpl/manager.rb +450 -0
  112. data/lib/dyndoc/base/tmpl/oop.rb +57 -0
  113. data/lib/dyndoc/base/tmpl/parse_do.rb +2446 -0
  114. data/lib/dyndoc/base/tmpl/rbenvir.rb +54 -0
  115. data/lib/dyndoc/base/utils.rb +367 -0
  116. data/lib/dyndoc/common/dynArray.rb +234 -0
  117. data/lib/dyndoc/common/file.rb +52 -0
  118. data/lib/dyndoc/common/init.rb +2 -0
  119. data/lib/dyndoc/common/tilt.rb +149 -0
  120. data/lib/dyndoc/common/utils.rb +61 -0
  121. data/lib/dyndoc/common/uv.rb +163 -0
  122. data/lib/dyndoc/init/config.rb +296 -0
  123. data/lib/dyndoc/init/home.rb +9 -0
  124. data/lib/dyndoc/plugins/tex.rb +4 -0
  125. data/lib/dyndoc/plugins/tex/beamer.rb +208 -0
  126. data/lib/dyndoc/plugins/tex/tex_eval.rb +69 -0
  127. data/lib/dyndoc/plugins/tex/tex_parse_do.rb +25 -0
  128. data/lib/dyndoc/plugins/tex/tex_user_tag.rb +32 -0
  129. data/share/R/dyndocMsys2.R +5 -0
  130. data/share/R/dyndocTools.R +9 -0
  131. data/share/R/test.R +14 -0
  132. data/share/R/tools/dynArray.R +34 -0
  133. data/share/R/tools/dynCapture.R +84 -0
  134. data/share/R/tools/dynMsys2.R +54 -0
  135. data/share/julia/dynArray.jl +93 -0
  136. data/share/julia/dyndoc.jl +110 -0
  137. data/share/julia/ruby.jl +37 -0
  138. metadata +202 -0
@@ -0,0 +1,86 @@
1
+ {#def]layout[#,]style[cqls][#,]code[][#rb<]p "LAYOUT!!!"[#>]{#call]layout.#{style}[#,]#{code}[#}[#def}
2
+
3
+ {#def]layout.cqls[#,]code[][#rb<]p "LAYOUT.CQLS";
4
+ [#=]::document.team?[Cqls]
5
+ [#=]::document.activity?[Statistics]
6
+ [#=]::document.body.header[
7
+ <!-- HEADER: Holds title, subtitle and header images -->
8
+ <div id="header">
9
+ <!-- top rounded corner -->
10
+ <img src="/images/reflection/corner_tl.gif" alt="corner" style="float:left;" />
11
+
12
+
13
+ <!-- Site title and subTitle -->
14
+ <span class="title">#{document.logo?}
15
+ <span class="white">#{document.team?}</span> team
16
+ <span class="subTitle">
17
+ #{document.activity?}
18
+ </span>
19
+ <span>#{document.header.lang?}</span>
20
+ </span>
21
+
22
+
23
+ #{document.mainMenu?}
24
+ </div>
25
+ ]
26
+ [#=]::document.body.footer[<div id="footer">
27
+ <div id="footerLeft">
28
+ <a href="http://fullahead.org" title="based on a design by fullahead.org" class="fullAhead"></a>{#lastmodified#}
29
+ </div></div>]
30
+ [#rb<]#p #{=document.body.header}
31
+ [#>]
32
+ #{document.body.header}
33
+ <div id="content">
34
+ #{code}
35
+ </div>
36
+ #{document.body.footer}
37
+ [#def}
38
+
39
+
40
+ {#def]layout.ljk[#,]code[][#rb<]p "LAYOUT.LJK";
41
+ [#>]
42
+ <div id="container">
43
+ <div id="header" lang="fr">
44
+ <h1><a href="http://www-ljk.imag.fr/ljk.html"></a></h1>
45
+ </div>
46
+ <div id="header_en" lang="en">
47
+ <h1><a href="http://www-ljk.imag.fr/ljk.html"></a></h1>
48
+ </div>
49
+
50
+ <table margin="0" cellpading="0" border="0" cellspacing="0" height="100%" width="740">
51
+ <tbody>
52
+ <tr>
53
+ <td colspan="2" rowspan="1" align="right">
54
+ <div id="primary"> {#new]lang[#of]LangSwitcher[#}</div>
55
+ </td>
56
+ </tr>
57
+ <tr>
58
+ <td halign="right" style="border-right: 1px solid rgb(102, 102, 102);" valign="top" width="145">
59
+ <div id="nav">
60
+ #{document.mainMenu}
61
+ <b> <b> <img src="http://www-ljk.imag.fr/Images/logos.jpg" usemap="#logosOnModel" border="0">
62
+ <map name="logosOnModel">
63
+ <area shape="rect" coords="42,10,112,20" href="http://ljk.imag.fr/">
64
+ <area shape="rect" coords="0,26,72,69" href="http://www.cnrs.fr/">
65
+ <area shape="rect" coords="72,26,139,69" href="http://www.inpg.fr/">
66
+ <area shape="rect" coords="0,69,72,117" href="http://www.inria.fr/">
67
+ <area shape="rect" coords="72,69,139,117" href="http://www.ujf-grenoble.fr/">
68
+ <area shape="rect" coords="43,117,100,150" href="http://www.upmf-grenoble.fr/">
69
+ </map>
70
+ </b></b>
71
+ </div>
72
+ <b> <b> </b></b>
73
+ </td>
74
+ <td halign="left" valign="top">
75
+ <div style="text-align: center;"> </div>
76
+ <div id="primary" style="text-align: justify;">
77
+ #{code}
78
+ </div>
79
+ </td>
80
+ </tr>
81
+ </tbody>
82
+ </table>
83
+ </div>
84
+ [#def}
85
+
86
+
@@ -0,0 +1,6 @@
1
+ [#%] Initialization for CQLS layout
2
+ [#=]::document.style[cqls]
3
+ [#=]::document.head.css[]
4
+ [#=]::document.head.css_pre[CssCqls,FileUploader,TabBar,AceEditor,JQueryToolsNavStyle]
5
+ [#=]::document.head.css_post[JQueryAll]
6
+ [#=]::document.mainMenu[]
@@ -0,0 +1,41 @@
1
+ [#%] Initialization for LJK layout
2
+ [#=]::document.rsrcSrvUrl[http://sagag6.upmf-grenoble.fr]
3
+ [#=]::document.style[ljk]
4
+ [#=]::document.charset[utf-8]
5
+ [#=]::document.head.css_pre[nothing]
6
+ [#=]::document.head.css_post[JQuerySag6]
7
+ [#=]::document.head.css[
8
+ <link rel="stylesheet" type="text/css" media="all" href="http://www-ljk.imag.fr/css/ljk-V3.css">
9
+ <link rel="stylesheet" type="text/css" media="all"
10
+ href="http://www-ljk.imag.fr/Publications/Basilic/css/listpubli.css">
11
+ <link rel="stylesheet" type="text/css" media="all"
12
+ href="http://www-ljk.imag.fr/Publications/Basilic/css/publi.css">
13
+ <link rel="icon" href="/icones/ljk-icon.gif" type="image/x-icon">
14
+ <link rel="shortcut icon" href="http://www-ljk.imag.fr/icones/ljk-icon.gif"
15
+ type="image/x-icon">
16
+ <script type="text/javascript" src="http://www-ljk.imag.fr/js/EventHandler.js"></script>
17
+ <script type="text/javascript" src="http://www-ljk.imag.fr/js/ClearSearch.js"></script>
18
+ <style type="text/css">
19
+ .thumb {background-image: url('http://www-ljk.imag.fr/Publications/Basilic/Images/thumbImg.png');}
20
+ .movie {background-image: url('http://www-ljk.imag.fr/Publications/Basilic/Images/thumbMovie.png');}
21
+ .thumb:hover {background-image: url('http://www-ljk.imag.fr/Publications/Basilic/Images/thumbImgHover.png');}
22
+ </style>
23
+ <script src="http://www.google-analytics.com/urchin.js"
24
+ type="text/javascript">
25
+ </script>
26
+ <script type="text/javascript">
27
+ _uacct = "UA-1475170-1";
28
+ urchinTracker();
29
+ </script>
30
+ <style type="text/css">
31
+ #header_en h1, #header_en a{
32
+ display: block;
33
+ height: 156px;
34
+ margin: 0;
35
+ padding: 0;
36
+ background-image: url(http://www-ljk.imag.fr/icones/band-web_en.gif);
37
+ background-repeat: no-repeat;
38
+ background-color: transparent;
39
+ }
40
+ </style>
41
+ ]
@@ -0,0 +1,37 @@
1
+ To initialize!!!
2
+
3
+ {#new]TabBar[#of]HtmlLoader[#code]
4
+ [<link rel="stylesheet" type="text/css" href="/dHtmlX/dhtmlx.css">
5
+ <script src="/dHtmlX/dhtmlx.js"></script>
6
+ <!-- link rel="stylesheet" type="text/css" href="/dhtmlx/TabBar/codebase/dhtmlxtabbar.css">
7
+ <script src="/dhtmlx/dhtmlxcommon.js"></script>
8
+ <script src="/dhtmlx/TabBar/codebase/dhtmlxtabbar.js"></script -->]
9
+ [#}
10
+
11
+ TabBar defined as a block!!!
12
+
13
+ {#newBlck]tabbar
14
+ [#blck]:pre[#=]tabbar[:{blckName[-1]}]
15
+ [#rb<]page_cpt=0[#>]
16
+ [<div id="tabbar_#{tabbar}" style="width:#{style.width}; height:#{style.height};">
17
+
18
+ <script>
19
+ tabbar_#{tabbar}=new dhtmlXTabBar("tabbar_#{tabbar}","top");
20
+ tabbar_#{tabbar}.setImagePath("/dhtmlx/TabBar/codebase/imgs/");
21
+ tabbar_#{tabbar}.setHrefMode("iframes-on-demand");
22
+ tabbar_#{tabbar}.setSkinColors("#FCFBFC","#F4F3EE");]
23
+ [#blck]bar
24
+ [#post][#>]
25
+ |tabbar_#{tabbar}.addTab("#{tabbar}:{page_cpt+=1}","#{page.title}","#{style.title}");
26
+ |tabbar_#{tabbar}.setContentHref("#{tabbar}:{page_cpt}","http://docs.google.com/gview?url=#{url}/#{page.pdf}&embedded=true");
27
+ [#do_code][blckMngr.next_tag;puts "ICI BAR!"]
28
+ [#blck]bar2
29
+ [#post][#>]
30
+ [tabbar_#{tabbar}.addTab("#{tabbar}:{page_cpt+=1}","#{page.title}","#{style.title}");
31
+ |tabbar_#{tabbar}.setContentHref("#{tabbar}:{page_cpt}","http://docs.google.com/gview?url=#{url}/#{page.pdf}&embedded=true");]
32
+ [#do_code][blckMngr.next_tag;puts "ICI"]
33
+ [#blck]:post[#>]
34
+ tabbar_#{tabbar}.setTabActive("#{tabbar}1");
35
+ </script>
36
+ </div>
37
+ [#}
@@ -0,0 +1,20 @@
1
+ {#def]txtl[#,]code[]
2
+ [#>]\begin{rawhtml}<\n>
3
+ [#rb>]RedCloth.new(#{=code}).to_html
4
+ [#>]\end{rawhtml}
5
+ [#def}
6
+
7
+ {#def]uvTtm[#,]code[][#,]syntax[dyndoc][#,]render[amy]
8
+ [#>]\begin{rawhtml}<\n>
9
+ [#rb>]require "uv"
10
+ uv_code= #{=code}.strip
11
+ #puts "uv code:";p uv_code;p #{=syntax}
12
+ Uv.parse(uv_code, "xhtml", #{=syntax}.downcase, true, #{=render})
13
+ [#>]<\n>\end{rawhtml}<\n>
14
+ [#=]::header.css_uv?[amy]
15
+ [#=]::header.css_uv[{#rb>](#{=header.css_uv}.split(",")+[#{=render}]).join(",")[#}]
16
+ [#def}
17
+
18
+ {#def]rverbUVTtm[#,]code[][#,]render[amy]
19
+ [#>]{#uvTtm]{#rverb]#{code}[#mode]raw[#rverb}
20
+ [#syntax]r[#}
@@ -0,0 +1,14 @@
1
+ {#def]uvTxtl[#,]code[][#,]syntax[dyndoc][#,]render[amy]
2
+ [#rb>]require "uv"
3
+ uv_code= #{=code}.strip
4
+ #puts "uv code:";p uv_code;p #{=syntax}
5
+ Uv.parse(uv_code, "xhtml", #{=syntax}.downcase, true, #{=render})
6
+ [#>]<\n>
7
+ [#=]::header.css_uv?[amy]
8
+ [#=]::header.css_uv[{#rb>](#{=header.css_uv}.split(",")+[#{=render}]).join(",")[#}]
9
+ [#def}
10
+
11
+ {#def]rverbUVTxtl[#,]code[][#,]render[amy]
12
+ [#>]<notextile>{#uvTxtl]{#rverb]#{code}[#mode]raw[#rverb}
13
+ [#syntax]r[#}</notextile>
14
+
@@ -0,0 +1,59 @@
1
+ require "dyndoc/common/utils"
2
+ require "dyndoc/base/utils"
3
+ require "dyndoc/base/tmpl"
4
+ require "dyndoc/base/tags"
5
+ require "dyndoc/base/filters"
6
+ require "dyndoc/base/envir"
7
+ require "dyndoc/base/scanner"
8
+ require "dyndoc/plugins/tex"
9
+ require "dyndoc-converter"
10
+ require "dyndoc/base/helpers"
11
+ require "configliere"
12
+
13
+ Settings.use :env_var, :config_block
14
+
15
+ require 'dyndoc/init/home'
16
+ Settings.define 'path.dyn_home', :env_var => 'DYN_HOME', :description => "dyndoc home path", :default => Dyndoc.home
17
+
18
+ Settings.define 'cfg_dyn.etc_path_subdir', :type => Array, :default => ["path","core"]
19
+
20
+ Settings.define 'cfg_dyn.pre_tmpl', :type => Array, :default => []
21
+ Settings.define 'cfg_dyn.post_tmpl', :type => Array, :default => []
22
+ Settings.define 'cfg_dyn.part_tag', :type => Array, :default => []
23
+ Settings.define 'cfg_dyn.out_tag', :type => Array, :default => []
24
+ Settings.define 'cfg_dyn.doc_list', :type => Array, :default => []
25
+ Settings.define 'cfg_dyn.tag_tmpl', :type => Array, :default => []
26
+ Settings.define 'cfg_dyn.keys_tmpl', :type => Array, :default => []
27
+ Settings.define 'cfg_dyn.user_input', :type => Array, :default => []
28
+ Settings.define 'cfg_dyn.cmd_doc', :type => Array, :default => [:make_content,:save]
29
+ Settings.define 'cfg_dyn.cmd_pandoc_options', :type => Array, :default => []
30
+ Settings.define 'cfg_dyn.options.pdflatex_nb_pass', :type => Integer, :default => 1
31
+ Settings.define 'cfg_dyn.options.pdflatex_echo', :type => :boolean, :default => false
32
+ Settings.define 'cfg_dyn.debug', :type => :boolean, :default => false
33
+
34
+ Settings.define 'cfg_dyn.dyndoc_session', :type => Symbol, :default => :normal #or :interactive
35
+
36
+ Settings.define 'cfg_dyn.dyndoc_mode', :type => Symbol, :default => :normal
37
+ #Settings.define 'cfg_dyn.docker_mode', :type => :boolean, :default => false
38
+ Settings.define 'cfg_dyn.working_dir', :type => String, :default => ""
39
+ Settings.define 'cfg_dyn.root_doc', :type => String, :default => ""
40
+ Settings.define 'cfg_dyn.nbChar_error', :type => Integer, :default => 300
41
+ Settings.define 'cfg_dyn.langs', :type => Array, :default => ["R"]
42
+
43
+ Settings.define 'cfg_dyn.devel_mode', :type=> Symbol, :default=> :none
44
+ Settings.define 'cfg_dyn.ruby_debug', :type=> Symbol, :default=> :none
45
+
46
+ Settings.define 'cfg_dyn.model_doc', :default => "default"
47
+ Settings.define 'cfg_dyn.format_doc', :default => :tex
48
+ Settings.define 'cfg_dyn.pandoc_filter', :default => ""
49
+
50
+ Settings.finally do |c|
51
+ c['cfg_dyn.langs'].map!{|e| e.to_sym}
52
+ end
53
+
54
+ Settings.resolve!
55
+ require 'dyndoc/init/config'
56
+ Dyndoc.init_dyndoc_library_path
57
+ Dyndoc.init_rootDoc
58
+
59
+ CqlsDoc=Dyndoc #for compatibity
@@ -0,0 +1,541 @@
1
+ module Dyndoc
2
+
3
+ class Envir
4
+
5
+ attr_accessor :local, :global
6
+ attr_reader :curenv
7
+
8
+ def initialize(envir)
9
+ @local,@global=envir[:local],envir[:global]
10
+ @local={} unless @local
11
+ @global={} unless @global
12
+ @curenv=nil
13
+ end
14
+
15
+ @@start,@@stop=FilterManager.delim
16
+
17
+ # VarElement methods ###########################
18
+ def Envir.is_textElt?(e)
19
+ (!e.nil?) and ((e.is_a? Hash) and e[:val])
20
+ end
21
+
22
+ #same as below but including Array of textElt
23
+ def Envir.is_textValElt?(e)
24
+ (!e.nil?) and (((e.is_a? Hash) and e[:val]) or ((e.is_a? Array) and e.all?{|ee| Envir.is_textValElt?(ee)}))
25
+ end
26
+
27
+ def Envir.typeElt(e)
28
+ return :nil if e.nil?
29
+ return :text if (e.is_a? Hash) and e[:val]
30
+ return :list
31
+ end
32
+
33
+ def Envir.is_listElt?(e)
34
+ !e.nil? and !Envir.is_textElt?(e)
35
+ end
36
+
37
+ def Envir.to_textElt(ary)
38
+ return ary if Envir.is_textElt?(ary)
39
+ ary=[[ary]] if ary.is_a? String
40
+ res={:val=>((ary[0].is_a? Array) ? ary[0] : [ary[0]] ) }
41
+ res[:attr]=ary[1] if ary[1]
42
+ return res
43
+ end
44
+
45
+ def Envir.to_textVal(e)
46
+ if Envir.is_textElt?(e)
47
+ return e[:val][0]
48
+ else
49
+ out=nil
50
+ if e.is_a? Array
51
+ out=[]
52
+ e.map{|ee| out << Envir.to_val(ee)}
53
+ end
54
+ return out.join
55
+ end
56
+ end
57
+
58
+ # here Hash is considered!
59
+ def Envir.to_val(e)
60
+ if Envir.is_textElt?(e)
61
+ return e[:val][0]
62
+ else
63
+ out=nil
64
+ if e.is_a? Array
65
+ out=[]
66
+ e.map{|ee| out << Envir.to_val(ee)}
67
+ end
68
+ if e.is_a? Hash
69
+ out={}
70
+ e.map{|k,ee| out[k]=Envir.to_val(ee)}
71
+ end
72
+ return out
73
+ end
74
+ end
75
+
76
+ def Envir.to_keys(key)
77
+ keys=key.strip.split(".")
78
+ ## keys=["1","ta"] -> keys=[1,"ta"]
79
+ keys.map!{|e| (e.to_i.to_s==e ? e.to_i : e)}
80
+ return keys
81
+ end
82
+
83
+ def Envir.update_textElt(elt,ary)
84
+ tmp=Envir.to_textElt(ary)
85
+ elt[:val].replace(tmp[:val])
86
+ if tmp[:attr]
87
+ elt[:attr]=[] unless elt[:attr]
88
+ elt[:attr].replace(tmp[:attr])
89
+ end
90
+ end
91
+
92
+ #cur responds is Array or Hash and ary is Array
93
+ def Envir.update_elt(cur,key,ary)
94
+ #puts "in update_elt";p cur; p key; p ary
95
+ if Envir.is_textElt?(cur[key])
96
+ Envir.update_textElt(cur[key],ary)
97
+ else
98
+ cur[key]=Envir.to_textElt(ary)
99
+ end
100
+ #p cur
101
+ end
102
+
103
+ # ACCESS Envir ###############################
104
+
105
+ ##########################
106
+ # return curElt if exists? and text
107
+ # return curEnv if exists? and !text
108
+ # if text then check if the element is textElt
109
+ ##########################
110
+ def Envir.elt_defined?(envir,keys,text=nil)
111
+ #puts "Envir.elt_defined?"; p envir; p keys; p text
112
+ return nil if keys.empty?
113
+ if keys.length==1
114
+ ok=envir.include?(keys[0])
115
+ ok &= Envir.is_textValElt?(envir[keys[0]]) if text
116
+ return (ok ? (text ? envir[keys[0]] : envir) : nil)
117
+ end
118
+ curEnv=envir
119
+ #puts "envir";p envir
120
+ i=0
121
+ curElt=nil
122
+ while (curElt !="ERR:[]?" and i<keys.length-1)
123
+ curEnv=curEnv[keys[i]]
124
+ i+=1
125
+ curElt=begin curEnv[keys[i]] rescue "ERR:[]?" end
126
+ #puts "curElt";p curElt
127
+ end
128
+ ok=(curElt!="ERR:[]?")
129
+ ok &= Envir.is_textValElt?(curElt) if text
130
+ #puts "envir2";p envir
131
+ return ((ok and curElt) ? (text ? curElt : curEnv) : nil)
132
+ end
133
+
134
+ def elt_defined?(keys,text=nil)
135
+ return ( keys_defined?(keys) ? Envir.elt_defined?(@curenv,keys,text) : nil)
136
+ end
137
+
138
+ def elt_and_envir(keys,text=nil)
139
+ return ( keys_defined?(keys) ? [Envir.elt_defined?(@curenv,keys,text),@curenv] : nil )
140
+ end
141
+
142
+ # Added: 5/9/08 for use in eval_CALL!
143
+ # this is a replacement of Envir.get_elt! only used in eval_CALL
144
+ #TODO: check if it is necessary to get global variable! TO TEST!
145
+ def Envir.keys_defined?(envir,k)
146
+ return envir if Envir.elt_defined?(envir,k)
147
+ local,curenv=envir,nil
148
+ if local.include? :prev
149
+ begin
150
+ local=local[:prev]
151
+ curenv=local if Envir.elt_defined?(local,k)
152
+ end until curenv or !(local[:prev])
153
+ end
154
+ return(curenv)
155
+ end
156
+
157
+ #################
158
+ ## return the hash if the keys is defined!!!
159
+ ## @curenv is then set
160
+ ##################
161
+ def keys_defined?(k,locally=false) ##old name defined? already existing -> bug in export
162
+ @curenv=nil
163
+ @curenv=@local if Envir.elt_defined?(@local,k)
164
+ return(@curenv) if @curenv and locally!=:out
165
+ if @local.include? :prev
166
+ local=@local
167
+ begin
168
+ local=local[:prev]
169
+ @curenv=local if Envir.elt_defined?(local,k)
170
+ end until @curenv or !(local[:prev])
171
+ end
172
+ return(@curenv) if @curenv
173
+ @curenv=@global if Envir.elt_defined?(@global,k)
174
+ ##print 'before-> ';p @curenv
175
+ return(@curenv) if @curenv
176
+ ## special treatment for export in mode :out
177
+ if locally==:out
178
+ @curenv=@global
179
+ return nil #no element found but @curenv is fixed
180
+ end
181
+ @curenv=(locally ? @local : @global)
182
+ ##print "key_defined?"+k+"\n";p @curenv
183
+ return nil
184
+ end
185
+
186
+ # for debug ##############################################
187
+ def test_keys(keys)
188
+ puts "keys_defined?(#{keys.join('.')})"
189
+ p keys_defined?(keys)
190
+ puts "keys_defined?(#{keys.join('.')},true)"
191
+ p keys_defined?(keys,true)
192
+ puts "elt_defined?(#{keys.join('.')})"
193
+ p elt_defined?(keys)
194
+ puts "elt_defined?(#{keys.join('.')},true)"
195
+ p elt_defined?(keys,true)
196
+ end
197
+
198
+
199
+ ############################################
200
+ # curEnv[key1] exists! and curEnv[key1][key2] ???
201
+ # return curEnv
202
+ ############################################
203
+ def Envir.get_next_elt!(res,keys,i)
204
+ curEnv=res[keys[i]]
205
+ #p i;p res;p keys[i];p keys[i+1]
206
+ test=begin curEnv[keys[i+1]] rescue "ERR:[]?" end
207
+ #p test;p curEnv
208
+ if test=="ERR:[]?"
209
+ #create it
210
+ if keys[i+1].is_a? Integer
211
+ res[keys[i]]=curEnv=[] unless res[keys[i]].is_a? Array
212
+ curEnv[keys[i+1]]=nil
213
+ elsif keys[i+1].is_a? String
214
+ res[keys[i]]=curEnv={} unless res[keys[i]].is_a? Hash
215
+ #curEnv[keys[i+1]]=nil #useless with respect to Array
216
+ end
217
+ elsif test.nil? and keys[i+1].is_a?(Integer) and !res[keys[i]].is_a?(Array)
218
+ ## check that res[keys[i]] is of the expected type because res[1] is ok when res is a Hash!!!!
219
+ res[keys[i]]=curEnv=[]
220
+ curEnv[keys[i+1]]=nil
221
+ end
222
+ #p test;p res;p cur
223
+ # now cur responds to cur[keys[i+1]]
224
+ i += 1
225
+ if keys[i+1]
226
+ Envir.get_next_elt!(curEnv,keys,i)
227
+ else
228
+ return curEnv
229
+ end
230
+ end
231
+
232
+
233
+ #return curEnv and not directly curElt because of dynamic tricks! curElt is then obtained by curEnv[keys[-1]]
234
+ def Envir.get_elt!(envir,keys)
235
+ return nil if keys.empty?
236
+ if keys.length==1
237
+ return envir
238
+ end
239
+ return Envir.get_next_elt!(envir,keys,0)
240
+ end
241
+
242
+
243
+ def Envir.set_elt!(envir,keys,v)
244
+ curEnv=Envir.get_elt!(envir,keys)
245
+ #puts "in set_elt!";
246
+ #p envir
247
+ #puts "curEnv";p curEnv;p curEnv[keys[-1]];p keys;p v
248
+ #=begin
249
+ if curEnv
250
+ #if curEnv.respond_to? "[]" and curEnv[keys[-1]]
251
+ Envir.update_elt(curEnv,keys[-1],v)
252
+ #else
253
+ #create it! ADD: 06/03/08! Surtout pour les affectations par variable!
254
+ #curEnv[keys[-1]]=v
255
+ #puts "created";p keys[-1];p curEnv
256
+ #end
257
+ end
258
+ #puts "modif";p curEnv
259
+ #=end
260
+ end
261
+
262
+ def Envir.set_textElt!(envir,keys,v)
263
+ #only textElt since update_elt have to the curEnv!!!
264
+ curElt=Envir.elt_defined?(envir,keys,true)
265
+ if curElt
266
+ Envir.update_textElt(curElt,v)
267
+ else #otherwise create it!
268
+ Envir.set_elt!(envir,keys,v)
269
+ end
270
+ end
271
+
272
+ def set_textElt!(keys,v,envir=nil)
273
+ #only textElt since update_elt have to the curEnv!!!
274
+ curElt,envir=elt_and_envir(keys,true) unless envir
275
+ if curElt
276
+ Envir.update_textElt(curElt,v)
277
+ else #otherwise create it in local environment!
278
+ Envir.set_elt!(envir,keys,v)
279
+ end
280
+ end
281
+
282
+
283
+
284
+ ##RMK: seems to be unused: FALSE in @vars[:key]
285
+ def [](key,global=nil)
286
+ key=key.to_s.strip
287
+ global,key="global",key[2..-1] if key[0,2]=="::"
288
+ key=key[1..-1] if key[0,1]==":"
289
+ keys=Envir.to_keys(key)
290
+ #puts "Envir:[]:keys,filter";p keys;p self
291
+ curElt=nil
292
+ if global and ((tmp=global.to_s.downcase)=="global"[0,tmp.length])
293
+ return curElt[:val][0] if (curElt=Envir.elt_defined?(@global,keys,true))
294
+ else
295
+ return curElt[:val][0] if (curElt=elt_defined?(keys,true))
296
+ end
297
+ return nil
298
+ end
299
+
300
+ # same as [] except that result is not necessarily a textElt
301
+ def extract(key)
302
+ key=key.to_s.strip
303
+ global=nil
304
+ global,key="global",key[2..-1] if key[0,2]=="::"
305
+ key=key[1..-1] if key[0,1]==":"
306
+ key=keyMeth(key)
307
+ keys=Envir.to_keys(key)
308
+ #puts "Envir:[]:keys,filter";p keys;p self
309
+ #puts "keys";p keys
310
+ cur=nil
311
+ if global
312
+ return Envir.to_val(cur[keys[-1]]) if (cur=Envir.elt_defined?(@global,keys))
313
+ else
314
+ return Envir.to_val(cur[keys[-1]]) if (cur=elt_defined?(keys))
315
+ end
316
+ return nil
317
+ end
318
+
319
+
320
+ def remove(key)
321
+ key=key.to_s.strip
322
+ global=nil
323
+ global,key="global",key[2..-1] if key[0,2]=="::"
324
+ key=key[1..-1] if key[0,1]==":"
325
+ key=keyMeth(key)
326
+ keys=Envir.to_keys(key)
327
+ #puts "Envir:[]:keys,filter";p keys;p self
328
+ cur=nil
329
+ #puts "keys";p keys
330
+ if global
331
+ #p Envir.elt_defined?(@global,keys)
332
+ cur.delete(keys[-1]) if (cur=Envir.elt_defined?(@global,keys))
333
+ else
334
+ #p elt_defined?(keys)
335
+ cur.delete(keys[-1]) if (cur=elt_defined?(keys))
336
+ end
337
+ end
338
+
339
+ def extract_raw(key)
340
+ key=key.to_s.strip
341
+ global=nil
342
+ global,key="global",key[2..-1] if key[0,2]=="::"
343
+ key=key[1..-1] if key[0,1]==":"
344
+ key=keyMeth(key)
345
+ keys=Envir.to_keys(key)
346
+ #puts "Envir:[]:keys,filter";p keys;p self
347
+ cur=nil
348
+ #puts "keys";p keys
349
+ if global
350
+ #p Envir.elt_defined?(@global,keys)
351
+ return cur[keys[-1]] if (cur=Envir.elt_defined?(@global,keys))
352
+ else
353
+ #p elt_defined?(keys)
354
+ return cur[keys[-1]] if (cur=elt_defined?(keys))
355
+ end
356
+ return nil
357
+ end
358
+
359
+ def extract_list(key,elt=nil)
360
+ last_return = !elt
361
+ elt=extract_raw(key) unless elt
362
+ res=[]
363
+ if elt
364
+ if Envir.is_listElt?(elt)
365
+ if elt.is_a? Hash
366
+ elt.keys.each{|k|
367
+ res += extract_list(key+"."+k,elt[k])
368
+ }
369
+ else #is_a? Array
370
+ elt.each_index{|k|
371
+ res += extract_list(key+"."+k.to_s,elt[k])
372
+ }
373
+ end
374
+ return res unless last_return
375
+ else
376
+ return [key+": ["+Envir.to_val(elt)+"]"]
377
+ end
378
+ end
379
+ if last_return
380
+ res.sort.join("\n")
381
+ end
382
+ end
383
+
384
+ # IMPORTANT: key may have 3 forms
385
+ # 1) :key or "key" -> key="key" and envir=@curenv
386
+ # 2) ":key" -> key="key" but envir=@local
387
+ # 3) "::key" -> key="key" but envir=@global
388
+ # TODO: extend to val a general element and not only a textElt!
389
+ def []=(key,val)
390
+ envir=nil
391
+ default=nil
392
+ key=key.to_s.strip
393
+ #puts "key";p key
394
+ default,key=true,key[1..-1] if key[0,2]=="?:" or key[0,3]=="?::"
395
+ envir,key=@global,key[2..-1] if key[0,2]=="::"
396
+ envir,key=@local,key[1..-1] if key[0,1]==":"
397
+ keys=Envir.to_keys(key)
398
+ =begin
399
+ puts "[]="
400
+ p keys
401
+ p envir
402
+ p "ici"
403
+ p Envir.elt_defined?(envir,keys,true) if envir
404
+ =end
405
+ if envir
406
+ if (curElt=Envir.elt_defined?(envir,keys,true))
407
+ #puts "ici";p curElt
408
+ Envir.update_textElt(curElt,val) unless default
409
+ else
410
+ Envir.set_textElt!(envir,keys,[val])
411
+ end
412
+ else
413
+ if (curElt=elt_defined?(keys,true))
414
+ Envir.update_textElt(curElt,val) unless default
415
+ else
416
+ #create it only locally!
417
+ Envir.set_textElt!(@local,keys,[val])
418
+ #p keys; p val
419
+ #p @local
420
+ end
421
+ end
422
+ end
423
+
424
+ ##################
425
+ # get_by_mode: trick with mode consideration!
426
+ #################
427
+ def Envir.get_by_mode(mode,envirType,key,elt)
428
+ #puts "get_by_mode:key,elt";p key;p elt
429
+ case mode
430
+ when :pre
431
+ ## comment : not return "#{"+key+"}" which fails --> "+key+"
432
+ return '#'+(envirType==:global ? '#' : '' )+'{'+key+'}' unless elt[:attr] and (elt[:attr].include? :pre)
433
+ when :post
434
+ if Envir.is_textElt?(elt) and elt[:attr] and (elt[:attr].include? :post)
435
+ return Envir.to_textVal(elt) #elt[:val][0]
436
+ end
437
+ end
438
+ return '#'+(envirType==:global ? '#' : '' )+'{'+key+'}' if Envir.is_textElt?(elt) and elt[:attr] and (elt[:attr].include? :post)
439
+ return Envir.to_textVal(elt) #elt[:val][0]
440
+ end
441
+
442
+ def Envir.extraction_make(keys)
443
+ key_extract=nil
444
+ keys,key_extract=keys[0...-1],keys[-1][1...-1] if keys[-1]=~/^\(.*\)$/
445
+ return [keys,key_extract]
446
+ end
447
+
448
+ def Envir.extraction_apply(val,key_extract)
449
+ if key_extract
450
+ if val.is_a? Hash
451
+ if key_extract[0,1]=="-"
452
+ key_extract=key_extract[1..-1].split(",")
453
+ else
454
+ key_extract=val.keys - key_extract.split(",")
455
+ end
456
+ #p key_extract
457
+ return val.reject{|k,v| key_extract.include? k}
458
+ elsif val.is_a? Array
459
+ if key_extract[0,1]=="-"
460
+ key_extract=(0...(val.length)).to_a-key_extract[1..-1].split(",").map{|e| e.to_i}
461
+ else
462
+ key_extract= key_extract.split(",").map{|e| e.to_i}
463
+ end
464
+ #p key_extract
465
+ val2=[]
466
+ val.each_index{|i|
467
+ val2 << val[i] if key_extract.include? i
468
+ }
469
+ return val2
470
+ end
471
+ else
472
+ return val
473
+ end
474
+ end
475
+
476
+
477
+
478
+ def keyMeth(key)
479
+ return ((@local["self"] and key[0,1]==".") ? "self"+key : key)
480
+ end
481
+
482
+ def output(w,mode=nil,escape=false)
483
+ curElt=nil
484
+ emptyElt=nil
485
+ ## GLOBAL variable!!!
486
+ if w[0,2]=="##"
487
+ k=w[3..-2] #the key
488
+ k=k[1..-1] if (emptyElt=(k[0,1]=="?"))
489
+ keys=Envir.to_keys(k)
490
+ piece=nil
491
+ piece=Envir.get_by_mode(mode,:global,k,curElt) if (curElt=Envir.elt_defined?(@global,keys,true))
492
+ if piece.nil?
493
+ return "" if emptyElt
494
+ ## The following added in order that if a local variable exists
495
+ ## but not the corresponding global variable, the local variable is interpreted!
496
+ return "#"+Envir.get_by_mode(mode,:local,keyMeth(k),curElt) if (curElt=Envir.elt_defined?(@local,Envir.to_keys(keyMeth(k)),true))
497
+ return (escape ? "\\#\\#"+@@start+k+@@stop : w)
498
+ else
499
+ return piece ##(escape ? Dyndoc.escape(piece) : piece)
500
+ end
501
+ else
502
+ ## LOCAL variable!!!
503
+ k=w[2..-2] #the key
504
+ k=k[1..-1] if (emptyElt=(k[0,1]=="?"))
505
+ #p k; p emptyElt
506
+ k=keyMeth(k)
507
+ keys=Envir.to_keys(k)
508
+ #puts "keys";p keys
509
+ piece=nil
510
+ if (curElt=Envir.elt_defined?(@local,keys,true))
511
+ piece=Envir.get_by_mode(mode,:local,k,curElt)
512
+ end
513
+ #puts "curElt";p curElt
514
+ #p self
515
+ #p @local
516
+ ## except if @mode== :post !!!
517
+ if mode!=:post and !piece and (@local.include? :prev)
518
+ local=@local
519
+ begin
520
+ local=local[:prev]
521
+ piece=Envir.get_by_mode(mode,:local,k,curElt) if (curElt=Envir.elt_defined?(local,keys,true))
522
+ end until piece or !(local[:prev])
523
+ end
524
+ ## special case : @mode==:post and @envir.local is the root
525
+ unless (mode==:post and (@local.include? :prev))
526
+ ## if piece is nil look in the global environment
527
+ piece=Envir.get_by_mode(mode,:global,k,curElt) if !piece and (curElt=Envir.elt_defined?(@global, keys,true))
528
+ end
529
+ ## if piece is nil the result is converted in latex in escape mode!!!
530
+ if piece.nil?
531
+ return "" if emptyElt
532
+ return (escape ? '\\#'+@@start+k.gsub("_",'\_')+@@stop : w)
533
+ else
534
+ return piece
535
+ end
536
+ end
537
+ end
538
+
539
+ end
540
+
541
+ end