dyndoc-ruby 0.7.3 → 0.7.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bfadfdc5ff9a771cb8bd843a041c96b8f1c33c0e
4
- data.tar.gz: 1561fe45892386f94e8838b7686e853dd8629c99
3
+ metadata.gz: 92aec761fb25501bdaa7c77b583627e1f18b2a8a
4
+ data.tar.gz: a7edf41a3bda9d06afeb5f46daa76b387f103d4a
5
5
  SHA512:
6
- metadata.gz: 0b19568d4e4d4ce2d1133aecea4fbac4c23031a20b9559ad97de7efc2e86cd610fa1f21bbb53140019ed5d78232e313ae28e6958d43a2b68f5d2038f7b361323
7
- data.tar.gz: 75358580ac47c8815cb15043be4b39500de588c7e63bcf8b4be4f8a61804819616c6ae8cccb1d2dc6ec14baf1156a0923459d2be8398bf0564e5c7c44740832a
6
+ metadata.gz: bdbb1be0061c988046b91027312d7c54d649169395eab6440fe02e83f8561029d722fef771e25b0483c876cb3404a1b2d15ff28fb7aa96777113ed64a3e2fd2c
7
+ data.tar.gz: 9838e9e865f98c9101b2b088d211c3be8596b0c0071b56e92268c8c879d7c399751b38d5183c6026d8f9d76a6ae32dcf67e08b823164199bc045833e2cecabc1
data/bin/dyn CHANGED
@@ -59,6 +59,10 @@ OptionParser.new do |opts|
59
59
  Settings["cfg_dyn.cmd_doc"] = [:list]
60
60
  end
61
61
 
62
+ opts.on("-j", "--jl", "import julia") do
63
+ Settings["cfg_dyn.langs"] << :jl
64
+ end
65
+
62
66
  # opts.on("-r", "--remote", "pandoc or pdflatex (dyn)task performed remotely") do
63
67
  # Settings["cfg_dyn.remote_dyntask"] = true
64
68
  # end
@@ -1,5 +1,6 @@
1
1
  require "dyndoc-core"
2
2
  require 'dyndoc/cli/interactive-client.rb'
3
+ require 'yaml'
3
4
 
4
5
 
5
6
  module Dyndoc
@@ -42,10 +43,24 @@ module Dyndoc
42
43
  def Dyndoc.cli_convert_from_file(dyn_file,html_file,root={}) #ex: root={dyn: , html: }
43
44
  addr="127.0.0.1"
44
45
 
46
+ return unless root[:dyn]
47
+
45
48
  dyn_libs,dyn_tags=nil,nil
46
49
 
50
+ ## requirement: dyn_file is provided relatively to the root[:dyn] (for security reason too)
51
+
52
+ dyn_path=dyn_file.split(File::Separator)
53
+
54
+ dyn_file=File.join(root[:dyn],dyn_file) unless dyn_file[0]=="/"
55
+
47
56
  if i=(dyn_file =~ /\_?(?:html)?\.dyn$/)
48
57
 
58
+ cfg={}
59
+ ## find the previous config.yml in the tree folder
60
+ cfg_yml_files=dyn_path.inject([""]) {|res,e| res + [(res[-1,1]+[e]).flatten]}.map{|pa| File.join(root[:dyn],pa,"config.yml")}.reverse
61
+ cfg_yml_file=cfg_yml_files.select{|c| File.exists? c}[0]
62
+ cfg=YAML::load_file(cfg_yml_file) if cfg_yml_file
63
+
49
64
  ## Dyn layout
50
65
  dyn_layout=dyn_file[0...i]+"_layout.dyn" if File.exist? dyn_file[0...i]+"_layout.dyn"
51
66
 
@@ -55,11 +70,10 @@ module Dyndoc
55
70
  ## Dyn post
56
71
  dyn_post_code=File.read(dyn_file[0...i]+"_post.dyn") if File.exist? dyn_file[0...i]+"_post.dyn"
57
72
 
58
- cfg={}
59
73
 
60
74
  if File.exist? dyn_file[0...i]+".dyn_cfg"
61
- require 'yaml'
62
- cfg=YAML::load_file(dyn_file[0...i]+".dyn_cfg")
75
+ cfg.merge!{YAML::load_file(dyn_file[0...i]+".dyn_cfg")}
76
+ else # try do find (in the Zope spirit) a config file in the nearest folder
63
77
  end
64
78
 
65
79
  ## code to evaluate
@@ -82,7 +96,7 @@ module Dyndoc
82
96
  html_root= cfg["html_root"] || root[:html] || File.expand_path("..",dyn_file)
83
97
 
84
98
  if cfg["layout"]
85
- cfg_tmp=File.join(dyn_root,cfg["layout"])
99
+ cfg_tmp=File.join(dyn_root,cfg["layout"][0] == "/" ? cfg["layout"][1..-1] : ["layout",cfg["layout"]])
86
100
  dyn_layout=cfg_tmp if !dyn_layout and File.exist? cfg_tmp
87
101
  end
88
102
  if cfg["pre"]
@@ -95,13 +109,17 @@ module Dyndoc
95
109
  dyn_post_code=File.read(cfg_tmp) unless dyn_post_code and File.exist? cfg_tmp
96
110
  end
97
111
 
98
- if cfg["html_file"] #relative path from (dyn_)root
99
- html_file=File.join(html_root,cfg["html_file"])
112
+ ## deal with html_file
113
+ html_file=File.join(html_root,cfg["html_file"] || html_file)
114
+ unless File.exist? html_file
115
+ dirname=File.dirname(html_file)
116
+ require 'fileutils'
117
+ FileUtils.mkdir_p dirname
100
118
  end
101
119
 
102
120
  dyn_libs=cfg["libs"].strip if cfg["libs"]
103
121
 
104
- dyn_tags="[#<]{#opt]"+cfg["tags"].strip+"[#opt}" if cfg["tags"]
122
+ dyn_tags="[#<]{#opt]"+cfg["tags"].strip+"[#opt}[#>]" if cfg["tags"]
105
123
 
106
124
  if dyn_libs or dyn_pre_code
107
125
  code_pre = ""
@@ -111,8 +129,8 @@ module Dyndoc
111
129
  end
112
130
  code += "\n" + dyn_post_code if dyn_post_code
113
131
  ## TO TEST!!!
114
- code = dyn_tags + code if dyn_tags
115
132
  code = "[#rb<]page = " + page.inspect + "[#>]" +code if page
133
+ code = dyn_tags + code if dyn_tags
116
134
  dyndoc_start=[:dyndoc_libs,:dyndoc_layout]
117
135
 
118
136
  cli=Dyndoc::InteractiveClient.new(code,dyn_file,addr,dyndoc_start)
@@ -0,0 +1 @@
1
+ rename `example.dyndoc.yml` `~/.dyndoc.yml` to activate both `R` and `julia`
@@ -0,0 +1,4 @@
1
+ :cfg_dyn:
2
+ :langs:
3
+ - R
4
+ - jl
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dyndoc-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.3
4
+ version: 0.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - CQLS
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-07 00:00:00.000000000 Z
11
+ date: 2016-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: R4rb
@@ -113,6 +113,8 @@ files:
113
113
  - share/demo/testBeamer.dyn
114
114
  - share/demo/testBeamer_lib.dyn
115
115
  - share/demo/test_atom.dyn
116
+ - share/dyndoc.yml/README.md
117
+ - share/dyndoc.yml/example.dyndoc.yml
116
118
  - share/etc/alias
117
119
  - share/etc/dyn-cli/dyn_layout
118
120
  - share/etc/dyn-cli/layout/default.dyn