# encoding: utf-8 =begin * Name: SiSU ** Description: documents, structuring, processing, publishing, search *** system environment, resource control and configuration details ** Author: Ralph Amissah [ralph@amissah.com] [ralph.amissah@gmail.com] ** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Ralph Amissah, All Rights Reserved. ** License: GPL 3 or later: SiSU, a framework for document structuring, publishing and search Copyright (C) Ralph Amissah This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see [http://www.gnu.org/licenses/]. If you have Internet connection, the latest version of the GPL should be available at these locations: [http://www.fsf.org/licensing/licenses/gpl.html] [http://www.gnu.org/licenses/gpl.html] ** SiSU uses: * Standard SiSU markup syntax, * Standard SiSU meta-markup syntax, and the * Standard SiSU object citation numbering and system ** Hompages: [http://www.jus.uio.no/sisu] [http://www.sisudoc.org] ** Git [http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary] [http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/se_file_op.rb;hb=HEAD] =end module SiSU_Info_File require_relative 'utils' # utils.rb require_relative 'se_info_env' # se_info_env.rb begin require 'fileutils' include FileUtils::Verbose rescue LoadError SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). error('fileutils NOT FOUND (LoadError)') end class InfoFile < SiSU_Info_Env::InfoEnv # se_info_env.rb #todo unify with FileOp def initialize(fns) begin super(fns) @fns=fns @env=SiSU_Env::InfoEnv.new(@fns) m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm)$/ @fnn,@fnb,@fnt=@fns[m,1],@fns[m,2],@fns[m,3] rescue SiSU_Screen::Ansi.new('',$!,$@).rescue do __LINE__.to_s + ':' + __FILE__ end ensure end end def basefilename #Remove if possible m=/(.+?)\.(?:(?:-|ssm\.)?sst|ssm)$/m @fns[m,1] end def make_file(path,filename) (File.writable?("#{path}/.")) \ ? File.new("#{path}/#{filename}",'w+') : (SiSU_Screen::Ansi.new( '', "*WARN* is the file or directory writable?, could not create #{filename}" ).warn) end def touch_file(path,filename) if File.writable?("#{path}/."); FileUtils::touch("#{path}/#{filename}") else SiSU_Screen::Ansi.new( '', "*WARN* is the file or directory writable?, could not create #{filename}" ).warn end end def make_path(path) FileUtils::mkdir_p(path) unless FileTest.directory?(path) end def marshal def ao_content @env.processing_path.ao + '/' \ + @fns + '.content.rbm' end def ao_idx_sst_rel_html_seg @env.processing_path.ao + '/' \ + @fns + '.idx_sst.rbm' end def ao_idx_sst_rel #used by tex & odf @env.processing_path.ao + '/' \ + @fns + '.idx_raw.rbm' end def ao_idx_html @env.processing_path.ao + '/' \ + @fns + '.idx_html.rbm' end def ao_idx_xhtml @env.processing_path.ao + '/' \ + @fns + '.idx_xhtml.rbm' end def ao_metadata @env.processing_path.ao + '/' \ + @fns + '.metadata.rbm' end def ao_map_nametags @env.processing_path.ao + '/' \ + @fns + '.map_name_tags.rbm' end def ao_map_ocn_htmlseg @env.processing_path.ao + '/' \ + @fns + '.map_ocn_htmlseg.rbm' end def html_tune @env.processing_path.tune + '/' \ + @fns + '.marshal_tune' end def xhtml_tune @env.processing_path.tune + '/' \ + @fns + '.marshal_tune' end self end def write_file_processing def html_tune File.new("#{@env.processing_path.tune}/#{@fns}.tune",'w+') end self end def mkdir #check moved from FileOp, existing mkdir def processing def ao FileUtils::mkdir_p(@env.processing_path.ao) \ unless FileTest.directory?(@env.processing_path.ao) end def tune FileUtils::mkdir_p(@env.processing_path.tune) \ unless FileTest.directory?(@env.processing_path.tune) end self end end end end module SiSU_File_Op require_relative 'constants' # constants.rb require_relative 'utils' # utils.rb begin require 'fileutils' include FileUtils::Verbose rescue LoadError SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). error('fileutils NOT FOUND (LoadError)') end class FileOp < SiSU_Info_File::InfoFile #todo unify with CreateFile def initialize(md,fno='') begin @md,@fno=md,fno @env=SiSU_Env::InfoEnv.new(@md.fns) rescue SiSU_Screen::Ansi.new(md.opt.selections.str,$!,$@).rescue do __LINE__.to_s + ':' + __FILE__ end ensure end end def output_dir_structure SiSU_Env::ProcessingSettings.new(@md).output_dir_structure end def mkdir_initialize # not used but consider using FileUtils::mkdir_p(output_path.base.dir) \ unless FileTest.directory?(output_path.base.dir) FileUtils::mkdir_p("#{output_path.base.dir}/#{@md.fnb}") \ unless FileTest.directory?("#{output_path.base.dir}/#{@md.fnb}") FileUtils::mkdir_p("#{output_path.base.dir}/#{@env.path.style}") \ unless FileTest.directory?("#{output_path.base.dir}/#{@env.path.style}") FileUtils::mkdir_p(@env.processing_path.ao) \ unless FileTest.directory?(@env.processing_path.ao) FileUtils::mkdir_p(@env.processing_path.tune) \ unless FileTest.directory?(@env.processing_path.tune) end def path_rel_links def html_scroll_2 if output_dir_structure.by_language_code? '../../' elsif output_dir_structure.by_filetype? '../' else '../' end end def html_seg_2 if output_dir_structure.by_language_code? '../../../' elsif output_dir_structure.by_filetype? '../../' else '../' end end def html_scroll_1 if output_dir_structure.by_language_code? '../' elsif output_dir_structure.by_filetype? '../' else './' end end def html_seg_1 if output_dir_structure.by_language_code? '../../' elsif output_dir_structure.by_filetype? '../../' else './' end end def default_output_css if (@md.opt.opt_act[:dump][:bool] \ && @md.opt.opt_act[:dump][:inst]) \ || (@md.opt.opt_act[:redirect][:bool] \ && @md.opt.opt_act[:redirect][:inst]) './' elsif output_dir_structure.by_language_code? '../../' elsif output_dir_structure.by_filetype? '../' else '../' end end def html_scroll_css default_output_css end def xhtml_css default_output_css end def xml_css default_output_css end def html_seg_css if output_dir_structure.by_language_code? '../../../' elsif output_dir_structure.by_filetype? '../../' else '../' end end def manifest_css if output_dir_structure.by_language_code? '../../_sisu/css' elsif output_dir_structure.by_filetype? '' else '../' end end self end def mkdir def output def base FileUtils::mkdir_p(output_path.base.dir) \ unless FileTest.directory?(output_path.base.dir) end def css FileUtils::mkdir_p("#{output_path.base.dir}/#{@env.path.style}") \ unless FileTest.directory?("#{output_path.base.dir}/#{@env.path.style}") end def epub path=output_path.epub.dir make_path(path) end self end self end def mkfile #consider using more path="#{output_path.base.dir}/#{@md.fnb}" make_path(path) filename=@fno make_file(path,filename) end def mkfile_pwd path=Dir.pwd filename=@fno make_file(path,filename) end def write_file def txt path=output_path.txt.dir make_path(path) fn=base_filename.txt make_file(path,fn) end def textile path=output_path.textile.dir make_path(path) fn=base_filename.textile make_file(path,fn) end def asciidoc path=output_path.asciidoc.dir make_path(path) fn=base_filename.asciidoc make_file(path,fn) end def markdown path=output_path.markdown.dir make_path(path) fn=base_filename.markdown make_file(path,fn) end def rst path=output_path.rst.dir make_path(path) fn=base_filename.rst make_file(path,fn) end def orgmode path=output_path.orgmode.dir make_path(path) fn=base_filename.orgmode make_file(path,fn) end def html_scroll pth=output_path.html.dir make_path(pth) p_fn=place_file.html_scroll.dir File.new(p_fn,'w+') end def html_seg_index pth=((output_dir_structure.by_filename?) \ || (output_dir_structure.dump?)) \ ? "#{output_path.html.dir}" : "#{output_path.html.dir}/#{@md.fnb}" make_path(pth) p_fn=place_file.html_seg_index.dir File.new(p_fn,'w+') end def html_segtoc pth=((output_dir_structure.by_filename?) \ || (output_dir_structure.dump?) \ || (output_dir_structure.redirect?)) \ ? "#{output_path.html.dir}" : "#{output_path.html.dir}/#{@md.fnb}" make_path(pth) p_fn=place_file.html_segtoc.dir File.new(p_fn,'w+') end def xhtml path=output_path.xhtml.dir make_path(path) fn=base_filename.xhtml make_file(path,fn) end def xml_sax path=output_path.xml.dir make_path(path) fn=base_filename.xml_sax make_file(path,fn) end def xml_dom path=output_path.xml.dir make_path(path) fn=base_filename.xml_dom make_file(path,fn) end def xml_docbook_book path=output_path.xml_docbook_book.dir make_path(path) fn=base_filename.xml_docbook_book make_file(path,fn) end def xml_fictionbook path=output_path.xml_fictionbook.dir make_path(path) fn=base_filename.xml_fictionbook make_file(path,fn) end def xml_scaffold_structure_sisu path=output_path.xml_scaffold_structure_sisu.dir make_path(path) fn=base_filename.xml_scaffold_structure_sisu make_file(path,fn) end def xml_scaffold_structure_collapse path=output_path.xml_scaffold_structure_collapse.dir make_path(path) fn=base_filename.xml_scaffold_structure_collapse make_file(path,fn) end def json path=output_path.json.dir make_path(path) fn=base_filename.json make_file(path,fn) end def manpage path=output_path.manpage.dir make_path(path) fn=base_filename.manpage make_file(path,fn) end def texinfo path=output_path.texinfo.dir make_path(path) fn=base_filename.texinfo make_file(path,fn) end def info path=output_path.texinfo.dir make_path(path) fn=base_filename.info make_file(path,fn) end def hash_digest path=output_path.hash_digest.dir make_path(path) fn=base_filename.hash_digest make_file(path,fn) end def qrcode path=output_path.qrcode.dir make_path(path) fn=base_filename.qrcode make_file(path,fn) end def manifest path=output_path.manifest.dir make_path(path) fn=base_filename.manifest make_file(path,fn) end def manifest_txt path=output_path.manifest.dir make_path(path) fn=base_filename.manifest_txt make_file(path,fn) end def po4a_cfg path=output_path.po4a.dir make_path(path) fn=base_filename.po4a_cfg make_file(path,fn) end def pot path=output_path.pot.dir make_path(path) fn=base_filename.pot make_file(path,fn) end def po(lng=@md.opt.lng) path=output_path.po(lng).dir make_path(path) fn=base_filename.po make_file(path,fn) end def po4a_sst(lng=@md.opt.lng) path=output_path.po4a_sst(lng).dir make_path(path) fn=base_filename.po4a_sst make_file(path,fn) end self end def place_file def txt def dir output_path.txt.dir + '/' \ + base_filename.txt end def rel output_path.txt.rel + '/' \ + base_filename.txt end self end def textile def dir output_path.textile.dir + '/' \ + base_filename.textile end def rel output_path.textile.rel + '/' \ + base_filename.textile end self end def asciidoc def dir output_path.asciidoc.dir + '/' \ + base_filename.asciidoc end def rel output_path.asciidoc.rel + '/' \ + base_filename.asciidoc end self end def markdown def dir output_path.markdown.dir + '/' \ + base_filename.markdown end def rel output_path.markdown.rel + '/' \ + base_filename.markdown end self end def rst def dir output_path.rst.dir + '/' \ + base_filename.rst end def rel output_path.rst.rel + '/' \ + base_filename.rst end self end def orgmode def dir output_path.orgmode.dir + '/' \ + base_filename.orgmode end def rel output_path.orgmode.rel + '/' \ + base_filename.orgmode end self end def html_scroll def dir output_path.html_scroll.dir + '/' \ + base_filename.html_scroll end def rel output_path.html_scroll.rel + '/' \ + base_filename.html_scroll end self end def html_seg_index def dir output_path.html_seg.dir + '/' \ + base_filename.html_seg_index end def rel output_path.html_seg.rel + '/' \ + base_filename.html_seg_index end self end def html_segtoc def dir output_path.html_seg.dir + '/' \ + base_filename.html_segtoc end def rel output_path.html_seg.rel + '/' \ + base_filename.html_segtoc end self end def html_book_index def dir output_path.html_seg.dir + '/' \ + base_filename.html_book_index end def rel output_path.html_seg.rel + '/' \ + base_filename.html_book_index end self end def html_concordance def dir output_path.html_seg.dir + '/' \ + base_filename.html_concordance end def rel output_path.html_seg.rel + '/' \ + base_filename.html_concordance end self end def odt def dir output_path.odt.dir + '/' \ + base_filename.odt end def rel output_path.odt.rel + '/' \ + base_filename.odt end self end def epub def dir output_path.epub.dir + '/' \ + base_filename.epub end def rel output_path.epub.rel + '/' \ + base_filename.epub end self end def pdf_p STDERR.puts 'ERROR not available due to multiple page format sizes' end def pdf_l STDERR.puts 'ERROR not available due to multiple page format sizes' end def xhtml def dir output_path.xhtml.dir + '/' \ + base_filename.xhtml end def rel output_path.xhtml.rel + '/' \ + base_filename.xhtml end self end def xml_sax def dir output_path.xml.dir + '/' \ + base_filename.xml_sax end def rel output_path.xml.rel + '/' \ + base_filename.xml_sax end self end def xml_dom def dir output_path.xml.dir + '/' \ + base_filename.xml_dom end def rel output_path.xml.rel + '/' \ + base_filename.xml_dom end self end def xml_docbook_book def dir output_path.xml_docbook.dir + '/' \ + base_filename.xml_docbook_book end def rel output_path.xml_docbook.rel + '/' \ + base_filename.xml_docbook_book end self end def xml_fictionbook def dir output_path.xml_fictionbook.dir + '/' \ + base_filename.xml_fictionbook end def rel output_path.xml_fictionbook.rel + '/' \ + base_filename.xml_fictionbook end self end def xml_scaffold_structure_sisu def dir output_path.xml.dir + '/' \ + base_filename.xml_scaffold_structure_sisu end def rel output_path.xml.rel + '/' \ + base_filename.xml_scaffold_structure_sisu end self end def xml_scaffold_structure_collapse def dir output_path.xml.dir + '/' \ + base_filename.xml_scaffold_structure_collapse end def rel output_path.xml.rel + '/' \ + base_filename.xml_scaffold_structure_collapse end self end def json def dir output_path.json.dir + '/' \ + base_filename.json end def rel output_path.json.rel + '/' \ + base_filename.json end self end def sqlite_discrete def dir output_path.sqlite_discrete.dir + '/' \ + base_filename.sqlite_discrete end def rel output_path.sqlite_discrete.rel + '/' \ + base_filename.sqlite_discrete end self end def hash_digest def dir output_path.hash_digest.dir + '/' \ + base_filename.hash_digest end def rel output_path.hash_digest.rel + '/' \ + base_filename.hash_digest end self end def src def dir output_path.src.dir + '/' \ + base_filename.src end def rel output_path.src.rel + '/' \ + base_filename.src end self end def sisupod def dir output_path.sisupod.dir + '/' \ + base_filename.sisupod end def rel output_path.sisupod.rel + '/' \ + base_filename.sisupod end self end def po def dir output_path.po.dir + '/' \ + base_filename.po end def rel output_path.po.rel + '/' \ + base_filename.po end self end def pot def dir output_path.pot.dir + '/' \ + base_filename.pot end def rel output_path.pot.rel + '/' \ + base_filename.pot end self end def po_git def dir output_path.po_git + '/' \ + base_filename.po end def rel #output_path.po_git + '/' + base_filename.po end self end def pot_git def dir output_path.pot_git + '/' \ + base_filename.pot end def rel #output_path.pot_git + '/' + base_filename.pot end self end def manpage def dir output_path.manpage.dir + '/' \ + base_filename.manpage end def rel output_path.manpage.rel + '/' \ + base_filename.manpage end self end def texinfo def dir output_path.texinfo.dir + '/' \ + base_filename.texinfo end def rel output_path.texinfo.rel + '/' \ + base_filename.texinfo end self end def info def dir output_path.texinfo.dir + '/' \ + base_filename.info end def rel output_path.texinfo.rel + '/' \ + base_filename.info end self end def qrcode_title def dir output_path.qrcode.dir + '/' \ + base_filename.qrcode_title end def rel output_path.qrcode.rel + '/' \ + base_filename.qrcode_title end self end def qrcode_md def dir output_path.qrcode.dir + '/' \ + base_filename.qrcode_md end def rel output_path.qrcode.rel + '/' \ + base_filename.qrcode_md end self end def manifest def dir output_path.manifest.dir + '/' \ + base_filename.manifest end def rel output_path.manifest.rel + '/' \ + base_filename.manifest end self end self end def base_filename def i18n(f) f=default_hash.merge(f) f[:lng] ||=@md.lang_code_insert f[:fn] + f[:lng] + f[:ft] end def default_hash { fn: @md.fnb, lng: @md.lang_code_insert, } end def default_hash_build(fh,sfx) if fh.is_a?(Hash) fh[:fn] ||=@md.fnb fh[:lng] ||= @md.lang_code_insert fh[:ft]=sfx fh else { fn: @md.fnb, lng: @md.lang_code_insert, ft: sfx, } end end def lang_code?(lng) (output_dir_structure.by_language_code?) \ ? '' : (lng ||=@md.lang_code_insert) end def txt(fh=nil) fh=default_hash_build(fh,Sfx[:txt]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'plain', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def textile(fh=nil) fh=default_hash_build(fh,Sfx[:txt_textile]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'plain', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def asciidoc(fh=nil) fh=default_hash_build(fh,Sfx[:txt_asciidoc]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'plain', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def markdown(fh=nil) fh=default_hash_build(fh,Sfx[:txt_markdown]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'plain', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def rst(fh=nil) fh=default_hash_build(fh,Sfx[:txt_rst]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'plain', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def orgmode(fh=nil) fh=default_hash_build(fh,Sfx[:txt_orgmode]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'plain', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def html_scroll(fh=nil) fh=default_hash_build(fh,Sfx[:html]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'scroll', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def html_seg_index(fh=nil) fh=default_hash_build(fh,Sfx[:html]) fh[:lng]=lang_code?(fh[:lng]) fnh={ fn: 'index', ft: fh[:ft], lng: fh[:lng], } i18n(fnh) end def html_segtoc(fh=nil) fh=default_hash_build(fh,Sfx[:html]) fnh=if output_dir_structure.dump_or_redirect? { fn: fh[:fn] + '.toc', ft: fh[:ft], } else { fn: 'toc', ft: fh[:ft], lng: lang_code?(fh[:lng]), } end i18n(fnh) end def html_seg(fh) fh=default_hash_build(fh,Sfx[:html]) fh[:lng]=lang_code?(fh[:lng]) fnh={ fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } i18n(fnh) end def html_book_index(fh=nil) fh=default_hash_build(fh,Sfx[:html]) fh[:lng]=lang_code?(fh[:lng]) fnh={ fn: 'book_index', ft: fh[:ft], lng: fh[:lng], } i18n(fnh) end def html_concordance(fh=nil) fh=default_hash_build(fh,Sfx[:html]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.dump_or_redirect? { fn: 'concordance', ft: fh[:ft], } else { fn: 'concordance', ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def xhtml(fh=nil) fh=default_hash_build(fh,Sfx[:xhtml]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'scroll', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def epub(fh=nil) fh=default_hash_build(fh,Sfx[:epub]) fh[:lng]=lang_code?(fh[:lng]) fnh={ fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } i18n(fnh) end def odt(fh=nil) fh=default_hash_build(fh,Sfx[:odt]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'opendocument', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def xml_sax(fh=nil) fh=default_hash_build(fh,Sfx[:xml_sax]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'scroll', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def xml_dom(fh=nil) fh=default_hash_build(fh,Sfx[:xml_dom]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'scroll', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def xml_docbook_book(fh=nil) fh=default_hash_build(fh,Sfx[:xml_docbook_book]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'scroll', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def xml_fictionbook(fh=nil) fh=default_hash_build(fh,Sfx[:xml_fictionbook]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'scroll', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def xml_scaffold_structure_sisu(fh=nil) fh=default_hash_build(fh,Sfx[:xml_scaffold_structure_sisu]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'scroll', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def xml_scaffold_structure_collapse(fh=nil) fh=default_hash_build(fh,Sfx[:xml_scaffold_structure_collapse]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'scroll', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def json(fh=nil) fh=default_hash_build(fh,Sfx[:json]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'scroll', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def pdf_p(fh=nil) fh=default_hash_build(fh,Sfx[:pdf]) fh[:lng]=lang_code?(fh[:lng]) if output_dir_structure.by_filename? 'portrait' + fh[:lng] + '.' else fh[:fn] + '.portrait' + fh[:lng] + '.' end end def pdf_l(fh=nil) fh=default_hash_build(fh,Sfx[:pdf]) fh[:lng]=lang_code?(fh[:lng]) if output_dir_structure.by_filename? 'landscape' + fh[:lng] + '.' else fh[:fn] + '.landscape' + fh[:lng] + '.' end end def pdf_p_a4(fh=nil) pdf_p(fh) + @md.fn[:pdf_p_a4] end def pdf_p_a5(fh=nil) pdf_p(fh) + @md.fn[:pdf_p_a5] end def pdf_p_b5(fh=nil) pdf_p(fh) + @md.fn[:pdf_p_b5] end def pdf_p_letter(fh=nil) pdf_p(fh) + @md.fn[:pdf_p_letter] end def pdf_p_legal(fh=nil) pdf_p(fh) + @md.fn[:pdf_p_legal] end def pdf_l_a4(fh=nil) pdf_l(fh) + @md.fn[:pdf_l_a4] end def pdf_l_a5(fh=nil) pdf_l(fh) + @md.fn[:pdf_l_a5] end def pdf_l_b5(fh=nil) pdf_l(fh) + @md.fn[:pdf_l_b5] end def pdf_l_letter(fh=nil) pdf_l(fh) + @md.fn[:pdf_l_letter] end def pdf_l_legal(fh=nil) pdf_l(fh) + @md.fn[:pdf_l_legal] end def manpage(fh=nil) fh=default_hash_build(fh,Sfx[:manpage]) fh[:lng]=lang_code?(fh[:lng]) fnh={ fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } i18n(fnh) end def info(fh=nil) fh=default_hash_build(fh,Sfx[:info]) fh[:lng]=lang_code?(fh[:lng]) fnh={ fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } i18n(fnh) end def texinfo(fh=nil) fh=default_hash_build(fh,Sfx[:texinfo]) fh[:lng]=lang_code?(fh[:lng]) fnh={ fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } i18n(fnh) end def sqlite_discrete(fh=nil) fh=default_hash_build(fh,Sfx[:sql]) fh[:lng]=lang_code?(fh[:lng]) fnh={ fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } i18n(fnh) end def hash_digest(fh=nil) fh=default_hash_build(fh,Sfx[:txt]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_language_code? { fn: fh[:fn] + '.hash_digest', ft: fh[:ft], } elsif output_dir_structure.by_filetype? { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } else { fn: 'digest', ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def sitemap(fh=nil) fh=default_hash_build(fh,Sfx[:xml]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_language_code? { fn: fh[:fn] + '.sitemap', ft: fh[:ft], } elsif output_dir_structure.by_filetype? { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } else { fn: 'sitemap', ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def qrcode_title(fh=nil) fh=default_hash_build(fh,'.title.png') fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'sisu_manifest', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def qrcode_md #check name below fh=default_hash_build(fh,'.md.png') fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'sisu_manifest', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def manifest_txt(fh=nil) fh=default_hash_build(fh,Sfx[:txt]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.by_filename? { fn: 'sisu_manifest', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def manifest(fh=nil) fh=default_hash_build(fh,Sfx[:html]) fh[:lng]=lang_code?(fh[:lng]) fnh=if output_dir_structure.dump_or_redirect? { fn: fh[:fn] + '.manifest', ft: fh[:ft], lng: fh[:lng], } elsif output_dir_structure.by_filename? { fn: 'sisu_manifest', ft: fh[:ft], lng: fh[:lng], } else { fn: fh[:fn], ft: fh[:ft], lng: fh[:lng], } end i18n(fnh) end def src @md.fno end def po4a_cfg 'po4a.cfg' end def po #check (@fno.empty?) \ ? (@md.fn[:po]) : (@fno + '.po') end def pot (@fno.empty?) \ ? (@md.fn[:pot]) : (@fno + '.pot') end def po4a_sst #check @fno end def sisupod (@md.fns =~/\.ssm\.sst$/) \ ? @md.fns.gsub(/(?:\~\S{2,3})?\.ssm\.sst$/,'.ssm.txz') : @md.fns.gsub(/(?:\~\S{2,3})?(\.sst)$/,'\1.txz') end self end def set_path(ft) @ft=ft def dir def abc if output_dir_structure.redirect? @md.opt.opt_act[:redirect][:inst] + '/' + @md.fnb elsif output_dir_structure.dump? @md.opt.opt_act[:dump][:inst] elsif output_dir_structure.by_language_code? output_path.base.dir + '/' + @md.opt.lng + '/' + @ft elsif output_dir_structure.by_filetype? output_path.base.dir + '/' + @ft else output_path.base.dir + '/' + @md.fnb end end def ab if output_dir_structure.redirect? @md.opt.opt_act[:redirect][:inst] + '/' + @md.fnb elsif output_dir_structure.dump? @md.opt.opt_act[:dump][:inst] elsif output_dir_structure.by_language_code? output_path.base.dir + '/' + @md.opt.lng + '/' + @ft else output_path.base.dir + '/' + @ft end end def ab_src if output_dir_structure.redirect? @md.opt.opt_act[:redirect][:inst] + '/' + @md.fnb elsif output_dir_structure.dump? @md.opt.opt_act[:dump][:inst] else output_path.base.dir + '/' \ + @ft + '/' \ + @md.opt.fng + '/' \ + Gt[:sisupod] + '/' \ + Gt[:doc] + '/' \ + @md.opt.lng end end def ab_pod if output_dir_structure.redirect? @md.opt.opt_act[:redirect][:inst] + '/' + @md.fnb elsif output_dir_structure.dump? @md.opt.opt_act[:dump][:inst] else output_path.base.dir + '/' + @ft end end self end def url def abc if output_dir_structure.by_language_code? output_path.base.url + '/' + @md.opt.lng + '/' + @ft elsif output_dir_structure.by_filetype? output_path.base.url + '/' + @ft else output_path.base.url + '/' + @md.fnb end end def ab if output_dir_structure.by_language_code? output_path.base.url + '/' + @md.opt.lng + '/' + @ft else output_path.base.url + '/' + @ft end end def ab_src output_path.base.url + '/' \ + @ft + '/' \ + @md.opt.fng + '/' \ + Gt[:sisupod] + '/' \ + Gt[:doc] + '/' \ + @md.opt.lng end def ab_pod output_path.base.url + '/' + @ft end self end def rel def abc if output_dir_structure.by_language_code? @md.opt.lng + '/' + @ft elsif output_dir_structure.by_filetype? @ft else @md.fnb end end def ab if output_dir_structure.by_language_code? @md.opt.lng + '/' + @ft else @ft end end def ab_src @ft end def ab_pod @ft end self end def rel_sm def abc if output_dir_structure.by_language_code? @md.opt.lng + '/' + @ft elsif output_dir_structure.by_filetype? @ft else @md.fnb end end def ab if output_dir_structure.dump_or_redirect? '.' elsif output_dir_structure.by_language_code? \ or output_dir_structure.by_filetype? '../' + @ft else '.' end end def ab_src locate="#{@ft}/#{@md.opt.fng}/#{Gt[:sisupod]}/#{Gt[:doc]}/#{@md.opt.lng}" if output_dir_structure.dump_or_redirect? '.' elsif output_dir_structure.by_language_code? '../../' + locate else '../' + locate end end def ab_pod if output_dir_structure.dump_or_redirect? '.' elsif output_dir_structure.by_language_code? '../../' + @ft else '../' + @ft end end self end def rcp def abc if output_dir_structure.by_language_code? output_path.stub.rcp + '/' + @md.opt.lng + '/' + @ft elsif output_dir_structure.by_filetype? output_path.stub.rcp + '/' + @ft else output_path.stub.rcp + '/' + @md.fnb end end def ab if output_dir_structure.by_language_code? output_path.stub.rcp + '/' + @md.opt.lng + '/' + @ft else output_path.stub.rcp + '/' + @ft end end self end self end def output_path def web_base def dir @env.path.webserv end def url #"#{@env.url.root}" end def rel '.' end def rcp '.' end self end def stub def dir @md.opt.f_pth[:pth_stub] end #def url # "#{@env.url.root}" #end def rel './' + @md.opt.f_pth[:pth_stub] end def rcp @md.opt.f_pth[:pth_stub] end self end def webserver_path if output_dir_structure.dump? @md.opt.opt_act[:dump][:inst] elsif output_dir_structure.redirect? @md.opt.opt_act[:redirect][:inst] else @env.path.webserv end end def base def dir webserver_path + '/' + @md.opt.f_pth[:pth_stub] end def url @env.url.webserv + '/' + @md.opt.f_pth[:pth_stub] end def rel './' + @md.opt.f_pth[:pth_stub] end def rcp './' + @md.opt.f_pth[:pth_stub] end self end def sisugit def dir output_path.base.dir + '/git' end def url output_path.base.url + '/git' end def rel output_path.base.rel + '/git' end def rcp output_path.base.rcp + '/git' end self end #def pod # ft='pod' # path=set_path(ft).dir.ab #end def src def ft Gt[:src] end def dir set_path(ft).dir.ab_src end def url set_path(ft).url.ab_src end def rel set_path(ft).rel.ab_src end def rcp set_path(ft).rcp.ab_src end def rel_sm set_path(ft).rel_sm.ab_src end self end def sisupod def ft Gt[:src] end def dir set_path(ft).dir.ab_pod end def url set_path(ft).url.ab_pod end def rel set_path(ft).rel.ab_pod end def rcp set_path(ft).rcp.ab_pod end def rel_sm set_path(ft).rel_sm.ab_pod end self end def po4a def dir output_path.base.dir + '/' \ + Gt[:src] + '/' \ + @md.opt.fng + '/po4a' end def url output_path.base.url + '/po4a/' \ + @md.fnb end def rcp #p "#{output_path.base.dir}/po4a/#{@md.fnb}" end self end def po(lng=@md.opt.lng) @lng=lng def dir output_path.base.dir + '/' \ + Gt[:src] + '/' \ + @md.opt.fng + '/po4a/po/' \ + @lng end def url output_path.base.url + '/po4a/' \ + @md.fnb + '/po/' \ + @lng end self end def pot def dir output_path.base.dir + '/' \ + Gt[:src] + '/' \ + @md.opt.fng + '/po4a/pot' end def url output_path.base.url + '/po4a/' \ + @md.fnb + '/pot' end def rcp #p "#{output_path.base.dir}/po4a/#{@md.fnb}/pot" end self end def po_git # consider !!! def ft Gt[:po] end def dir pth=@env.processing_path.git + '/' \ + @md.fnb + '/' \ + ft + '/' \ + @md.opt.lng FileUtils::mkdir_p(pth) unless FileTest.directory?(pth) pth end self end def pot_git # consider !!! def ft Gt[:pot] end def dir @env.processing_path.git + '/' \ + @md.fnb + '/' \ + ft end self end def po4a_sst(lng=@md.opt.lng) @lng=lng def dir output_path.base.dir + '/' \ + Gt[:src] + '/' \ + @md.opt.fng + '/po4a/' \ + @lng end def url output_path.base.url + '/po4a/' \ + @md.fnb \ + @lng end self end def md_harvest manifest self end def txt def ft 'txt' end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end self end def textile def ft 'textile' \ + DEVELOPER[:under_construction] end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end self end def asciidoc def ft 'asciidoc' \ + DEVELOPER[:under_construction] end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end self end def markdown def ft 'markdown' \ + DEVELOPER[:under_construction] end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end self end def rst def ft 'rst' \ + DEVELOPER[:under_construction] end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end self end def orgmode def ft 'orgmode' \ + DEVELOPER[:under_construction] end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end self end def html_scroll def ft 'html' end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end def rel_image if output_dir_structure.dump_or_redirect? './image' elsif output_dir_structure.by_language_code? '../../_sisu/image' elsif output_dir_structure.by_filetype? '../_sisu/image' else '../_sisu/image' end end self end def html_seg def ft 'html/' + @md.fnb end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end def rel_image if output_dir_structure.dump_or_redirect? './image' elsif output_dir_structure.by_language_code? '../../../_sisu/image' elsif output_dir_structure.by_filetype? '../../_sisu/image' else '../_sisu/image' end end self end def html_concordance html_seg self end def html def ft 'html' end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).url.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end def rel_image if output_dir_structure.by_language_code? '../../_sisu/image' elsif output_dir_structure.by_filetype? '../_sisu/image' else '../_sisu/image' end end self end def xhtml def ft 'xhtml' end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end def rel_image '../../_sisu/image' end self end def epub def ft 'epub' end def dir set_path(ft).dir.ab end def url set_path(ft).url.ab end def rel set_path(ft).rel.ab end def rcp set_path(ft).rcp.ab end def rel_sm set_path(ft).rel_sm.ab end def rel_image './image' end self end def odt def ft 'odt' end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end self end def xml def ft 'xml' end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end def rel_image '../../_sisu/image' end self end def xml_sax xml self end def xml_dom xml self end def xml_docbook def ft 'docbook' end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end def rel_image '../../_sisu/image' end self end def xml_docbook_article def ft 'docbook' \ + DEVELOPER[:under_construction] end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end def rel_image '../../_sisu/image' end self end def xml_docbook_book def ft 'docbook' end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end def rel_image '../../_sisu/image' end self end def xml_fictionbook def ft 'fictionbook' \ + DEVELOPER[:under_construction] end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end def rel_image '../../_sisu/image' end self end def xml_scaffold_structure_sisu def ft 'sisu.scaffold.xml' #'xml' end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end def rel_image '../../_sisu/image' end self end def xml_scaffold_structure_collapse def ft 'collapsed.scaffold.xml' #'xml' end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end def rel_image '../../_sisu/image' end self end def json def ft 'json' end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end def rel_image '../../_sisu/image' end self end def pdf def ft 'pdf' end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end self end def sqlite_discrete def ft 'sql' end def dir set_path(ft).dir.ab end def url set_path(ft).url.ab end def rel set_path(ft).rel.ab end def rcp set_path(ft).rcp.ab end def rel_sm set_path(ft).rel_sm.ab end self end def hash_digest def ft 'hashes' end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end self end def manifest def ft 'manifest' end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rel_image if output_dir_structure.dump_or_redirect? './image' elsif output_dir_structure.by_language_code? '../../_sisu/image' elsif output_dir_structure.by_filetype? '../_sisu/image' else '../_sisu/image' end end def rcp set_path(ft).rcp.abc end self end def qrcode def ft 'manifest/qrcode' end def dir set_path(ft).dir.abc end def url set_path(ft).url.abc end def rel set_path(ft).rel.abc end def rcp set_path(ft).rcp.abc end def rel_sm set_path(ft).rel_sm.ab end self end def harvest def ft 'site_metadata' end def dir set_path(ft).dir.ab end def url set_path(ft).url.ab end def rel set_path(ft).rel.ab end def rcp set_path(ft).rcp.ab end def rel_sm if output_dir_structure.by_language_code? '' elsif output_dir_structure.by_filetype? '' else '' end end self end def manpage def ft 'man' end def dir set_path(ft).dir.ab end def url set_path(ft).url.ab end def rel set_path(ft).rel.ab end def rcp set_path(ft).rcp.ab end def rel_sm set_path(ft).rel_sm.ab end self end def texinfo def ft 'texinfo' end def dir set_path(ft).dir.ab end def url set_path(ft).url.ab end def rel set_path(ft).rel.ab end def rcp set_path(ft).rcp.ab end def rel_sm set_path(ft).rel_sm.ab end self end def sitemaps def ft 'sitemaps' end def dir set_path(ft).dir.ab end def url set_path(ft).url.ab end def rel set_path(ft).rel.ab end def rcp set_path(ft).rcp.ab end self end def sqlite #check url def dir output_path.base.dir end def url output_path.base.url end def rel output_path.base.rel end def rcp output_path.base.rcp end self end #def cgi #end def css @d='_sisu/css' def dir output_path.base.dir + '/' + @d end def url output_path.base.url + '/' + @d end def rel @d #output_path.base.rel + '/' + @d end def rcp output_path.stub.rcp + '/' + @d end self end def images @d='_sisu/image' def dir output_path.base.dir + '/' + @d end def url output_path.base.url + '/' + @d end def rel @d #output_path.base.rel + '/' + @d end def rcp output_path.stub.rcp + '/' + @d end self end def images_external @d='_sisu/image_external' def dir output_path.base.dir + '/' + @d end def url output_path.base.url + '/' + @d end def rel output_path.base.rel + '/' + @d end def rcp output_path.base.rcp + '/' + @d end self end #def css # #"#{@env.path.output}/#{@env.path.style}" #end self end end end module SiSU_Create_File require_relative 'constants' # constants.rb require_relative 'utils' # utils.rb require_relative 'se_info_env' # se_info_env.rb class CreateFile < SiSU_Info_Env::InfoEnv # se_info_env.rb #todo unify with FileOp def initialize(fns) begin super(fns) @env=SiSU_Env::InfoEnv.new(fns) rescue SiSU_Screen::Ansi.new('',$!,$@).rescue do __LINE__.to_s + ':' + __FILE__ end ensure end end def html_root #@env.path.output end def mkdir_pdf Dir.mkdir(@env.processing_path.tex) \ unless FileTest.directory?(@env.processing_path.tex) end def file_generic(output_file='') fn=@env.path.output + '/' \ + @fnb + '/' \ + output_file File.new(fn,'w+') end def file_error fn='/tmp/errorlog.sisu' File.new(fn,'w+') end def file_txt fn=@env.processing_path.ao + '/' \ + @fns + '.txt' File.new(fn,'w+') end def file_debug fn=@env.processing_path.ao + '/' \ + @fns + '.debug.txt' File.new(fn,'w+') end def metaverse def file_meta fn=@env.processing_path.ao + '/' \ + @fns + '.meta' File.new(fn,'w+') end def file_meta_idx_html fn=@env.processing_path.ao + '/' \ + @fns + '.idx.html' File.new(fn,'w+') end self end def file_note fn=Dir.pwd + '/' \ + @fns + '.fn' File.new(fn,'w+') end def meta @env.processing_path.ao + '/' \ + @fns + '.meta' end def file_semantic fn='./semantic.yaml' File.new(fn,'w+') end def file_rss fn='./semantic.xml' File.new(fn,'w+') end def epub @pth=@env.processing_path.epub def xhtml_index fn=@pth + '/' \ + Ep[:d_oebps] + '/index.xhtml' File.new(fn,'w+') end def xhtml_cover_image fn=@pth + '/' \ + Ep[:d_oebps] + '/cover_image.xhtml' File.new(fn,'w+') end def xhtml_segtoc fn=@pth + '/' \ + Ep[:d_oebps] + '/toc.xhtml' File.new(fn,'w+') end def mimetype #fixed application/epub+zip ~/grotto/theatre/dbld/builds/epub_sample/mimetype File.new("#{@pth}/mimetype",'w') end def metadata #variable matadata ~/grotto/theatre/dbld/builds/epub_sample/metadata.opf fn=@pth + '/' \ + Ep[:d_oebps] + '/' \ + Ep[:f_opf] File.new(fn,'w') end def toc_ncx #variable toc ~/grotto/theatre/dbld/builds/epub_sample/toc.ncx fn=@pth + '/' \ + Ep[:d_oebps] + '/' \ + Ep[:f_ncx] File.new(fn,'w') end def metainf_cont #variable content ~/grotto/theatre/dbld/builds/epub_sample/META-INF/container.xml fn=@pth + '/META-INF/container.xml' File.new(fn,'w') end def xhtml_css #fixed epub xhtml css fn=@pth + '/' \ + Ep[:d_oebps] + '/css/xhtml.css' File.new(fn,'w') end self end def file_texinfo fn=@env.processing_path.texinfo + '/' \ + @fnb + '.texinfo' File.new(fn,'w+') end end end module SiSU_Filename_Lang require_relative 'constants' # constants.rb require_relative 'utils' # utils.rb class FilenameLanguageCodeInsert def initialize(opt,lng=nil) @opt=opt @lng=lng ||=opt.lng end def language_code_insert if @opt.dir_structure_by ==:language \ or ((@opt.dir_structure_by ==:filetype \ || @opt.dir_structure_by ==:filename) \ and (@opt.lingual ==:mono \ && @lng == @opt.act[:default_language][:code])) '' elsif (@opt.dir_structure_by ==:filetype \ || @opt.dir_structure_by ==:filename) \ and not @opt.lingual ==:mono '.' + @lng else '.' + @lng end end end end __END__