Class: Dyndoc::TemplateDocument
- Inherits:
-
Object
- Object
- Dyndoc::TemplateDocument
- Includes:
- DynConfig
- Defined in:
- lib/dyndoc/document.rb
Constant Summary collapse
- @@cfg =
GOAL: to deal with a master document which may generate many output with different formats RMK: no attempt to deal with template in odt format which is a next objective. RMK2: later on, one could imagine to propose a text language easily convertible to the expected formats
{ :working_dir => "", #directory where dyndoc is processed :dyndoc_mode => :normal, #default mode, alternative modes :local_server, :remote_server ## OBSOLETE: :docker_mode => false, :filename_tmpl=>"", #be specified later :filename_tmpl_orig=>"", #be specified later :lib_dyn_content=>"", :dirname_docs=>"", #default directory unless specified by doc! :rootDoc=>"", :user_input=>[], :tag_tmpl=>[], #old part_tag! :keys_tmpl=>[], :docs=>[], #this one is introduced from version V3 to deal with multidocuments :doc_list=>[], #list of documents if nonempty :cmd=>[], #list of commands if nonempty for every document :cmd_pandoc_options => [], #pandoc options :pandoc_filter => "", :options => {}, # added for example to compile twice latex :dtag=>:dtag, :dtags=>[:dtag], :raw_mode=>false, :model_tmpl=>"default", :model_doc=>"default", :exec_mode=>"no", :append => "", :verbose => false, :debug => false, :ruby_only => false }
Instance Attribute Summary collapse
-
#basename ⇒ Object
Returns the value of attribute basename.
-
#basename_orig ⇒ Object
Returns the value of attribute basename_orig.
-
#cfg ⇒ Object
Returns the value of attribute cfg.
-
#content ⇒ Object
Returns the value of attribute content.
-
#dirname ⇒ Object
Returns the value of attribute dirname.
-
#dirname_orig ⇒ Object
Returns the value of attribute dirname_orig.
-
#docs ⇒ Object
Returns the value of attribute docs.
-
#tmpl_mngr ⇒ Object
Returns the value of attribute tmpl_mngr.
Instance Method Summary collapse
-
#basename_tmpl ⇒ Object
document basename from template filename.
- #basename_tmpl_orig ⇒ Object
- #cfg_dyn_from(tmpl) ⇒ Object
- #cfg_dyn_from_code(code) ⇒ Object
- #cfg_dyn_from_lib(content) ⇒ Object
-
#initialize(name) ⇒ TemplateDocument
constructor
docs is a hash containing all the files.
- #lib_dyn_content_from(tmpl = nil) ⇒ Object
- #make_all ⇒ Object
- #make_doc_list ⇒ Object
- #read_cfg(name, mode = :all) ⇒ Object
- #read_cmdline ⇒ Object
Methods included from DynConfig
#[], #[]=, #append_cfg, #init_cfg
Constructor Details
#initialize(name) ⇒ TemplateDocument
docs is a hash containing all the files
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
# File 'lib/dyndoc/document.rb', line 142 def initialize(name) #docs is a hash containing all the files ## complete with default extension if not provided name += ".dyn" if File.basename(name) == File.basename(name,".*") @name=name ## read config from name @cfg=@@cfg.dup read_cfg(@name) ## the template manager Dyndoc.tmpl_mngr=@tmpl_mngr = Dyndoc::Ruby::TemplateManager.new(@cfg) ## the documents @docs={} make_doc_list if @cfg[:content] #a non file based document is a Hash cfg with :content inside (give a basename used for generated files) @content=@cfg[:content] else # find the basename of the template @basename=basename_tmpl @dirname=File.dirname(@basename) @basename=File.basename(@basename) #p @basename @basename_orig=basename_tmpl_orig @dirname_orig=File.dirname(@basename_orig) @basename_orig=File.basename(@basename_orig) #p @basename_orig # read content of the template @content=File.read(@cfg[:filename_tmpl]) end # list of Document objects #puts "@doc_list (init)";p @doc_list @doc_list.each do |kdoc| @docs[kdoc]=Document.new(kdoc,self) end end |
Instance Attribute Details
#basename ⇒ Object
Returns the value of attribute basename.
140 141 142 |
# File 'lib/dyndoc/document.rb', line 140 def basename @basename end |
#basename_orig ⇒ Object
Returns the value of attribute basename_orig.
140 141 142 |
# File 'lib/dyndoc/document.rb', line 140 def basename_orig @basename_orig end |
#cfg ⇒ Object
Returns the value of attribute cfg.
140 141 142 |
# File 'lib/dyndoc/document.rb', line 140 def cfg @cfg end |
#content ⇒ Object
Returns the value of attribute content.
140 141 142 |
# File 'lib/dyndoc/document.rb', line 140 def content @content end |
#dirname ⇒ Object
Returns the value of attribute dirname.
140 141 142 |
# File 'lib/dyndoc/document.rb', line 140 def dirname @dirname end |
#dirname_orig ⇒ Object
Returns the value of attribute dirname_orig.
140 141 142 |
# File 'lib/dyndoc/document.rb', line 140 def dirname_orig @dirname_orig end |
#docs ⇒ Object
Returns the value of attribute docs.
140 141 142 |
# File 'lib/dyndoc/document.rb', line 140 def docs @docs end |
#tmpl_mngr ⇒ Object
Returns the value of attribute tmpl_mngr.
140 141 142 |
# File 'lib/dyndoc/document.rb', line 140 def tmpl_mngr @tmpl_mngr end |
Instance Method Details
#basename_tmpl ⇒ Object
document basename from template filename
281 282 283 284 285 286 287 288 289 290 291 292 |
# File 'lib/dyndoc/document.rb', line 281 def basename_tmpl ##p @cfg[:filename_tmpl] mode=Dyndoc.guess_mode(@cfg[:filename_tmpl]) ##p ["mode",mode,Dyndoc.tmplExt[mode]] if mode name,ext=@cfg[:filename_tmpl].scan(/^(.*)(?:#{Dyndoc.tmplExt[mode].join("|")})$/).flatten.compact else name,ext=@cfg[:filename_tmpl].scan(/^(.*)(?:_tmpl(\..*)|(\.dyn))$/).flatten.compact end #p [:name,@cfg[:filename_tmpl],name] name end |
#basename_tmpl_orig ⇒ Object
294 295 296 297 298 299 300 301 302 |
# File 'lib/dyndoc/document.rb', line 294 def basename_tmpl_orig mode=Dyndoc.guess_mode(@cfg[:filename_tmpl_orig]) if mode name,ext=@cfg[:filename_tmpl_orig].scan(/^(.*)(?:#{Dyndoc.tmplExt[mode].join("|")})$/).flatten.compact else name,ext=@cfg[:filename_tmpl_orig].scan(/^(.*)(?:_tmpl(\..*)|(\.dyn))$/).flatten.compact end name end |
#cfg_dyn_from(tmpl) ⇒ Object
236 237 238 239 240 241 242 243 |
# File 'lib/dyndoc/document.rb', line 236 def cfg_dyn_from(tmpl) code,cfg_file=nil,nil code=File.read(cfg_file) if (cfg_file=(Dyndoc::Utils.cfg_file_exist? tmpl)) ##puts "code";p code;p cfg_file Utils.clean_bom_utf8!(code) if code code="Dyndoc::TexDoc" unless code return cfg_dyn_from_code(code) end |
#cfg_dyn_from_code(code) ⇒ Object
217 218 219 220 221 222 223 224 |
# File 'lib/dyndoc/document.rb', line 217 def cfg_dyn_from_code(code) if code and code.is_a? String code="{\n"+code+"\n}" if code=~/\A\s*\:/m #to avoid at the beginning { and at the end }! ##p [code,Object.class_eval(code)] return Object.class_eval(code) end return nil end |
#cfg_dyn_from_lib(content) ⇒ Object
226 227 228 229 230 231 232 233 234 |
# File 'lib/dyndoc/document.rb', line 226 def cfg_dyn_from_lib(content) return {:cfg=> nil, :lib_dyn_content => content} if content.empty? tmp=content.force_encoding("utf-8").split(/\[\#/) if tmp[0].empty? and tmp[1][0...4]=="cfg]" return {:cfg=> tmp[1][4..-1], :lib_dyn_content => (tmp[0,1]+tmp[2..-1]).join('[#')} else return {:cfg=> nil, :lib_dyn_content => content} end end |
#lib_dyn_content_from(tmpl = nil) ⇒ Object
211 212 213 214 215 |
# File 'lib/dyndoc/document.rb', line 211 def lib_dyn_content_from(tmpl=nil) code,lib_file = "",nil code=File.read(lib_file) if (lib_file=(Dyndoc::Utils.lib_file_exist? tmpl)) return code end |
#make_all ⇒ Object
304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 |
# File 'lib/dyndoc/document.rb', line 304 def make_all if @cfg[:cmd].include? :list puts "document list: "+@cfg[:docs].keys.join(", ") return end # Added for docker mode ##OBSOLETE## Docker.init_task_file if Dyndoc.cfg_dyn[:docker_mode] ##puts "@doc_list"; p @doc_list @doc_list.each do |kdoc| @docs[kdoc].make_all end ##OBSOLETE## Docker.save_task_file if Dyndoc.cfg_dyn[:docker_mode] end |
#make_doc_list ⇒ Object
264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 |
# File 'lib/dyndoc/document.rb', line 264 def make_doc_list doc_list=@cfg[:docs].keys #puts "@cfg[doc_list]";p @cfg[:doc_list] doc_list &= @cfg[:doc_list] unless @cfg[:doc_list].empty? #p doc_list #deal with aliases doc_alias={} @cfg[:docs].each_pair{|key,doc| doc_alias[key]=doc if doc.is_a? Array } #puts "doc_alias";p doc_alias doc_list=doc_list.map{|key| (doc_alias[key] ? doc_alias[key] : key )}.flatten until (doc_list & doc_alias.keys).empty? @doc_list=doc_list #puts "doc_list";p @doc_list end |
#read_cfg(name, mode = :all) ⇒ Object
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/dyndoc/document.rb', line 176 def read_cfg(name,mode=:all) # cfg_dyn is the options given inside the master template cfg_dyn=nil name_tmpl=Dyndoc.name_tmpl(name,mode) #Dyndoc.warn "read_cfg:name_tmpl",[name,name_tmpl] if name_tmpl name_tmpl2=Dyndoc.directory_tmpl? name_tmpl if name_tmpl2 # test if [#cfg] block exists inside _lib.dyn file lib_dyn_content=lib_dyn_content_from(name_tmpl2) tmp=cfg_dyn_from_lib(lib_dyn_content) if tmp[:cfg] #p :cfg_from_lib cfg_dyn=cfg_dyn_from_code(tmp[:cfg]) lib_dyn_content=tmp[:lib_dyn_content] else cfg_dyn=cfg_dyn_from(name_tmpl2) end cfg_dyn[:filename_tmpl]=name_tmpl2 cfg_dyn[:lib_dyn_content]=lib_dyn_content else cfg_dyn=Dyndoc::TexDoc end cfg_dyn[:filename_tmpl_orig] = name_tmpl end #Dyndoc.warn "read_cfg:cfg_dyn",cfg_dyn #otherwise it is the default version! append_cfg(cfg_dyn) if cfg_dyn #read the optional cfg read_cmdline end |
#read_cmdline ⇒ Object
245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 |
# File 'lib/dyndoc/document.rb', line 245 def read_cmdline ##p [:read_cmdline,Dyndoc.cfg_dyn] cfg_cmdline={} cfg_cmdline[:doc_list]=Dyndoc.cfg_dyn[:doc_list] unless Dyndoc.cfg_dyn[:doc_list].empty? cfg_cmdline[:cmd]=Dyndoc.cfg_dyn[:cmd_doc] unless Dyndoc.cfg_dyn[:cmd_doc].empty? cfg_cmdline[:model_doc]=Dyndoc.cfg_dyn[:model_doc] unless Dyndoc.cfg_dyn[:model_doc].empty? cfg_cmdline[:exec_mode]=Dyndoc.cfg_dyn[:exec_mode] if Dyndoc.cfg_dyn[:exec_mode] and !Dyndoc.cfg_dyn[:exec_mode].empty? cfg_cmdline[:tag_tmpl]=Dyndoc.cfg_dyn[:tag_tmpl] unless Dyndoc.cfg_dyn[:tag_tmpl].empty? cfg_cmdline[:options]=Dyndoc.cfg_dyn[:options] unless Dyndoc.cfg_dyn[:options].empty? ## select doc_list by reading "[#default]" useful in atom if !@cfg[:content] and Dyndoc.cfg_dyn[:doc_list].empty? and Dyndoc.cfg_dyn[:tag_tmpl].empty? if File.read(@cfg[:filename_tmpl]).force_encoding("utf-8") =~ /^\[\#default\]([^\[]*)\[\#/ cfg_cmdline[:doc_list]=$1.strip.split(",").map{|e| e.strip} puts "Default document: "+cfg_cmdline[:doc_list].join(",") end end append_cfg(cfg_cmdline) end |