From 4db4dcc886b85bf9db43d66025452fb33c94a9dd Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Wed, 26 Nov 2014 09:12:11 -0500 Subject: c&d: project dir structure, libs moved under new branch names * libs & version files under new branch names: current & develop * previously under branch version numbers (v5|v6) * version .yml files moved * associated adjustments made as required, notably to: bin/sisu se* qi* (file headers); breakage potential, testing required * [on dir names, want release to (alphabetically) precede next/development, considered (cur|dev) (current|(dev|development|progress|next)) (stable|unstable), alpha sorting fail (release|(next|develop))] --- lib/sisu/develop/se_file_op.rb | 2660 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2660 insertions(+) create mode 100644 lib/sisu/develop/se_file_op.rb (limited to 'lib/sisu/develop/se_file_op.rb') diff --git a/lib/sisu/develop/se_file_op.rb b/lib/sisu/develop/se_file_op.rb new file mode 100644 index 00000000..01d72c19 --- /dev/null +++ b/lib/sisu/develop/se_file_op.rb @@ -0,0 +1,2660 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** system environment, resource control and configuration details + +** Author: Ralph Amissah + + + +** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 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 . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + +** Hompages: + + + +** Git + + + +=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 html_scroll + pth=output_path.html.dir + make_path(pth) + p_fn=place_file.html_scroll.dir + @@filename_html_scroll=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 + @@filename_html_index=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 + @@filename_html_index=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 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 pot + path=output_path.pot.dir + make_path(path) + fn=base_filename.pot + make_file(path,fn) + end + def po + path=output_path.po.dir + make_path(path) + fn=base_filename.po + 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 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 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 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=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_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 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 po #check + (@fno.empty?) \ + ? (@md.fn[:po]) + : (@fno + '.po') + end + def pot + (@fno.empty?) \ + ? (@md.fn[:pot]) + : (@fno + '.pot') + 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 po + def dir + output_path.base.dir + '/' \ + + Gt[:src] + '/' \ + + @md.opt.fng + '/po4a/po/' \ + + @md.opt.lng + end + def url + output_path.base.url + '/po4a/' \ + + @md.fnb + '/po/' \ + + @md.opt.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 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 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 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' + @@filename_semantic=File.new(fn,'w+') + end + def file_rss + fn='./semantic.xml' + @@filename_rss=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__ -- cgit v1.2.3 From a37a13fbe35be7b9a340520d313ec8a8a576a41f Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Thu, 20 Nov 2014 22:53:19 -0500 Subject: d: orgmode, add orgmode structure output to txts --- lib/sisu/develop/se_file_op.rb | 57 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'lib/sisu/develop/se_file_op.rb') diff --git a/lib/sisu/develop/se_file_op.rb b/lib/sisu/develop/se_file_op.rb index 01d72c19..38b52f98 100644 --- a/lib/sisu/develop/se_file_op.rb +++ b/lib/sisu/develop/se_file_op.rb @@ -347,6 +347,12 @@ module SiSU_File_Op 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) @@ -526,6 +532,17 @@ module SiSU_File_Op 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 + '/' \ @@ -961,6 +978,24 @@ module SiSU_File_Op 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]) @@ -1887,6 +1922,28 @@ module SiSU_File_Op 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' -- cgit v1.2.3 From 7d9281ca1cda283b24257e5fde7e269e592662a1 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Tue, 9 Dec 2014 19:09:11 -0500 Subject: c&d: html, output by filename, filenames, fix --- lib/sisu/develop/se_file_op.rb | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) (limited to 'lib/sisu/develop/se_file_op.rb') diff --git a/lib/sisu/develop/se_file_op.rb b/lib/sisu/develop/se_file_op.rb index 38b52f98..1555d119 100644 --- a/lib/sisu/develop/se_file_op.rb +++ b/lib/sisu/develop/se_file_op.rb @@ -1043,19 +1043,11 @@ module SiSU_File_Op def html_seg(fh) 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 + fnh={ + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } i18n(fnh) end def html_book_index(fh=nil) -- cgit v1.2.3 From a25c64083c10dc2b2b02fcee06b1e305a379ce90 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Wed, 31 Dec 2014 08:50:09 -0500 Subject: d: po4a, continue reorganization (translation request dev stopped) * --po4a run against different language versions of sisu markup files (representing the same document in different languages) initializes po4a structure to place those documents under future po4a management * includes command line translation request (use command line program 'trans' to pass request to translation.google.com, stopped for now) NOTE in case future development is restarted: to test, remove code line 'auto_translate?(:skip)' that follows 'def auto_translation(src_txt,markup=:src)'; place identical english sisu markup files in en/test.sst fr/test.sst (or under the language code to be tested) and run against en/test.sst fr/test.sst e.g. '--po4a --trans --glob test.sst' this send identical text objects to translate.google using 'trans' and populate po file with results for placing future translation under po4a management, however in initial tests insufficient cleanly translated paragraphs were returned, so stopped development for now. (no attempt at initialization of new non-existent files using --trans-en:es,fr,de format) * [hub_options, if development of trans is pursued later consider the possibility of modifying the --trans string options to add an optional timeout value, &; possibly modifying po4a code so timeout may occur a fixed number of times before skipping translation request attempts for the remainder]. --- lib/sisu/develop/se_file_op.rb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'lib/sisu/develop/se_file_op.rb') diff --git a/lib/sisu/develop/se_file_op.rb b/lib/sisu/develop/se_file_op.rb index 1555d119..585a1c12 100644 --- a/lib/sisu/develop/se_file_op.rb +++ b/lib/sisu/develop/se_file_op.rb @@ -468,8 +468,8 @@ module SiSU_File_Op fn=base_filename.pot make_file(path,fn) end - def po - path=output_path.po.dir + def po(lng=@md.opt.lng) + path=output_path.po(lng).dir make_path(path) fn=base_filename.po make_file(path,fn) @@ -1747,17 +1747,18 @@ module SiSU_File_Op end self end - def po + def po(lng=@md.opt.lng) + @lng=lng def dir output_path.base.dir + '/' \ + Gt[:src] + '/' \ + @md.opt.fng + '/po4a/po/' \ - + @md.opt.lng + + @lng end def url output_path.base.url + '/po4a/' \ + @md.fnb + '/po/' \ - + @md.opt.lng + + @lng end self end -- cgit v1.2.3 From 01ce3c47e2d4e8fe3fe0b487cd847dc9588d660a Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Sun, 11 Jan 2015 08:51:54 -0500 Subject: c&d: some cruft --- lib/sisu/develop/se_file_op.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'lib/sisu/develop/se_file_op.rb') diff --git a/lib/sisu/develop/se_file_op.rb b/lib/sisu/develop/se_file_op.rb index 585a1c12..22a6f778 100644 --- a/lib/sisu/develop/se_file_op.rb +++ b/lib/sisu/develop/se_file_op.rb @@ -357,7 +357,7 @@ module SiSU_File_Op pth=output_path.html.dir make_path(pth) p_fn=place_file.html_scroll.dir - @@filename_html_scroll=File.new(p_fn,'w+') + File.new(p_fn,'w+') end def html_seg_index pth=((output_dir_structure.by_filename?) \ @@ -366,7 +366,7 @@ module SiSU_File_Op : "#{output_path.html.dir}/#{@md.fnb}" make_path(pth) p_fn=place_file.html_seg_index.dir - @@filename_html_index=File.new(p_fn,'w+') + File.new(p_fn,'w+') end def html_segtoc pth=((output_dir_structure.by_filename?) \ @@ -376,7 +376,7 @@ module SiSU_File_Op : "#{output_path.html.dir}/#{@md.fnb}" make_path(pth) p_fn=place_file.html_segtoc.dir - @@filename_html_index=File.new(p_fn,'w+') + File.new(p_fn,'w+') end def xhtml path=output_path.xhtml.dir @@ -2626,11 +2626,11 @@ module SiSU_Create_File end def file_semantic fn='./semantic.yaml' - @@filename_semantic=File.new(fn,'w+') + File.new(fn,'w+') end def file_rss fn='./semantic.xml' - @@filename_rss=File.new(fn,'w+') + File.new(fn,'w+') end def epub @pth=@env.processing_path.epub -- cgit v1.2.3 From 6ae231652eab49b41d3209960095a67dbd927822 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Tue, 13 Jan 2015 17:04:45 -0500 Subject: d: po4a, provide po4a.cfg file --- lib/sisu/develop/se_file_op.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'lib/sisu/develop/se_file_op.rb') diff --git a/lib/sisu/develop/se_file_op.rb b/lib/sisu/develop/se_file_op.rb index 22a6f778..6b134635 100644 --- a/lib/sisu/develop/se_file_op.rb +++ b/lib/sisu/develop/se_file_op.rb @@ -462,6 +462,12 @@ module SiSU_File_Op 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) @@ -1446,6 +1452,9 @@ module SiSU_File_Op def src @md.fno end + def po4a_cfg + 'po4a.cfg' + end def po #check (@fno.empty?) \ ? (@md.fn[:po]) @@ -1747,6 +1756,21 @@ module SiSU_File_Op 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 -- cgit v1.2.3 From 45d6d69d89fb6a8ad36be13f22c6af0b2a7cbc9a Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Thu, 15 Jan 2015 23:38:04 -0500 Subject: d: po4a, initialize either directly with sst or passed through ao * creates source language directory with source markup files (.sst .ssm .ssi) & the po4a.cfg configuration file, then runs po4a to place the markup source under po4a translation management * --po4a-sst uses original sisu markup source as described above * --po4a-ao passes sisu source markup through document abstraction before converting back to a sisu markup source markup equivalent of the original document, it does this in an attempt to get more uniform output, and put footnotes for example if any in a form that is easier to translate --po4a-ao -v --trans-en:fr,es en/live-manual.ssm --po4a-ao -v --trans-en:fr,es en/live-manual.ssm \ es/live-manual.ssm in the latter example also runs sisu marked up "es" document through document abstraction and returns a sisu markup source version of the document, and against this gettext is (or can be run) to (attempt to) have the source and target languages together in the po/es file * all quite rough, will need to be revisited, * these for now replace the renamed --po4a-shelf (formerly --po4a) --- lib/sisu/develop/se_file_op.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'lib/sisu/develop/se_file_op.rb') diff --git a/lib/sisu/develop/se_file_op.rb b/lib/sisu/develop/se_file_op.rb index 6b134635..342f75f1 100644 --- a/lib/sisu/develop/se_file_op.rb +++ b/lib/sisu/develop/se_file_op.rb @@ -480,6 +480,12 @@ module SiSU_File_Op 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 @@ -1465,6 +1471,9 @@ module SiSU_File_Op ? (@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') @@ -1826,6 +1835,21 @@ module SiSU_File_Op 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 -- cgit v1.2.3