summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2014-07-23 01:41:23 +0000
committerRalph Amissah <ralph@amissah.com>2014-07-23 01:41:23 +0000
commitab10de391027505bd4dd373ddf07572a195c728e (patch)
tree81bd427b40b10bb58e4042c1cbddec7a359426ee
parentv5 v6: db, pqsl, sqlite, reorganise triggers (diff)
downloadsisu-ab10de391027505bd4dd373ddf07572a195c728e.zip
sisu-ab10de391027505bd4dd373ddf07572a195c728e.tar.xz
v5 v6: sysenv, reorganise, break up file, multiple se_* files
-rw-r--r--data/doc/sisu/CHANGELOG_v53
-rw-r--r--data/doc/sisu/CHANGELOG_v63
-rw-r--r--lib/sisu/v5/se_cleanoutput.rb151
-rw-r--r--lib/sisu/v5/se_clear.rb112
-rw-r--r--lib/sisu/v5/se_createsite.rb275
-rw-r--r--lib/sisu/v5/se_css.rb227
-rw-r--r--lib/sisu/v5/se_date.rb98
-rw-r--r--lib/sisu/v5/se_db.rb215
-rw-r--r--lib/sisu/v5/se_envcall.rb329
-rw-r--r--lib/sisu/v5/se_file_op.rb2662
-rw-r--r--lib/sisu/v5/se_filemap.rb247
-rw-r--r--lib/sisu/v5/se_get_init.rb235
-rw-r--r--lib/sisu/v5/se_info_env.rb2164
-rw-r--r--lib/sisu/v5/se_info_port.rb76
-rw-r--r--lib/sisu/v5/se_info_system.rb206
-rw-r--r--lib/sisu/v5/se_load.rb114
-rw-r--r--lib/sisu/v5/se_processing.rb521
-rw-r--r--lib/sisu/v5/se_programs.rb384
-rw-r--r--lib/sisu/v5/se_remotes.rb559
-rw-r--r--lib/sisu/v5/se_standardise_lang.rb182
-rw-r--r--lib/sisu/v5/se_version.rb158
-rw-r--r--lib/sisu/v5/sysenv.rb7525
-rw-r--r--lib/sisu/v6/se_cleanoutput.rb151
-rw-r--r--lib/sisu/v6/se_clear.rb112
-rw-r--r--lib/sisu/v6/se_createsite.rb275
-rw-r--r--lib/sisu/v6/se_css.rb227
-rw-r--r--lib/sisu/v6/se_date.rb98
-rw-r--r--lib/sisu/v6/se_db.rb215
-rw-r--r--lib/sisu/v6/se_envcall.rb329
-rw-r--r--lib/sisu/v6/se_file_op.rb2662
-rw-r--r--lib/sisu/v6/se_filemap.rb247
-rw-r--r--lib/sisu/v6/se_get_init.rb235
-rw-r--r--lib/sisu/v6/se_info_env.rb2164
-rw-r--r--lib/sisu/v6/se_info_port.rb76
-rw-r--r--lib/sisu/v6/se_info_system.rb206
-rw-r--r--lib/sisu/v6/se_load.rb114
-rw-r--r--lib/sisu/v6/se_processing.rb521
-rw-r--r--lib/sisu/v6/se_programs.rb384
-rw-r--r--lib/sisu/v6/se_remotes.rb559
-rw-r--r--lib/sisu/v6/se_standardise_lang.rb182
-rw-r--r--lib/sisu/v6/se_version.rb158
-rw-r--r--lib/sisu/v6/sysenv.rb7525
42 files changed, 17944 insertions, 14942 deletions
diff --git a/data/doc/sisu/CHANGELOG_v5 b/data/doc/sisu/CHANGELOG_v5
index 110d9e7..8a42bb6 100644
--- a/data/doc/sisu/CHANGELOG_v5
+++ b/data/doc/sisu/CHANGELOG_v5
@@ -50,6 +50,9 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_5.5.2.orig.tar.xz
* remove dbi from rescue, no longer using ruby-dbi
* ruby-pg query SELECT MAX
+* sysenv,
+ * break up file, multiple se_* files
+
%% 5.5.1.orig.tar.xz (2014-07-15:28/2)
http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=log;h=refs/tags/sisu_5.5.1
http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=log;h=refs/tags/debian/sisu_5.5.1-1
diff --git a/data/doc/sisu/CHANGELOG_v6 b/data/doc/sisu/CHANGELOG_v6
index 192bed9..2014ec0 100644
--- a/data/doc/sisu/CHANGELOG_v6
+++ b/data/doc/sisu/CHANGELOG_v6
@@ -40,6 +40,9 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_6.1.2.orig.tar.xz
* remove dbi from rescue, no longer using ruby-dbi
* ruby-pg query SELECT MAX
+* sysenv,
+ * break up file, multiple se_* files
+
%% 6.1.1.orig.tar.xz (2014-07-15:28/2)
http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=log;h=refs/tags/sisu_6.1.1
http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=log;h=refs/tags/debian/sisu_6.1.1-1
diff --git a/lib/sisu/v5/se_cleanoutput.rb b/lib/sisu/v5/se_cleanoutput.rb
new file mode 100644
index 0000000..3e1ddde
--- /dev/null
+++ b/lib/sisu/v5/se_cleanoutput.rb
@@ -0,0 +1,151 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_cleanoutput.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Clean_Output
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ class CleanOutput
+ begin
+ require 'fileutils'
+ include FileUtils::Verbose
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('fileutils NOT FOUND (LoadError)')
+ end
+ def initialize(opt)
+ @opt=opt
+ z=SiSU_Env::FileMap.new(opt)
+ zap=z.local_sisu_source
+ if opt.cmd =~ /h/i
+ zap=Dir.glob(zap).join(' ')
+ @zap=if opt.cmd !~ /w/
+ zap.gsub(/#{@source_path}\/concordance.html/,'')
+ else zap
+ end
+ end
+ @env=SiSU_Env::InfoEnv.new
+ end
+ def zap
+ def deletion(fn)
+ if FileTest.file?(fn)==true
+ File.delete(fn)
+ tell=SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns, 'remove: ' + fn)
+ tell.warn unless @opt.cmd =~/q/
+ end
+ end
+ def remove_output
+ if @opt.act[:maintenance][:set] == :on
+ m=InfoFile.new(@opt.fnc)
+ tell=SiSU_Screen::Ansi.new(
+ @opt.cmd,@opt.fns,
+ 'remove maintenance files from: ' + @env.processing_path.ao
+ )
+ tell.warn unless @opt.cmd =~/q/
+ deletion(m.marshal.ao_content)
+ deletion(m.marshal.ao_idx_sst_rel_html_seg)
+ deletion(m.ao_idx_sst_rel)
+ deletion(m.ao_idx_html)
+ deletion(m.ao_idx_xhtml)
+ deletion(m.ao_metadata)
+ deletion(m.ao_map_nametags)
+ deletion(m.ao_map_ocn_htmlseg)
+ deletion(m.html_tune)
+ end
+ md=SiSU_Param::Parameters.new(@opt).get
+ f=SiSU_Env::FileOp.new(md)
+ deletion(f.place_file.html_segtoc.dir)
+ deletion(f.place_file.html_scroll.dir)
+ deletion(f.place_file.html_book_index.dir)
+ deletion(f.place_file.html_concordance.dir)
+ deletion(f.place_file.epub.dir)
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_letter}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_l_letter}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_a4}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_l_a4}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_a5}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_l_a5}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_b5}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_l_b5}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_legal}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_legal}")
+ deletion(f.place_file.odt.dir)
+ deletion(f.place_file.xhtml.dir)
+ deletion(f.place_file.xml_sax.dir)
+ deletion(f.place_file.xml_dom.dir)
+ deletion(f.place_file.xml_scaffold_structure_sisu.dir)
+ deletion(f.place_file.xml_scaffold_structure_collapse.dir)
+ deletion(f.place_file.info.dir)
+ deletion(f.place_file.manpage.dir)
+ deletion(f.place_file.sqlite_discrete.dir)
+ deletion(f.place_file.txt.dir)
+ deletion(f.place_file.hash_digest.dir)
+ deletion(f.place_file.manifest.dir)
+ deletion(f.place_file.qrcode_md.dir)
+ deletion(f.place_file.qrcode_title.dir)
+ deletion(f.place_file.src.dir)
+ deletion(f.place_file.sisupod.dir)
+ end
+ self
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/se_clear.rb b/lib/sisu/v5/se_clear.rb
new file mode 100644
index 0000000..1e908d3
--- /dev/null
+++ b/lib/sisu/v5/se_clear.rb
@@ -0,0 +1,112 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_clear.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Clear
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ require_relative 'se_info_env' # se_info_env.rb
+ begin
+ require 'singleton'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('singleton NOT FOUND (LoadError)')
+ end
+ class Clear < SiSU_Info_Env::InfoEnv # se_info_env.rb
+ #todo unify with FileOp
+ def initialize(cmd,fns,operation='')
+ @cmd=cmd
+ begin
+ super(fns)
+ @env=SiSU_Env::InfoEnv.new(fns)
+ SiSU_Env::InfoVersion.instance
+ if operation.class.inspect =~/SiSU_Param/
+ @md=operation
+ end
+ case operation #watch
+ when /pdf/ then @env_out=''
+ when /sql/
+ when /xml|plaintext|ascii/ then @env_out=@env.path.output + @fnb #check change of name to plaintext from ascii
+ else
+ if defined? @md.sfx_src \
+ and @md.sfx_src =~/ss[ftsumc]/
+ @env_out_root=@env.path.output
+ @env_out="#{@env.path.output}/#{@fnb}"
+ @@publisher='SiSU http://www.jus.uio.no/sisu'
+ @env_pdf="#{@env_out_root}/pdf"
+ end
+ end
+ rescue
+ SiSU_Screen::Ansi.new(@cmd,$!,$@).rescue do
+ __LINE__.to_s + ':' + __FILE__
+ end
+ ensure
+ end
+ end
+ def param_instantiate
+ @cX||=SiSU_Screen::Ansi.new(@cmd)
+ @@date=SiSU_Env::InfoDate.new
+ @@proc=@@filename_txt=@@filename_texinfo=@@filename_lout_portrait=@@filename_lout_landscape=@@filename_html_scroll=@@filename_html_index=@@filename_html_segtoc=@@filename_semantic=@@filename_rss=@@newfile=@@drr=@@yaml=@@yamladdr=nil
+ @@publisher='SiSU scribe'
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/se_createsite.rb b/lib/sisu/v5/se_createsite.rb
new file mode 100644
index 0000000..42d86aa
--- /dev/null
+++ b/lib/sisu/v5/se_createsite.rb
@@ -0,0 +1,275 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_createsite.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Create_Site
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ require_relative 'screen_text_color' # screen_text_color.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 CreateSite < SiSU_Info_Env::InfoEnv # se_info_env.rb
+ require_relative 'css' # css.rb
+ include SiSU_Style
+ def initialize(opt)
+ @opt=opt
+ @env=SiSU_Env::InfoEnv.new
+ @init=SiSU_Env::GetInit.new
+ @home,@pwd=ENV['HOME'],ENV['PWD'] #@pwd=Dir.pwd
+ @rc=SiSU_Env::GetInit.new.sisu_yaml.rc
+ @vz=SiSU_Viz::Defaults.new
+ @vz_home=SiSU_Viz::Home.new
+ end
+ def create_default_sisu_homepage(action=:none)
+ if action==:none
+ puts %{ place your homepages in directory:\n "#{@env.path.rc}/home/*.html"\n (no action taken)}
+ else
+ puts %{ place your homepages in directory:\n "#{@env.path.rc}/home/*.html"\n (in order to replace default sisu homepage)}
+ filename_homepage=
+ @env.path.webserv + '/' \
+ + @env.path.base_markup_dir_stub + '/index.html'
+ filename_home_toc=
+ @env.path.webserv + '/' \
+ + @env.path.base_markup_dir_stub + '/toc.html'
+ file_homepage=File.new(filename_homepage,'w')
+ file_home_toc=File.new(filename_home_toc,'w')
+ file_homepage << @vz_home.homepage
+ file_home_toc << @vz_home.homepage
+ file_homepage.close
+ file_home_toc.close
+ end
+ end
+ def homepage
+ home_pages_manually_created=Dir.glob("#{@env.path.rc}/home/*.html")
+ FileUtils::mkdir_p("#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}") \
+ unless FileTest.directory?("#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}")
+ if home_pages_manually_created.length > 0
+ home_pages_manually_created.each do |homepage|
+ FileUtils.cp(homepage,"#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}")
+ end
+ else
+ create_default_sisu_homepage(:none)
+ #create_default_sisu_homepage(:default)
+ end
+ end
+ def cp_images(src_path,dest_path)
+ if FileTest.directory?(src_path)
+ FileUtils::cd(src_path)
+ source=Dir.glob("*.{png,jpg,gif,ico}")
+ FileUtils::mkdir_p(dest_path) unless FileTest.directory?(dest_path)
+ FileUtils::chmod(0755,dest_path)
+ source.each do |i|
+ if FileTest.file?(i)
+ FileUtils::cp(i,"#{dest_path}/#{i}")
+ FileUtils::chmod(0644,"#{dest_path}/#{i}")
+ else STDERR.puts %{\t*WARN* did not find image - "#{i}" [#{__FILE__}:#{__LINE__}]}
+ end
+ end
+ FileUtils::cd(@pwd)
+ else STDERR.puts %{\t*WARN* did not find - #{src_path} [#{__FILE__}:#{__LINE__}]}
+ end
+ end
+ def cp_local_images
+ src=@pwd + '/_sisu/image'
+ dest=
+ @env.path.webserv + '/' \
+ + @env.path.base_markup_dir_stub + '/_sisu/image'
+ cp_images(src,dest) if FileTest.directory?(src)
+ end
+ def cp_external_images
+ src=@env.processing_path.processing + '/' \
+ + 'external_document/image'
+ dest=
+ @env.path.webserv + '/' \
+ + @env.path.base_markup_dir_stub + '/' \
+ + '_sisu/image_external'
+ if FileTest.directory?(src)
+ cp_images(src,dest) if FileTest.directory?(src)
+ end
+ end
+ def cp_webserver_images
+ src=@env.path.image_source
+ dest_arr=[
+ "#{@env.path.webserv}/_sisu/image",
+ "#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}/_sisu/image",
+ ]
+ dest_arr.each do |dest|
+ cp_images(src,dest) if FileTest.directory?(src)
+ end
+ end
+ def cp_webserver_images_local #this should not have been necessary
+ src=@env.path.image_source
+ dest=
+ @env.path.webserv + '/' \
+ + @env.path.base_markup_dir_stub + '/' \
+ + '_sisu/image'
+ cp_images(src,dest) if FileTest.directory?(src)
+ end
+ def cp_base_images #fix images
+ src=SiSU_is[:path_base_system_data] + '/image'
+ dest_arr=[
+ "#{@env.path.webserv}/_sisu/image_sys",
+ "#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}/_sisu/image_sys"
+ ]
+ dest_arr.each do |dest|
+ cp_images(src,dest) if FileTest.directory?(src)
+ end
+ end
+ def cp_css
+ FileUtils::mkdir_p("#{@env.path.output}/#{@env.path.style}") \
+ unless FileTest.directory?("#{@env.path.output}/#{@env.path.style}")
+ css_path=[
+ '/etc/sisu/css',
+ "#{@home}/.sisu/css",
+ "#{@pwd}/_sisu/css",
+ ] #BROKEN
+ if defined? @rc['permission_set']['css_modify'] \
+ and @rc['permission_set']['css_modify']
+ SiSU_Screen::Ansi.new(
+ @opt.cmd,
+ "*WARN* modify is css set to: #{@rc['permission_set']['css_modify']}"
+ ).warn if @opt.cmd=~/[MV]/
+ css_path.each do |x|
+ if FileTest.directory?(x)
+ FileUtils::cd(x)
+ source=Dir.glob("*.{css}")
+ source.each do |i|
+ if FileTest.file?(i)
+ FileUtils::cp(i,"#{@env.path.output}/#{@env.path.style}")
+ else STDERR.puts %{\t*WARN* did not find css - "#{i}" [#{__FILE__}:#{__LINE__}]}
+ end
+ end
+ FileUtils::cd(@pwd)
+ end
+ end
+ else
+ SiSU_Screen::Ansi.new(
+ @opt.cmd,
+ "*WARN* modify css is not set or is set to: false"
+ ).warn if @opt.cmd=~/[MV]/
+ end
+ fn_css=SiSU_Env::CSS_Default.new
+ css=SiSU_Style::CSS.new
+ path_style="#{@env.path.output}/#{@env.path.style}"
+ FileUtils::mkdir_p(path_style) \
+ unless FileTest.directory?(path_style)
+ if @opt.cmd =~/C/ \
+ or not FileTest.file?("#{path_style}/#{fn_css.homepage}")
+ style=File.new("#{path_style}/#{fn_css.homepage}",'w')
+ style << css.homepage
+ style.close
+ end
+ if @opt.cmd =~/C/ \
+ or not FileTest.file?("#{path_style}/#{fn_css.html_tables}")
+ style=File.new("#{path_style}/#{fn_css.html_tables}",'w')
+ style << css.html_tables
+ style.close
+ end
+ if @opt.cmd =~/C/ \
+ or not FileTest.file?("#{path_style}/#{fn_css.html}")
+ style=File.new("#{path_style}/#{fn_css.html}",'w')
+ style << css.html
+ style.close
+ end
+ if @opt.cmd =~/C/ \
+ or not FileTest.file?("#{path_style}/#{fn_css.harvest}")
+ style=File.new("#{path_style}/#{fn_css.harvest}",'w')
+ style << css.harvest
+ style.close
+ end
+ if @opt.cmd =~/C/ \
+ or (@opt.cmd =~/[x]/ \
+ and not FileTest.file?("#{path_style}/#{fn_css.xml_sax}"))
+ style=File.new("#{path_style}/#{fn_css.xml_sax}",'w')
+ style << css.xml_sax
+ style.close
+ end
+ if @opt.cmd =~/C/ \
+ or (@opt.cmd =~/[X]/ \
+ and not FileTest.file?("#{path_style}/#{fn_css.xml_dom}"))
+ style=File.new("#{path_style}/#{fn_css.xml_dom}",'w')
+ style << css.xml_dom
+ style.close
+ end
+ if @opt.cmd =~/C/ \
+ or (@opt.act[:xml_docbook_book][:set] == :on \
+ and not FileTest.file?("#{path_style}/#{fn_css.xml_docbook}"))
+ style=File.new("#{path_style}/#{fn_css.xml_docbook}",'w')
+ style << css.xml_docbook
+ style.close
+ end
+ if @opt.cmd =~/C/ \
+ or (@opt.cmd =~/[b]/ \
+ and not FileTest.file?("#{path_style}/#{fn_css.xhtml}"))
+ style=File.new("#{path_style}/#{fn_css.xhtml}",'w')
+ style << css.xhtml
+ style.close
+ end
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/se_css.rb b/lib/sisu/v5/se_css.rb
new file mode 100644
index 0000000..394b20a
--- /dev/null
+++ b/lib/sisu/v5/se_css.rb
@@ -0,0 +1,227 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_css.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_CSS
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ require_relative 'se_info_env' # se_info_env.rb
+ class CSS_Default
+ def html
+ 'html.css'
+ end
+ def html_tables
+ 'html_tables.css'
+ end
+ def xhtml
+ 'xhtml.css'
+ end
+ def xml_sax
+ 'sax.css'
+ end
+ def xml_dom
+ 'dom.css'
+ end
+ def xml_docbook
+ 'docbook.css'
+ end
+ def homepage
+ 'homepage.css'
+ end
+ def harvest
+ 'harvest.css'
+ end
+ end
+ class CSS_Select < SiSU_Info_Env::InfoEnv # se_info_env.rb
+ def initialize(md)
+ @md=md
+ @env=SiSU_Env::InfoEnv.new('',@md)
+ end
+ def html
+ if @md.doc_css \
+ and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_html.css")
+ @md.doc_css + '_html.css'
+ elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_html.css")
+ @env.path.base_markup_dir_stub + '_html.css'
+ else
+ SiSU_Env::CSS_Default.new.html
+ end
+ end
+ def html_tables
+ if @md.doc_css \
+ and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_html_tables.css")
+ @md.doc_css + '_html_tables.css'
+ elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_html_tables.css")
+ @env.path.base_markup_dir_stub + '_html_tables.css'
+ else SiSU_Env::CSS_Default.new.html_tables
+ end
+ end
+ def xhtml
+ if @md.doc_css \
+ and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_xhtml.css")
+ @md.doc_css + '_xhtml.css'
+ elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_xhtml.css")
+ @env.path.base_markup_dir_stub + '_xhtml.css'
+ else SiSU_Env::CSS_Default.new.xhtml
+ end
+ end
+ def xml_sax
+ if @md.doc_css \
+ and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_xml_sax.css")
+ @md.doc_css + '_xml_sax.css'
+ elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_xml_sax.css")
+ @env.path.base_markup_dir_stub + '_xml_sax.css'
+ else SiSU_Env::CSS_Default.new.xml_sax
+ end
+ end
+ def xml_dom
+ if @md.doc_css \
+ and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_xml_dom.css")
+ @md.doc_css + '_xml_dom.css'
+ elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_xml_dom.css")
+ @env.path.base_markup_dir_stub + '_xml_dom.css'
+ else SiSU_Env::CSS_Default.new.xml_dom
+ end
+ end
+ def xml_docbook
+ if @md.doc_css \
+ and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_docbook.css")
+ @md.doc_css + '_xml_dom.css'
+ elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_docbook.css")
+ @env.path.base_markup_dir_stub + '_docbook.css'
+ else SiSU_Env::CSS_Default.new.xml_docbook
+ end
+ end
+ def homepage
+ if @md.doc_css \
+ and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_homepage.css")
+ @md.doc_css + '_homepage.css'
+ elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_homepage.css")
+ @env.path.base_markup_dir_stub + '_homepage.css'
+ else SiSU_Env::CSS_Default.new.homepage
+ end
+ end
+ end
+ class CSS_Stylesheet
+ def initialize(md)
+ @md=md
+ @css=SiSU_Env::CSS_Select.new(@md)
+ @env=SiSU_Env::InfoEnv.new('',@md)
+ @file=SiSU_Env::FileOp.new(@md)
+ end
+ def html
+ stylesheet=
+ @file.path_rel_links.html_scroll_css \
+ + @env.path.style + '/' \
+ + @css.html
+ %{ <link rel="stylesheet" href="#{stylesheet}" type="text/css" />}
+ end
+ def html_seg
+ stylesheet=
+ @file.path_rel_links.html_seg_css \
+ + @env.path.style + '/' \
+ + @css.html
+ %{ <link rel="stylesheet" href="#{stylesheet}" type="text/css" />}
+ end
+ def html_tables
+ stylesheet=
+ @file.path_rel_links.html_seg_css \
+ + @env.path.style + '/' \
+ + @css.html
+ %{ <link rel="stylesheet" href="#{stylesheet}" type="text/css" />}
+ end
+ def xhtml_epub
+ %{ <link rel="stylesheet" href="css/xhtml.css" type="text/css" />}
+ end
+ def epub
+ xhtml_epub
+ end
+ def xhtml
+ stylesheet=
+ @file.path_rel_links.xhtml_css \
+ + @env.path.style + '/' \
+ + @css.xhtml
+ %{<?xml-stylesheet type="text/css" href="#{stylesheet}"?>}
+ end
+ def xml_sax
+ stylesheet=
+ @file.path_rel_links.xml_css \
+ + @env.path.style + '/' \
+ + @css.xml_sax
+ %{<?xml-stylesheet type="text/css" href="#{stylesheet}"?>}
+ end
+ def xml_dom
+ stylesheet=
+ @file.path_rel_links.xml_css \
+ + @env.path.style + '/' \
+ + @css.xml_dom
+ %{<?xml-stylesheet type="text/css" href="#{stylesheet}"?>}
+ end
+ def xml_docbook
+ stylesheet=
+ @file.path_rel_links.xml_css \
+ + @env.path.style + '/' \
+ + @css.xml_docbook
+ %{<?xml-stylesheet type="text/css" href="#{stylesheet}"?>}
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/se_date.rb b/lib/sisu/v5/se_date.rb
new file mode 100644
index 0000000..6e8ac53
--- /dev/null
+++ b/lib/sisu/v5/se_date.rb
@@ -0,0 +1,98 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_date.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Info_Date
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ class InfoDate
+ begin
+ require 'date'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('date NOT FOUND (LoadError)')
+ end
+ attr_accessor :dt,:t
+ def initialize
+ @dt,@t=Date.today.to_s,Time.now
+ end
+ def week
+ w=@t.strftime('%W')
+ "#{@t.year}w#{w}"
+ end
+ def month
+ "#{@t.year}#{@t.month}"
+ end
+ def year
+ @t.year
+ end
+ def weekonly
+ @t.strftime('%W')
+ end
+ def monthonly
+ @t.month
+ end
+ def year_static
+ YEAR
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/se_db.rb b/lib/sisu/v5/se_db.rb
new file mode 100644
index 0000000..8ed78af
--- /dev/null
+++ b/lib/sisu/v5/se_db.rb
@@ -0,0 +1,215 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_db.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Info_Db
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ require_relative 'se_info_env' # se_info_env.rb
+ class InfoDb < SiSU_Info_Env::InfoEnv # se_info_env.rb
+ @@rc=nil
+ def initialize
+ @@pwd=@pwd=SiSU_Utils::Path.new.base_markup
+ @env=SiSU_Env::InfoEnv.new
+ pt=Pathname.new(@pwd)
+ r=Px[:lng_lst_rgx]
+ u=/.+?\/([^\/]+)(?:\/(?:#{r})$|$)/
+ @pwd_stub=pt.realpath.to_s[u,1]
+ @rc=@@rc ||=SiSU_Env::GetInit.new.sisu_yaml.rc
+ @defaults=SiSU_Env::InfoEnv.new.defaults
+ end
+ def share_source?
+ ((defined? @rc['db']['share_source']) \
+ && @rc['db']['share_source']==true) \
+ ? @rc['db']['share_source']
+ : false
+ end
+ def engine
+ def default
+ ((defined? @rc['db']['engine']['default']) \
+ && @rc['db']['engine']['default']=~/postgresql|sqlite/) \
+ ? @rc['db']['engine']['default']
+ : 'sqlite'
+ end
+ self
+ end
+ def psql
+ def user(opt=nil)
+ if opt \
+ and opt.mod.inspect =~/--db-user[=-]["']?(\S+)["']+/
+ $1
+ elsif opt \
+ and opt.mod =~/--webserv[=-]webrick/
+ @env.user
+ else
+ ((defined? @rc['db']['postgresql']['user']) \
+ && @rc['db']['postgresql']['user']=~/\S+/) \
+ ? @rc['db']['postgresql']['user']
+ : @env.user
+ end
+ end
+ def db #db_name
+ "#{Db[:name_prefix]}#{@pwd_stub}"
+ end
+ def port #PGPORT
+ ((defined? @rc['db']['postgresql']['port']) \
+ && ( @rc['db']['postgresql']['port'] =~/\d+/ \
+ || @rc['db']['postgresql']['port'].is_a?(Fixnum))) \
+ ? @rc['db']['postgresql']['port']
+ : (@defaults[:postgresql_port])
+ end
+ def password
+ ((defined? @rc['db']['postgresql']['password']) \
+ && @rc['db']['postgresql']['password']=~/\S+/) \
+ ? @rc['db']['postgresql']['password']
+ : ''
+ end
+ def host
+ ((defined? @rc['db']['postgresql']['host']) \
+ && @rc['db']['postgresql']['host']=~/(?:\S{1,3}\.){3}\S{1,3}|\S+?\.\S+/) \
+ ? @rc['db']['postgresql']['host']
+ : ''
+ end
+ def dbi
+ PG::Connection.open(:dbname => psql.db)
+ end
+ def dbi_
+ (psql.host =~/(?:\S{1,3}\.){3}\S{1,3}|\S+?\.\S+/) \
+ ? "DBI:Pg:database=#{psql.db};host=#{psql.host};port=#{psql.port}"
+ : "DBI:Pg:database=#{psql.db};port=#{psql.port}"
+ end
+ def conn_dbi
+ DBI.connect(psql.dbi,psql.user,psql.db)
+ end
+ def conn_pg
+ require 'pg'
+ PG::Connection.new(dbname: psql.db, port: psql.port)
+ end
+ self
+ end
+ def sqlite
+ def db
+ "#{@env.path.webserv}/#{@pwd_stub}/sisu_sqlite.db"
+ end
+ def db_discrete(md)
+ # "#{@env.path.webserv}/#{@pwd_stub}/sisu_sqlite.db"
+ end
+ def dbi
+ "DBI:SQLite3:#{sqlite.db}" #sqlite3 ?
+ end
+ def sqlite3
+ sqlite.db #sqlite3 ?
+ end
+ def conn_dbi
+ DBI.connect(sqlite.dbi)
+ end
+ def conn_sqlite3
+ SQLite3::Database.new(sqlite.sqlite3)
+ end
+ self
+ end
+ end
+end
+module SiSU_Db_Op
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ class DbOp < SiSU_Info_Db::InfoDb
+ def initialize(md)
+ begin
+ @md=md
+ rescue
+ SiSU_Screen::Ansi.new(md.opt.cmd,$!,$@).rescue do
+ __LINE__.to_s + ':' + __FILE__
+ end
+ ensure
+ end
+ end
+ def sqlite_discrete
+ def db
+ @md.file.output_path.sqlite_discrete.dir \
+ + '/' \
+ + @md.file.base_filename.sqlite_discrete
+ end
+ def dbi
+ "DBI:SQLite3:#{sqlite_discrete.db}"
+ end
+ def sqlite3
+ sqlite_discrete.db
+ end
+ def conn_dbi
+ DBI.connect(sqlite_discrete.dbi)
+ end
+ def conn_sqlite3
+ begin
+ $sqlite3=:yes
+ require 'sqlite3'
+ SQLite3::Database.new(sqlite_discrete.sqlite3)
+ rescue LoadError
+ $sqlite3=:no
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('sqlite3 NOT FOUND (LoadError)')
+ end
+ end
+ self
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/se_envcall.rb b/lib/sisu/v5/se_envcall.rb
new file mode 100644
index 0000000..defc51e
--- /dev/null
+++ b/lib/sisu/v5/se_envcall.rb
@@ -0,0 +1,329 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_envcall.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Env_Call
+ begin
+ require 'singleton'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('singleton NOT FOUND (LoadError)')
+ end
+ class EnvCall
+ @@rc,@@fns,@@fnn,@@fnb,@@fnt,@@flv,@@fnz=nil,nil,nil,nil,nil,nil,nil
+ @@ad={}
+ attr_accessor :rc,:fnn,:fnb,:fnt,:fnv,:fnz,:ad
+ def initialize(fns='')
+ @fns=fns
+ @sys=SiSU_Info_Sys::InfoSystem.instance
+ get_init=SiSU_Env::GetInit.new
+ @rc=get_init.sisu_yaml.rc
+ @ad=get_init.ads
+ if @fns \
+ and @fns != '' \
+ and @fns !=@@fns
+ @@fns,@@fnn,@@fnb,@@fnt,@@flv,@@fnz=@fns,nil,nil,nil,nil,nil
+ end
+ if @fns \
+ and @fns != '' #watch
+ m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm|ssi)$/
+ @@fnn ||=@fns[m,1]
+ @@fnb ||=@fns[m,2]
+ @@fnt ||=@fns[m,3]
+ @@flv ||=document_language_versions_found[:f]
+ unless @@fns =~/\S+?\.txz/
+ @@fnz ||=if @@fns =~/(?:\~\S{2,3})?\.(?:ssm\.sst|ssm)$/; @@fnb + '.ssm.txz'
+ elsif @@fnb; @@fnb + '.sst.txz'
+ else '' # e.g. termsheet
+ end
+ end
+ end
+ @fnn,@fnb,@fnt,@flv,@fnz=@@fnn,@@fnb,@@fnt,@@flv,@@fnz
+ end
+ def default_language?
+ if @rc \
+ && defined? @rc['language_default']
+ if (@rc['language_default'].is_a?(String)) \
+ && (@rc['language_default'] =~/#{Px[:lng_lst_rgx]}/)
+ @rc['language_default']
+ else 'en'
+ end
+ else 'en'
+ end
+ end
+ def mono_multi_lingual?
+ if @rc \
+ && defined? @rc['lingual']
+ if (@rc['lingual'].is_a?(String)) \
+ && (@rc['lingual'] =~/mono(?:lingual)?/)
+ :mono
+ elsif (@rc['lingual'].is_a?(String)) \
+ && (@rc['lingual'] =~/multi(?:lingual)?/)
+ :multi
+ else :multi
+ end
+ else :multi
+ end
+ end
+ def output_dir_structure
+ def by?
+ output_structure=:filename #set default output structure
+ if @rc \
+ && defined? @rc['output_dir_structure_by']
+ output_structure=if (@rc['output_dir_structure_by'] =~/dump/) \
+ or ((defined? @rc['output_structure']['dump']) \
+ && @rc['output_structure']['dump'] ==true)
+ :dump
+ elsif (@rc['output_dir_structure_by'] =~/redirect/) \
+ or ((defined? @rc['output_structure']['redirect']) \
+ && @rc['output_structure']['redirect'] ==true)
+ :redirect
+ elsif (@rc['output_dir_structure_by'] =~/language/) \
+ or ((defined? @rc['output_structure']['by_language']) \
+ && @rc['output_structure']['by_language'] ==true)
+ :language
+ elsif (@rc['output_dir_structure_by'] =~/filetype/) \
+ or ((defined? @rc['output_structure']['by_filetype']) \
+ && @rc['output_structure']['by_filetype'] ==true)
+ :filetype
+ elsif (@rc['output_dir_structure_by'] =~/filename/) \
+ or ((defined? @rc['output_structure']['by_filename']) \
+ && @rc['output_structure']['by_filename'] ==true)
+ :filename
+ else #set default
+ :language
+ end
+ else #set default
+ :language
+ end
+ end
+ def dump?
+ ((by?) ==:dump) \
+ ? true
+ : false
+ end
+ def redirect?
+ ((by?) ==:redirect) \
+ ? true
+ : false
+ end
+ def by_language_code?
+ ((by?) ==:language) \
+ ? true
+ : false
+ end
+ def by_filetype?
+ ((by?) ==:filetype) \
+ ? true
+ : false
+ end
+ def by_filename?
+ ((by?) ==:filename) \
+ ? true
+ : false
+ end
+ def multilingual?
+ by_language_code?
+ end
+ self
+ end
+ def document_language_versions_found #REVISIT
+ @fn={}
+ filename=(@fns =~/\.ssm\.sst$/) \
+ ? @fns.gsub(/\.ssm\.sst$/,'.ssm')
+ : @fns
+ if filename.is_a?(String) \
+ and not filename.empty?
+ if output_dir_structure.by_language_code?
+ m=/((.+?)(?:\~\w{2,3})?)\.(sst|ssm)$/
+ @fn[:b],@fn[:m],@fn[:t]=filename[m,1],filename[m,2],filename[m,3]
+ else m=/(.+?)\.(sst|ssm)$/
+ @fn[:b]=@fn[:m]=filename[m,1]
+ @fn[:t]=filename[m,2]
+ end
+ end
+ lng_base=SiSU_Env::InfoEnv.new.language_default_set
+ lang=SiSU_Env::StandardiseLanguage.new
+ langs=lang.codes
+ x=[]
+ if FileTest.file?("#{@fn[:m]}.#{@fn[:t]}")
+ n=@fn[:m].gsub(/^.+?\//,'')
+ n =n + '.' + @fn[:t]
+ x << { f: "#{@fn[:m]}.#{@fn[:t]}", l: lng_base, n: n }
+ end
+ langs.each do |l|
+ lng=SiSU_Env::StandardiseLanguage.new(l)
+ if FileTest.file?("#{@fn[:m]}~#{lng.code}.#{@fn[:t]}")
+ x << { f: "#{@fn[:m]}~#{lng.code}.#{@fn[:t]}", l: lng.code }
+ elsif FileTest.file?("#{@fn[:m]}~#{lng.name}.#{@fn[:t]}")
+ x << { f: "#{@fn[:m]}~#{lng.name}.#{@fn[:t]}", l: lng.code }
+ end
+ if FileTest.file?("#{lng.code}/#{@fn[:m]}~#{lng.code}.#{@fn[:t]}")
+ if FileTest.file?("#{lng.code}/#{@fn[:m]}~#{lng.code}.#{@fn[:t]}")
+ x << { f: "#{lng.code}/#{@fn[:m]}~#{lng.code}.#{@fn[:t]}", l: lng.code }
+ elsif FileTest.file?("#{lng.code}/#{@fn[:m]}~#{lng.name}.#{@fn[:t]}")
+ x << { f: "#{lng.code}/#{@fn[:m]}~#{lng.name}.#{@fn[:t]}", l: lng.code }
+ end
+ end
+ if FileTest.file?("#{lng.code}/#{@fn[:m]}.#{@fn[:t]}")
+ if FileTest.file?("#{lng.code}/#{@fn[:m]}.#{@fn[:t]}")
+ x << { f: "#{lng.code}/#{@fn[:m]}.#{@fn[:t]}", l: lng.code }
+ elsif FileTest.file?("#{lng.code}/#{@fn[:m]}.#{@fn[:t]}")
+ x << { f: "#{lng.code}/#{@fn[:m]}.#{@fn[:t]}", l: lng.code }
+ end
+ end
+ end
+ @fn[:f]=x
+ @fn
+ end
+ def published_manifests?(output_base)
+ @fn={}
+ @m=[]
+ unless (@fns.nil? \
+ or @fns.empty?)
+ if output_dir_structure.by_language_code?
+ m=/((.+?)(?:\~\w{2,3})?)\.((?:-|ssm\.)?sst$)/
+ @fn[:b],@fn[:m],@fn[:t]=@fns[m,1],@fns[m,2],@fns[m,3]
+ else m=/(.+?)\.((?:-|ssm\.)?sst$)/
+ @fn[:b]=@fn[:m]=@fns[m,1]
+ @fn[:t]=@fns[m,2]
+ end
+ end
+ lang=SiSU_Env::StandardiseLanguage.new
+ langs=lang.codes
+ x=[]
+ if FileTest.file?("#{@fn[:m]}.#{@fn[:t]}"); x << "#{@fn[:m]}.#{@fn[:t]}"
+ end
+ dir=SiSU_Env::InfoEnv.new(@fns)
+ @m << { m: 'sisu_manifest.html', l: 'English' } #fix later, default language
+ langs.each do |l|
+ lng=SiSU_Env::StandardiseLanguage.new(l)
+ fns_c="#{@fn[:m]}~#{lng.code}.#{@fn[:t]}"
+ fns_l="#{@fn[:m]}~#{lng.name}.#{@fn[:t]}"
+ if FileTest.file?(fns_c)
+ fn_set_lang=SiSU_Env::StandardiseLanguage.new.
+ file_to_language(fns_c) #reconsider file_to_language
+ lng=fn_set_lang[:n]
+ fn=SiSU_Env::EnvCall.new(fns_c).lang(fn_set_lang[:c])
+ @m << { m: fn[:manifest], l: lng }
+ elsif FileTest.file?(fns_l)
+ fn_set_lang=SiSU_Env::StandardiseLanguage.new.
+ file_to_language(fns_l) #reconsider file_to_language
+ @fnl=dir.i18n.lang_filename(fn_set_lang[:c])
+ fn=SiSU_Env::EnvCall.new(fns_l).lang(fn_set_lang[:c])
+ @m << { m: fn[:manifest], l: lng }
+ end
+ end
+ @m=@m.uniq
+ end
+ def filename(code,name,suffix)
+ "#{name}#{suffix}"
+ end
+ def lang(code)
+ {
+ html: filename(code,'','.html'),
+ book_index: filename(code,'book_index','.html'),
+ concordance: filename(code,'concordance','.html'),
+ sax: filename(code,'sax','.xml'),
+ dom: filename(code,'dom','.xml'),
+ docbook: filename(code,'docbook','.xml'),
+ xhtml: filename(code,'scroll','.xhtml'),
+ pdf_l: filename(code,'','.pdf'),
+ pdf_p: filename(code,'','.pdf'),
+ pdf_l_a4: filename(code,"a4",'.pdf'),
+ pdf_p_a4: filename(code,"a4",'.pdf'),
+ pdf_l_a5: filename(code,"a5",'.pdf'),
+ pdf_p_a5: filename(code,"a5",'.pdf'),
+ pdf_l_b5: filename(code,"b5",'.pdf'),
+ pdf_p_b5: filename(code,"b5",'.pdf'),
+ pdf_l_letter: filename(code,"letter",'.pdf'),
+ pdf_p_letter: filename(code,"letter",'.pdf'),
+ pdf_l_legal: filename(code,"legal",'.pdf'),
+ pdf_p_legal: filename(code,"legal",'.pdf'),
+ toc: filename(code,'toc','.html'),
+ doc: filename(code,fnb,'.html'),
+ index: filename(code,'index','.html'),
+ po: filename(code,@fns,'.po'),
+ pot: filename(code,@fns,'.pot'),
+ odf: filename(code,'','.odt'),
+ epub: filename(code,'','.epub'),
+ plain: filename(code,'','.txt'),
+ qrcode: filename(code,'','.jpg'),
+ manpage: filename(code,'','.1'), #fix, section number
+ wiki: filename(code,'wiki','.txt'),
+ digest: filename(code,'digest','.txt'),
+ metadata: filename(code,'metadata','.html'), #chk
+ manifest: filename(code,'manifest','.html'),
+ oai_pmh: filename(code,'oai_pmh','.xml'),
+ sitemap: filename(code,'sitemap','.xml'),
+ sitemap_touch: filename(code,"sitemap_#{fnb}",'.xml'),
+ sxs: filename(code,fnb,'.sxs.xml'),
+ sxd: filename(code,fnb,'.sxd.xml'),
+ sxn: filename(code,fnb,'.sxn.xml'),
+ sisupod: filename(nil,@fnz,''),
+ book_idx_html: filename(code,'book_index','.html'),
+ book_idx_epub: filename(code,'book_index','.xhtml'),
+ epub_concord: filename(code,'concordance','.xhtml'),
+ }
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/se_file_op.rb b/lib/sisu/v5/se_file_op.rb
new file mode 100644
index 0000000..d8a919d
--- /dev/null
+++ b/lib/sisu/v5/se_file_op.rb
@@ -0,0 +1,2662 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_file_op.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=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
+ 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.cmd,$!,$@).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__
diff --git a/lib/sisu/v5/se_filemap.rb b/lib/sisu/v5/se_filemap.rb
new file mode 100644
index 0000000..99de4a0
--- /dev/null
+++ b/lib/sisu/v5/se_filemap.rb
@@ -0,0 +1,247 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_filemap.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_File_Map
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ require_relative 'se_info_env' # se_info_env.rb
+ class FileMap < SiSU_Info_Env::InfoEnv # se_info_env.rb
+ attr_accessor :local_sisu_source
+ def initialize(opt='') #watch / REVIEW
+ super()
+ @opt=opt #,opt.fns,opt.cmd
+ @env=(@opt.fns && !(@opt.fns.empty?) \
+ ? (SiSU_Env::InfoEnv.new(@opt.fns))
+ : (SiSU_Env::InfoEnv.new('dummy.sst')))
+ ft=[]
+ if @opt.act[:ao][:set]==:on
+ @md=SiSU_Param::Parameters.new(@opt).get
+ if @md \
+ and defined? @md.fn \
+ and @md.fn # used for by_language_code?
+ if @md.opt.act[:html][:set]==:on #% --html, -h -H
+ ft << @md.fn[:html]
+ end
+ if @md.opt.act[:concordance][:set]==:on #% --concordance, -w
+ ft << @md.fn[:concordance]
+ end
+ if @md.opt.act[:manifest][:set]==:on #% --manifest, -y
+ ft << @md.fn[:manifest]
+ end
+ if @md.opt.act[:txt][:set]==:on #% --txt, -t -a
+ ft << @md.fn[:plain]
+ end
+ if @md.opt.act[:txt_textile][:set]==:on #% --textile
+ ft << @md.fn[:txt_textile]
+ end
+ if @md.opt.act[:txt_asciidoc][:set]==:on #% --asciidoc
+ ft << @md.fn[:txt_asciidoc]
+ end
+ if @md.opt.act[:txt_markdown][:set]==:on #% --markdown
+ ft << @md.fn[:txt_markdown]
+ end
+ if @md.opt.act[:txt_rst][:set]==:on #% --rst, --rest
+ ft << @md.fn[:txt_rst]
+ end
+ if @md.opt.act[:xhtml][:set]==:on #% --xhtml, -b xhtml
+ ft << @md.fn[:xhtml]
+ end
+ if @md.opt.act[:epub][:set]==:on #% --epub, -e
+ ft << @md.fn[:epub]
+ end
+ if @md.opt.act[:manpage][:set]==:on #% --manpage, -i
+ ft << @md.fn[:manpage]
+ end
+ if @md.opt.act[:hash_digests][:set]==:on #% --hash-digests, -N digest tree
+ ft << @md.fn[:digest]
+ end
+ if @md.opt.act[:odt][:set]==:on #% --odt, -o opendocument
+ ft << @md.fn[:odf]
+ end
+ if @md.opt.act[:pdf][:set]==:on #% --pdf-l --pdf, -p latex/ texpdf
+ ft << @md.fn[:pdf_l] << @md.fn[:pdf_p]
+ end
+ if @md.opt.act[:share_source][:set]==:on
+ ft << @md.fns
+ end
+ if @md.opt.act[:sisupod][:set]==:on #% --sisupod, -S make sisupod
+ ft << @md.fn[:sisupod]
+ end
+ if @md.opt.act[:xml_sax][:set]==:on #% --xml-sax, -x xml sax type
+ ft << @md.fn[:sax]
+ end
+ if @md.opt.act[:xml_dom][:set]==:on #% --xml-dom, -X xml dom type
+ ft << @md.fn[:dom]
+ end
+ if @md.opt.act[:xml_docbook_book][:set]==:on #% --xml-docbook-book
+ ft << @md.fn[:xml_docbook_book]
+ end
+ if @md.opt.act[:xml_fictionbook][:set]==:on #% --xml-fictionbook
+ ft << @md.fn[:xml_fictionbook]
+ end
+ if @md.opt.act[:xml_scaffold_structure_sisu][:set]==:on #% --xml-scaffold --xml-scaffold-sisu
+ ft << @md.fn[:xml_scaffold_structure_sisu]
+ end
+ if @md.opt.act[:xml_scaffold_structure_collapse][:set]==:on #% --xml-scaffold-collapse
+ ft << @md.fn[:xml_scaffold_structure_collapse]
+ end
+ @fnb=@md.fnb
+ else # still needed where/when param is not parsed
+ if @opt.act[:html][:set]==:on #% --html, -h -H
+ ft << '.html' << '.html.??'
+ end
+ if @opt.act[:concordance][:set]==:on #% --concordance, -w
+ ft << 'concordance.html' << '??.concordance.html' << 'concordance.??.html'
+ end
+ if @opt.act[:manifest][:set]==:on #% --manifest, -y
+ ft << 'sisu_manifest.html' << '??.sisu_manifest.html' << 'sisu_manifest.??.html'
+ end
+ if @opt.act[:txt][:set]==:on #% --txt, -t -a
+ ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt'
+ end
+ if @opt.act[:txt_textile][:set]==:on #% --textile
+ ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt'
+ end
+ if @opt.act[:txt_asciidoc][:set]==:on #% --asciidoc
+ ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt'
+ end
+ if @opt.act[:txt_markdown][:set]==:on #% --markdown
+ ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt'
+ end
+ if @opt.act[:txt_rst][:set]==:on #% --rst, --rest
+ ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt'
+ end
+ if @opt.act[:xhtml][:set]==:on #% --xhtml, -b xhtml
+ ft << 'scroll.xhtml' << '??.scroll.xhtml' << 'scroll.??.xhtml'
+ end
+ if @opt.act[:epub][:set]==:on #% --epub, -e
+ ft << @fnb << '.epub'
+ end
+ if @opt.act[:manpage][:set]==:on #% --manpage, -i
+ ft << '.1' << '??.man.1' << 'man.??.1'
+ end
+ if @opt.act[:hash_digests][:set]==:on #% --hash-digests, -N digest tree
+ ft << 'digest.txt' << '??.digest.txt' << 'digest.??.txt'
+ end
+ if @opt.act[:odt][:set]==:on #% --odt, -o opendocument
+ ft << 'opendocument.odt' << '??.opendocument.odt' << 'opendocument.??.odt'
+ end
+ if @opt.act[:pdf][:set]==:on #% --pdf-l --pdf, -p latex/ texpdf
+ ft << 'landscape.pdf' << 'portrait.pdf' << '.pdf'
+ end
+ if @opt.act[:share_source][:set]==:on
+ ft << '.sst' << '.ssi' << '.ssm'
+ end
+ if @opt.act[:sisupod][:set]==:on #% --sisupod, -S make sisupod
+ ft << '.zip'
+ end
+ if @opt.act[:xml_sax][:set]==:on #% --xml-sax, -x xml sax type
+ ft << 'sax.xml' << '??.sax.xml' << 'sax.??.xml'
+ end
+ if @opt.act[:xml_dom][:set]==:on #% --xml-dom, -X xml dom type
+ ft << 'dom.xml' << '??.dom.xml' << 'dom.??.xml'
+ end
+ if @opt.act[:xml_docbook_book][:set]==:on #% --xml-docbook-book
+ ft << 'docbook.xml' << '??.docbook.xml' << 'docbook.??.xml'
+ end
+ if @opt.act[:xml_fictionbook][:set]==:on #% --xml-fictionbook
+ ft << 'fictionbook.xml' << '??.fictionbook.xml' << 'fictionbook.??.xml'
+ end
+ if @opt.act[:xml_scaffold_structure_sisu][:set]==:on #% --xml-scaffold --xml-scaffold-sisu
+ ft << 'scaffold.xml' << '??.scaffold.xml' << 'scaffold.??.xml'
+ end
+ if @opt.act[:xml_scaffold_structure_collapse][:set]==:on #% --xml-scaffold-collapse
+ ft << 'scaffold.xml' << '??.scaffold.xml' << 'scaffold.??.xml'
+ end
+ end
+ ft=ft.uniq
+ filetypes=ft.join(',')
+ @filetypes=if filetypes !~/..+/ then '' # -r called alone, copy all
+ elsif @opt.cmd =~/u/ then '' # -u added, copy all, (used to create remote directory tree see output path), not the usual function of -u
+ elsif filetypes =~/\S+?,\S+/ then '*{' + filetypes + '}' # more than one relevant file type
+ else '*' + filetypes # one relevant file type
+ end
+ @source_path=(@fnb && !(@fnb.empty?) \
+ ? "#{@env.path.output}/#{@fnb}"
+ : @env.path.output)
+ @source_path_epub=(@fnb && !(@fnb.empty?) \
+ ? "#{@env.path.output}/epub"
+ : @env.path.output_epub)
+ @source_path_src=(@fnb && !(@fnb.empty?) \
+ ? "#{@env.path.output}/src"
+ : @env.path.output_src)
+ @source_path_pod=(@fnb && !(@fnb.empty?) \
+ ? "#{@env.path.output}/pod"
+ : @env.path.output_pod)
+ @source_path_harvest=(@fnb && !(@fnb.empty?) \
+ ? "#{@env.path.output}/manifest"
+ : @env.path.output_harvest)
+ @local_sisu_source=(@filetypes =~/\S/) \
+ ? "#{@source_path}/#{@filetypes}"
+ : @source_path
+ end
+ if @opt.act[:rsync][:set]==:on
+ end
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/se_get_init.rb b/lib/sisu/v5/se_get_init.rb
new file mode 100644
index 0000000..63173ba
--- /dev/null
+++ b/lib/sisu/v5/se_get_init.rb
@@ -0,0 +1,235 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_get_init.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Get_Init
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ require_relative 'se_info_system' # se_info_system.rb
+ @@noyaml=false
+ class GetInit < SiSU_Info_Sys_Gen::InfoSystemGen # se_info_system.rb
+ @@noyaml=false
+ @@rc,@@sisu_doc_makefile,@@sisurc_path,@@tx=nil,nil,nil,nil
+ @@ad={ promo: nil, promo_list: nil, flag_promo: false }
+ @@sdmd=nil
+ attr_accessor :yaml
+ def initialize
+ super()
+ @markup_dir_changed_=if @@sdmd==$sisu_document_markup_directory
+ false
+ else
+ @@sdmd=$sisu_document_markup_directory
+ true
+ end
+ end
+ def tex
+ @@tx ||=SiSU_Viz::TeX.new
+ end
+ def rc_path_options
+ [
+ "#{$sisu_document_markup_directory_base_fixed_path}/.sisu/#{SiSU_is[:version_dir]}",
+ "#{$sisu_document_markup_directory_base_fixed_path}/.sisu",
+ "#{$sisu_document_markup_directory_base_fixed_path}/_sisu/#{SiSU_is[:version_dir]}",
+ "#{$sisu_document_markup_directory_base_fixed_path}/_sisu",
+ "#{@@home}/.sisu/#{SiSU_is[:version_dir]}",
+ "#{@@home}/.sisu",
+ "#{@@sisu_etc}/#{SiSU_is[:version_dir]}",
+ "#{@@sisu_etc}",
+ ]
+ end
+ def sisu_document_make
+ def makefile_name
+ S_CONF[:header_make]
+ end
+ def makefile
+ rc_path_options.each do |v|
+ if FileTest.exist?("#{v}/#{makefile_name}")
+ @sisu_make_path=v
+ break
+ end
+ end
+ @sisu_make_file_path=@sisu_make_path \
+ ? "#{@sisu_make_path}/#{makefile_name}"
+ : nil
+ end
+ def makefile_read
+ if makefile
+ sisu_doc_makefile=IO.read(makefile, mode: 'r:utf-8')
+ @sisu_doc_makefile=sisu_doc_makefile.split(/\s*\n\s*\n/m)
+ end
+ @sisu_doc_makefile
+ end
+ self
+ end
+ def sisu_yaml
+ def rc
+ if @markup_dir_changed_
+ rc_path_options.each do |v|
+ if @@noyaml \
+ or FileTest.exist?("#{v}/noyaml")
+ STDERR.puts "WARNING - YAML loading switched off, to enable delete the file:\n\t#{v}/noyaml\n\n" unless @@noyaml
+ @@noyaml=true
+ break
+ else
+ f=S_CONF[:rc_yml]
+ p_f="#{v}/#{f}"
+ if FileTest.exist?(p_f)
+ begin
+ require 'yaml'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('yaml NOT FOUND (LoadError)')
+ end
+ @@sisurc_path=v
+ @@rc=YAML::load(File::open(p_f))
+ break
+ end
+ unless @@rc
+ f='sisurc.yaml'
+ p_f="#{v}/#{f}"
+ if FileTest.exist?(p_f)
+ begin
+ require 'yaml'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('yaml NOT FOUND (LoadError)')
+ end
+ @@sisurc_path=v
+ @@rc=YAML::load(File::open(p_f))
+ break
+ end
+ end
+ end
+ end
+ end
+ @@rc
+ end
+ def rc_path
+ rc
+ @@sisurc_path
+ end
+ self
+ end
+ def ads #WORK AREA
+ tell_no_yaml='WARNING - YAML loading switched off, to enable delete the file:'
+ if @markup_dir_changed_
+ @ad_path=[
+ "#{$sisu_document_markup_directory_base_fixed_path}/.sisu/#{SiSU_is[:version_dir]}/skin/yml",
+ "#{$sisu_document_markup_directory_base_fixed_path}/.sisu/skin/yml",
+ "#{$sisu_document_markup_directory_base_fixed_path}/_sisu/#{SiSU_is[:version_dir]}/skin/yml",
+ "#{$sisu_document_markup_directory_base_fixed_path}/_sisu/skin/yml",
+ "#{@@home}/.sisu/#{SiSU_is[:version_dir]}/skin/yml",
+ "#{@@home}/.sisu/skin/yml",
+ "#{@@sisu_etc}/#{SiSU_is[:version_dir]}/skin/yml",
+ "#{@@sisu_etc}/skin/yml",
+ ]
+ @ad_path.each do |v|
+ if @@noyaml \
+ or FileTest.exist?("#{v}/noyaml")
+ puts tell_no_yaml + "\n\t#{v}/noyaml\n" unless @@noyaml
+ @@noyaml=true
+ break
+ else
+ if FileTest.exist?("#{v}/list.yml")
+ unless @@ad[:promo_list]
+ begin
+ require 'yaml'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('yaml NOT FOUND (LoadError)')
+ end
+ @@ad[:promo_list] ||= YAML::load(File::open("#{v}/list.yml"))
+ end
+ @@ad[:flag_promo]=true
+ break
+ end
+ @@ad[:flag_promo]=false
+ end
+ end
+ @ad_path.each do |v|
+ if @@noyaml \
+ or FileTest.exist?("#{v}/noyaml")
+ puts tell_no_yaml + "\n\t#{v}/noyaml\n" unless @@noyaml
+ @@noyaml=true
+ break
+ else
+ if FileTest.exist?("#{v}/promo.yml")
+ unless @@ad[:promo]
+ begin
+ require 'yaml'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('yaml NOT FOUND (LoadError)')
+ end
+ @@ad[:promo] ||= YAML::load(File::open("#{v}/promo.yml"))
+ end
+ @@ad[:flag_promo]=true
+ break
+ end
+ @@ad[:flag_promo]=false
+ end
+ end
+ end
+ @@ad
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/se_info_env.rb b/lib/sisu/v5/se_info_env.rb
new file mode 100644
index 0000000..4b625d7
--- /dev/null
+++ b/lib/sisu/v5/se_info_env.rb
@@ -0,0 +1,2164 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_info_env.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+@@current_document=Dir.pwd #nil #''
+module SiSU_Info_Env
+ require_relative 'se_envcall' # se_envcall.rb
+ begin
+ require 'singleton'
+ require 'fileutils'
+ include FileUtils::Verbose
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('singleton or fileutils NOT FOUND (LoadError)')
+ end
+ class InfoEnv < SiSU_Env_Call::EnvCall # se_envcall.rb
+ begin
+ require 'pathname'
+ require 'fileutils'
+ include FileUtils
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pathname or fileutils NOT FOUND (LoadError)')
+ end
+ attr_accessor :filename,:sys,:home,:hostname,:user,:env,:rc,:www,:fnb,:fnn,:fnt,:flv,:webserv_path,:base_markup_dir_stub,:stub_src,:webserv_host_cgi,:webserv_port_cgi,:processing,:processing_git,:etc,:yamlrc_dir
+ @@image_flag,@@local_image=true,true #warning on @@image_flag
+ @@fb,@@man_path=nil,nil
+ def initialize(fns='',md=nil)
+ super() #you may not want to re-execute this static info so frequently!
+ @init=SiSU_Env::GetInit.new #SiSU_Get_Init::GetInit
+ @fns,@md=fns,md
+ @env=SiSU_Env::EnvCall.new(fns) if fns #SiSU_Env_Call::EnvCall
+ fnb=if @md \
+ and defined? @md.fnb
+ @md.fnb
+ elsif defined? @env.fnb \
+ and @env.fnb
+ @env.fnb
+ elsif @fns.is_a?(String) \
+ and not @fns.empty?
+ m=/(.+)?\.(?:(?:-|ssm\.)?sst|ssm)$/m
+ @fns[m,1] if not @fns.empty?
+ end
+ if fnb; @@fb ||=fnb
+ end
+ @sys=SiSU_Info_Sys::InfoSystem.instance
+ @fnb ||=@@fb #clean up this... used primarily for zap which is not passed normal parameters
+ @fixed_websev_root='' # @home
+ @pwd=@@pwd=Dir.pwd
+ @base_markup_dir_stub=SiSU_Utils::Path.new.base_markup_stub
+ @stub_src= @base_markup_dir_stub + '/src'
+ @stub_pod= @base_markup_dir_stub + '/pod'
+ @stub_epub= @base_markup_dir_stub + '/epub'
+ pt=Pathname.new(Dir.pwd)
+ stub=if output_dir_structure.by_language_code?
+ r=Px[:lng_lst_rgx]
+ stub=if Dir.pwd =~/.+?\/([^\/]+)(?:\/(#{r})$)/
+ lng=pt.split[-1].to_s
+ lng_part='/' + lng
+ base=pt.split[0].split[-1].to_s
+ else
+ lng_part='/' + language_default_set
+ base=pt.split[-1].to_s
+ end
+ base + lng_part
+ elsif output_dir_structure.by_filetype?
+ pt.split[-1].to_s
+ elsif output_dir_structure.by_filename?
+ ''
+ else
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ warn('set output type, by: language, filetype or filename')
+ end
+ @stub_set_manifest=stub + '/manifest'
+ end
+ def user
+ @sys.user
+ end
+ def hostname
+ @sys.hostname
+ end
+ def host
+ @sys.host
+ end
+ def arch
+ @sys.arch
+ end
+ def rbver
+ @sys.rbver
+ end
+ def locale
+ @sys.locale
+ end
+ def concord_max
+ ((defined? @rc['processing']['concord_max']) \
+ && @rc['processing']['concord_max']) \
+ ? @rc['processing']['concord_max']
+ : (defaults[:concord_max])
+ end
+ def language_default_set #set directory (default) language
+ ((defined? @rc['default']['language']) \
+ && @rc['default']['language'] =~/\S+/) \
+ ? @rc['default']['language']
+ : 'en'
+ end
+ def markup_emphasis
+ if defined? @rc['default']['emphasis'] \
+ and @rc['default']['emphasis'] \
+ and @rc['default']['emphasis']=~/bold/
+ 'bold'
+ elsif defined? @rc['default']['emphasis'] \
+ and @rc['default']['emphasis'] \
+ and @rc['default']['emphasis']=~/italic/
+ 'italics'
+ elsif defined? @rc['default']['emphasis'] \
+ and @rc['default']['emphasis'] \
+ and @rc['default']['emphasis']=~/underscore/
+ 'underscore'
+ else 'bold'
+ end
+ end
+ def plaintext_wrap
+ ((defined? @rc['default']['text_wrap']) \
+ && (@rc['default']['text_wrap']) \
+ && (@rc['default']['text_wrap'].to_s=~/\d\d+/) \
+ && (@rc['default']['text_wrap'].to_i > 19) \
+ && (@rc['default']['text_wrap'].to_i < 201)) \
+ ? @rc['default']['text_wrap'].to_i
+ : 78
+ end
+ def current_document
+ @@current_document||=Dir.pwd
+ @@current_document
+ end
+ def base_markup_dir_stub
+ @base_markup_dir_stub
+ end
+ def stub_md_harvest #watch
+ @stub_set_manifest
+ end
+ def stub_src
+ @stub_src
+ end
+ def stub_pod
+ @stub_pod
+ end
+ def sisupod_v4(opt)
+ #processing_path.processing
+ # sisupod
+ # doc/
+ # manifest.txt
+ # en/content.sst [file content]
+ # fr/content.sst
+ # _sisu
+ # sisu_document_make
+ # image@ (ln -s ../../image)
+ # audio@ (ln -s ../../audio)
+ # video@ (ln -s ../../video)
+ # image/ [all images for specific document gathered here]
+ # audio/
+ # video/
+ spp="#{processing_path.processing}/#{Gt[:sisupod]}"
+ sppc="#{spp}/doc/_sisu"
+ lng_dirs=[]
+ if FileTest.directory?(spp) \
+ or FileTest.file?(spp)
+ FileUtils::rm_rf(spp)
+ end
+ paths=[]
+ flv=SiSU_Env::EnvCall.new(opt.fns).
+ document_language_versions_found
+ flv[:f].each {|l| lng_dirs << l[:l] }
+ lng_dirs.uniq.each do |lng|
+ paths << "#{spp}/doc/#{lng}"
+ end
+ paths \
+ << "#{spp}/image"
+ #<< "#{spp}/audio" \
+ #<< "#{spp}/video" \
+ paths.each do |x|
+ unless FileTest.directory?(x)
+ FileUtils::mkdir_p(x)
+ end
+ end
+ if FileTest.directory?(sppc)
+ pwd=Dir.pwd
+ Dir.chdir(sppc)
+ FileUtils::ln_s('../../image', 'image')
+ #FileUtils::ln_s('../../audio', 'audio')
+ #FileUtils::ln_s('../../video', 'video')
+ Dir.chdir(pwd)
+ end
+ end
+ def sisupod_v3(opt)
+ #processing_path.processing
+ # sisupod
+ # doc/
+ # manifest.txt
+ # en/content.sst [file content]
+ # fr/content.sst
+ # _sisu
+ # skin/
+ # doc [relevant skin if any other than default]
+ # image@ (ln -s ../../image)
+ # audio@ (ln -s ../../audio)
+ # video@ (ln -s ../../video)
+ # image/ [all images for specific document gathered here]
+ # audio/
+ # video/
+ spp="#{processing_path.processing}/#{Gt[:sisupod]}"
+ sppc="#{spp}/doc/_sisu"
+ lng_dirs=[]
+ if FileTest.directory?(spp) \
+ or FileTest.file?(spp)
+ FileUtils::rm_rf(spp)
+ end
+ paths=[]
+ flv=SiSU_Env::EnvCall.new(opt.fns).
+ document_language_versions_found
+ flv[:f].each {|l| lng_dirs << l[:l] }
+ lng_dirs.uniq.each do |lng|
+ paths << "#{spp}/doc/#{lng}"
+ end
+ paths \
+ << "#{spp}/image" \
+ << "#{sppc}/skin/doc" \
+ << "#{sppc}/skin/dir" \
+ << "#{sppc}/skin/site"
+ #<< "#{spp}/audio" \
+ #<< "#{spp}/video" \
+ paths.each do |x|
+ unless FileTest.directory?(x)
+ FileUtils::mkdir_p(x)
+ end
+ end
+ if FileTest.directory?(sppc)
+ pwd=Dir.pwd
+ Dir.chdir(sppc)
+ FileUtils::ln_s('../../image', 'image')
+ #FileUtils::ln_s('../../audio', 'audio')
+ #FileUtils::ln_s('../../video', 'video')
+ Dir.chdir(pwd)
+ end
+ end
+ def sisupod_v2
+ #processing_path.processing
+ # sisupod
+ # content.sst [file content]
+ # filename.sst [link to content.sst]
+ # _sisu
+ # skin/
+ # doc [relevant skin if any other than default]
+ # image [all images for specific document gathered here]
+ sisupod_processing_path="#{processing_path.processing}/#{Gt[:sisupod]}"
+ if FileTest.directory?(sisupod_processing_path) \
+ or FileTest.file?(sisupod_processing_path)
+ FileUtils::rm_rf(sisupod_processing_path)
+ end
+ paths=[]
+ paths=[
+ "#{processing_path.processing}/#{Gt[:sisupod]}/_sisu/skin/doc",
+ "#{processing_path.processing}/#{Gt[:sisupod]}/_sisu/skin/dir",
+ "#{processing_path.processing}/#{Gt[:sisupod]}/_sisu/skin/site",
+ "#{processing_path.processing}/#{Gt[:sisupod]}/_sisu/image"
+ ]
+ paths.each {|x| FileUtils::mkdir_p(x) unless FileTest.directory?(x) }
+ end
+ def defaults #multiple default directories
+ @default_dir ||=@sys.default_dir #DEFAULT_DIR
+ end
+ def html_seg_title_banner?
+ ((defined? @rc['html']['seg_title_banner']) \
+ && @rc['html']['seg_title_banner']==true) \
+ ? @rc['html']['seg_title_banner']
+ : false
+ end
+ def html_quick_ref?
+ ((defined? @rc['html']['quick_ref']) \
+ && @rc['html']['quick_ref']==true) \
+ ? @rc['html']['quick_ref']
+ : false
+ end
+ def html_minitoc?
+ if defined? @rc['html']['minitoc'] \
+ and @rc['html']['minitoc'].is_a?(String)
+ @rc['html']['minitoc']
+ else false
+ end
+ end
+ def manifest_minitoc?
+ if defined? @rc['manifest']['minitoc'] \
+ and @rc['manifest']['minitoc'].is_a?(String)
+ @rc['manifest']['minitoc']
+ else false
+ end
+ end
+ def build
+ def omit_list
+ @off_list ||=if defined? @rc['omit_list'] \
+ and @rc['omit_list'].is_a?(String)
+ @rc['omit_list']
+ elsif defined? @rc['omit']['list'] \
+ and @rc['omit']['list'].is_a?(String)
+ @rc['omit']['list']
+ else
+ nil
+ end
+ end
+ def listed?(test) #fix
+ listed=if omit_list
+ x=(omit_list.scan(/\b#{test}\b/)).join
+ test==x \
+ ? true
+ : false
+ else
+ false
+ end
+ listed
+ end
+ def ocn?
+ if (defined? @rc['omit']['ocn'] \
+ and not @rc['omit']['ocn'].nil?) \
+ or listed?('ocn')
+ :off
+ else
+ :na
+ end
+ end
+ def toc?
+ if (defined? @rc['omit']['toc'] \
+ and not @rc['omit']['toc'].nil?) \
+ or listed?('toc')
+ :off
+ else
+ :na
+ end
+ end
+ def manifest?
+ if (defined? @rc['omit']['manifest'] \
+ and not @rc['omit']['manifest'].nil?) \
+ or listed?('manifest')
+ :off
+ else
+ :na
+ end
+ end
+ def links_to_manifest?
+ if (defined? @rc['omit']['links_to_manifest'] \
+ and not @rc['omit']['links_to_manifest'].nil?) \
+ or (listed?('links_to_manifest') \
+ || listed?('manifest_links'))
+ :off
+ else
+ :na
+ end
+ end
+ def metadata?
+ if (defined? @rc['omit']['metadata'] \
+ and not @rc['omit']['metadata'].nil?) \
+ or listed?('metadata')
+ :off
+ else
+ :na
+ end
+ end
+ def minitoc?
+ if (defined? @rc['omit']['minitoc'] \
+ and not @rc['omit']['minitoc'].nil?) \
+ or (listed?('minitoc'))
+ :off
+ else
+ :na
+ end
+ end
+ def manifest_minitoc?
+ if (defined? @rc['omit']['manifest_minitoc'] \
+ and not @rc['omit']['manifest_minitoc'].nil?) \
+ or listed?('manifest_minitoc')
+ :off
+ else
+ :na
+ end
+ end
+ def html_minitoc?
+ if (defined? @rc['omit']['html_minitoc'] \
+ and not @rc['omit']['html_minitoc'].nil?) \
+ or (listed?('html_minitoc') \
+ || listed?('minitoc'))
+ :off
+ else
+ :na
+ end
+ end
+ def html_navigation?
+ if (defined? @rc['omit']['html_navigation'] \
+ and not @rc['omit']['html_navigation'].nil?) \
+ or listed?('html_navigation')
+ :off
+ else
+ :na
+ end
+ end
+ def html_navigation_bar?
+ if (defined? @rc['omit']['html_navigation_bar'] \
+ and not @rc['omit']['html_navigation_bar'].nil?) \
+ or listed?('html_navigation_bar')
+ :off
+ else
+ :na
+ end
+ end
+ def segsubtoc?
+ if (defined? @rc['omit']['segsubtoc'] \
+ and not @rc['omit']['segsubtoc'].nil?) \
+ or listed?('segsubtoc')
+ :off
+ else
+ :na
+ end
+ end
+ def html_right_pane?
+ if (defined? @rc['omit']['html_right_pane'] \
+ and not @rc['omit']['html_right_pane'].nil?) \
+ or listed?('html_right_pane')
+ :off
+ else
+ :na
+ end
+ end
+ def html_top_band?
+ if (defined? @rc['omit']['html_top_band'] \
+ and not @rc['omit']['html_top_band'].nil?) \
+ or listed?('html_top_band')
+ :off
+ else
+ :na
+ end
+ end
+ def search_form? #decide later, as is configured here (in sisurc) and can be turned off on command line
+ if (defined? @rc['omit']['search_form'] \
+ and not @rc['omit']['search_form'].nil?) \
+ or listed?('search_form')
+ :off
+ else
+ :na
+ end
+ end
+ def html_search_form? #decide later, as is configured here (in sisurc) and can be turned off on command line
+ if (defined? @rc['omit']['html_search_form'] \
+ and not @rc['omit']['html_search_form'].nil?) \
+ or listed?('html_search_form')
+ :off
+ else
+ :na
+ end
+ end
+ self
+ end
+ def odt_ocn?
+ ((defined? @rc['odt']['ocn']) \
+ && @rc['odt']['ocn']==false) \
+ ? @rc['odt']['ocn']
+ : true
+ end
+ def xml_docbook_ocn?
+ ((defined? @rc['xml_docbook']['ocn']) \
+ && @rc['xml_docbook']['ocn']==false) \
+ ? @rc['xml_docbook']['ocn']
+ : true
+ end
+ def xml_fictionbook_ocn?
+ ((defined? @rc['xml_fictionbook']['ocn']) \
+ && @rc['xml_fictionbook']['ocn']==false) \
+ ? @rc['xml_fictionbook']['ocn']
+ : true
+ end
+ def xml_scaffold_ocn?
+ ((defined? @rc['xml_scaffold']['ocn']) \
+ && @rc['xml_scaffold']['ocn']==false) \
+ ? @rc['xml_scaffold']['ocn']
+ : true
+ end
+ def plaintext_ocn?
+ ((defined? @rc['plaintext']['ocn']) \
+ && @rc['plaintext']['ocn']==false) \
+ ? @rc['plaintext']['ocn']
+ : true
+ end
+ def textile_ocn?
+ ((defined? @rc['textile']['ocn']) \
+ && @rc['textile']['ocn']==true) \
+ ? @rc['textile']['ocn']
+ : false
+ end
+ def asciidoc_ocn?
+ ((defined? @rc['asciidoc']['ocn']) \
+ && @rc['asciidoc']['ocn']==true) \
+ ? @rc['asciidoc']['ocn']
+ : false
+ end
+ def markdown_ocn?
+ ((defined? @rc['markdown']['ocn']) \
+ && @rc['markdown']['ocn']==true) \
+ ? @rc['markdown']['ocn']
+ : false
+ end
+ def rst_ocn?
+ ((defined? @rc['rst']['ocn']) \
+ && @rc['rst']['ocn']==true) \
+ ? @rc['rst']['ocn']
+ : false
+ end
+ def widget #needs (md) #move
+ @rc=SiSU_Env::GetInit.new.sisu_yaml.rc
+ @ad=SiSU_Env::GetInit.new.ads
+ @vz=SiSU_Viz::Defaults.new
+ @flag={
+ ad: false,
+ md: false,
+ sk: false,
+ rc: false
+ }
+ def promo?
+ @flag[:ad]=if @md.flag_promo && @ad[:flag_promo]
+ @flag[:md]=true
+ true
+ elsif defined? @vz.widget_promo \
+ and not @vz.widget_promo.nil? \
+ and @vz.widget_promo.is_a?(Array) \
+ and @vz.widget_promo.length > 0
+ @flag[:sk]=true
+ true
+ elsif defined? @rc['html']['promo'] \
+ and not @rc['html']['promo'].nil? \
+ and @rc['html']['promo'].length > 0
+ @flag[:rc]=true
+ true
+ else false
+ end
+ @flag
+ end
+ def search?
+ searches=['sisu']
+ flag=false
+ if defined? @rc['search']
+ searches.each do |type|
+ flag=if defined? @rc['search'][type] \
+ and defined? @rc['search'][type]['action'] \
+ and @rc['search'][type]['flag']==true \
+ and @rc['search'][type]['action'] =~/https?:\/\//
+ flag=if promo?[:ad]
+ false
+ elsif defined? @vz.widget_search \
+ and @vz.widget_search==true
+ true
+ elsif defined? @rc['search'][type]['flag'] \
+ and @rc['search'][type]['flag']==true
+ true
+ else false
+ end
+ else false
+ end
+ end
+ else false
+ end
+ flag
+ end
+ def search_fixed?
+ searches=['sisu','hyperestraier']
+ flag=if defined? @rc['search']
+ searches.each do |type|
+ if defined? @rc['search'][type] \
+ and defined? @rc['search'][type]['action'] \
+ and @rc['search'][type]['action'] =~/https?:\/\// \
+ and defined? @rc['search'][type]['db'] \
+ and @rc['search'][type]['db'] =~/\S+/
+ flag=if promo?[:ad]
+ false
+ elsif defined? @vz.widget_search \
+ and @vz.widget_search==true
+ true
+ elsif defined? @rc['search'][type]['flag'] \
+ and @rc['search'][type]['flag']==true
+ true
+ else false
+ end
+ else false
+ end
+ end
+ else false
+ end
+ end
+ def search_form(type='sisusearch',action=nil,db=nil,table=false)
+ rc=SiSU_Env::GetInit.new.sisu_yaml.rc
+ create_form_sisu=if action \
+ and db \
+ and action =~/https?:\/\// \
+ and db =~/\S+/
+ true
+ elsif widget.search?
+ db=if rc['search']['sisu']['flag']==true \
+ and rc['search']['sisu']['db']=~/\S+/
+ (rc['search']['sisu']['db']=~/^#{Db[:name_prefix]}\S+/) \
+ ? rc['search']['sisu']['db']
+ : "#{Db[:name_prefix]}#{rc['search']['sisu']['db']}"
+ else nil
+ end
+ action=rc['search']['sisu']['action']
+ true
+ elsif defined? rc['search']['sisu']['flag'] \
+ and defined? rc['search']['sisu']['action'] \
+ and rc['search']['sisu']['flag']==true \
+ and rc['search']['sisu']['action'] =~/https?:\/\//
+ true
+ else false
+ end
+ if table
+ table_open='<td align="center" bgcolor="#ffffff">'
+ table_close='</td>'
+ else
+ table_open=''
+ table_close='<br />'
+ end
+ form=if create_form_sisu \
+ and type=~/sisusearch/ \
+ and defined? rc['search']['sisu'] \
+ and defined? rc['search']['sisu']['action']
+ <<WOK
+<!-- SiSU Search -->
+#{table_open}
+<a name="search"></a>
+<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
+<font size="2">
+<input type="text" name="s1" size="24" maxlength="255" />
+<input type="hidden" name="db" value="#{db}" />
+<input type="hidden" name="ltd" value="1000" />
+<input type="hidden" name="off" value="0" />
+<input type="hidden" name="doc" value="#{@md.fnb}" /><br />
+<input type="submit" name="search" value="search doc" />
+<input type="submit" name="search" value="search db" />
+</font></form>
+#{table_close}
+<!-- SiSU Search -->
+WOK
+ else ''
+ end
+ form
+ end
+ def search_form_static(action=nil,db=nil)
+ rc=SiSU_Env::GetInit.new.sisu_yaml.rc
+ create_form=if rc['search']['sisu']['flag']==true \
+ and action \
+ and db \
+ and action =~/https?:\/\// \
+ and db =~/\S+/
+ true
+ elsif widget.search_fixed?
+ db=if rc['search']['sisu']['flag']==true \
+ and rc['search']['sisu']['db']=~/\S+/
+ (rc['search']['sisu']['db']=~/^#{Db[:name_prefix]}\S+/) \
+ ? rc['search']['sisu']['db']
+ : "#{Db[:name_prefix]}#{rc['search']['sisu']['db']}"
+ else nil
+ end
+ action=rc['search']['sisu']['action']
+ true
+ else false
+ end
+ if create_form
+ %{<td align="center" bgcolor="#ffffff">
+<!-- SiSU Search -->
+<a name="search"></a>
+<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
+<font size="2">
+<input type="text" name="s1" size="24" maxlength="255" />
+<br />
+<input type="hidden" name="db" value="#{db}" />
+<input type="hidden" name="ltd" value="1000" />
+<input type="hidden" name="off" value="0" />
+<input type="hidden" name="doc" value="#{@md.fnb}" />
+<input type="submit" name="search" value="search doc" />
+<input type="submit" name="search" value="search db" />
+</font>
+</form>
+<!-- SiSU Search -->
+</td> }
+ else ''
+ end
+ end
+ def search_action #check
+ if search?
+ else ''
+ end
+ end
+ self
+ end
+ def widget_static
+ @rc=SiSU_Env::GetInit.new.sisu_yaml.rc
+ @vz=SiSU_Viz::Defaults.new
+ @flag={ ad: false, md: false, sk: false, rc: false }
+ def search?
+ flag=if defined? @rc['search'] \
+ and defined? @rc['search']['sisu'] \
+ and defined? @rc['search']['sisu']['action'] \
+ and @rc['search']['sisu']['action'] =~/https?:\/\// \
+ and defined? @rc['search']['sisu']['db'] \
+ and @rc['search']['sisu']['db'] =~/\S+/
+ flag=if defined? @vz.widget_search \
+ and @vz.widget_search==true
+ true
+ elsif defined? @rc['search']['sisu']['flag'] \
+ and @rc['search']['sisu']['flag']==true
+ true
+ else
+ false
+ end
+ else
+ false
+ end
+ end
+ def search_fixed?
+ flag=if defined? @rc['search'] \
+ and defined? @rc['search']['sisu'] \
+ and defined? @rc['search']['sisu']['action'] \
+ and @rc['search']['sisu']['action'] =~/https?:\/\// \
+ and defined? @rc['search']['sisu']['db'] \
+ and @rc['search']['sisu']['db'] =~/\S+/ \
+ and defined? @rc['search']['sisu']['db'] \
+ and @rc['search']['sisu']['db'] =~/\S+/
+ flag=if defined? @vz.widget_search \
+ and @vz.widget_search==true
+ true
+ elsif defined? @rc['search']['sisu']['flag'] \
+ and @rc['search']['sisu']['flag']==true
+ true
+ else
+ false
+ end
+ else
+ false
+ end
+ end
+ def search_form(action=nil,db=nil)
+ rc=SiSU_Env::GetInit.new.sisu_yaml.rc
+ create_form=if defined? rc['search']['sisu']['flag'] \
+ and rc['search']['sisu']['flag']==true \
+ and action \
+ and db \
+ and action =~/https?:\/\// \
+ and db =~/\S+/
+ true
+ elsif widget_static.search? \
+ and rc['search']['sisu']['flag']==true
+ db=if rc['search']['sisu']['db']=~/\S+/
+ (rc['search']['sisu']['db']=~/^#{Db[:name_prefix]}\S+/) \
+ ? rc['search']['sisu']['db']
+ : "#{Db[:name_prefix]}#{rc['search']['sisu']['db']}"
+ else nil
+ end
+ action=rc['search']['sisu']['action']
+ true
+ else false
+ end
+ if create_form \
+ and @fnb \
+ and @fnb=~/\S+/
+ %{<!-- SiSU Search -->
+<a name="search"></a>
+<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
+<font size="2">
+<input type="text" name="s1" size="24" maxlength="255" />
+<br />
+<input type="hidden" name="db" value="#{db}" />
+<input type="hidden" name="doc" value="#{@fnb}" />
+<input type="submit" name="search" value="search doc" />
+<input type="submit" name="search" value="search db" />
+</font>
+</form>
+<!-- SiSU Search --> }
+ elsif create_form
+ %{<!-- SiSU Search -->
+<a name="search"></a>
+<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
+<font size="2">
+<input type="text" name="s1" size="24" maxlength="255" />
+<br />
+<input type="hidden" name="db" value="#{db}" />
+<input type="submit" name="search" value="search db" />
+</font>
+</form>
+<!-- SiSU Search --> }
+ else ''
+ end
+ end
+ def search_action #check
+ if search?
+ else ''
+ end
+ end
+ self
+ end
+ def source_file_path
+ file=@fns.gsub(/\.ssm(?:\.sst)?/,'.ssm.sst')
+ unless file =~/\.ssm\.sst$/; "#{Dir.pwd}"
+ else "#{processing_path.composite_file}"
+ end
+ end
+ def source_file_with_path
+ file=@fns.gsub(/\.ssm(?:\.sst)?/,'.ssm.sst')
+ "#{source_file_path}/#{file}"
+ end
+ def texpdf_hyperlinks(cli)
+ @cli=cli
+ @hyplnks=if cli != :na
+ cli
+ elsif (defined? @rc['default']['pdf_hyperlinks']) \
+ && (@rc['default']['pdf_hyperlinks']=~/color/)
+ :color
+ elsif (defined? @rc['default']['pdf_hyperlinks']) \
+ && (@rc['default']['pdf_hyperlinks'] \
+ =~/(?:no-color|color-off|mono(?:chrome)?)/)
+ :mono
+ else :na
+ end
+ def landscape
+ if @cli != :na
+ @cli
+ elsif (defined? @rc['default']['pdf_hyperlinks_landscape']) \
+ && (@rc['default']['pdf_hyperlinks_landscape']=~/color/)
+ :color
+ elsif (defined? @rc['default']['pdf_hyperlinks_landscape']) \
+ && (@rc['default']['pdf_hyperlinks_landscape'] \
+ =~/(?:no-color|color-off|mono(?:chrome)?)/)
+ :mono
+ elsif @hyplnks != :na
+ @hyplnks
+ else :na
+ end
+ end
+ def portrait
+ if @cli != :na
+ @cli
+ elsif (defined? @rc['default']['pdf_hyperlinks_portrait']) \
+ && (@rc['default']['pdf_hyperlinks_portrait']=~/color/)
+ :color
+ elsif (defined? @rc['default']['pdf_hyperlinks_portrait']) \
+ && (@rc['default']['pdf_hyperlinks_portrait'] \
+ =~/(?:no-color|color-off|mono(?:chrome)?)/)
+ :mono
+ elsif @hyplnks != :na
+ @hyprlnks
+ else :na
+ end
+ end
+ self
+ end
+ def font
+ def size(pt=nil)
+ if pt && pt != :na
+ pt
+ elsif defined? @rc['default']['fontsize'] \
+ && @rc['default']['fontsize']=~/\d{1,2}/
+ @rc['default']['fontsize']
+ else :na
+ end
+ end
+ def texpdf
+ # you may wish to check selected font against available fonts:
+ # fc-list :outline -f "%{family}\n"
+ # fc-list :lang=ja
+ def main
+ (defined? @rc['default']['texpdf_fontface']) \
+ && (@rc['default']['texpdf_fontface']=~/\S{3,}/) \
+ ? @rc['default']['texpdf_fontface']
+ : 'Liberation Sans'
+ end
+ def sans # not used
+ (defined? @rc['default']['texpdf_fontface_sans']) \
+ && (@rc['default']['texpdf_fontface_sans']=~/\S{3,}/) \
+ ? @rc['default']['texpdf_fontface_sans']
+ : 'Liberation Sans'
+ end
+ def serif # not used
+ (defined? @rc['default']['texpdf_fontface_serif']) \
+ && (@rc['default']['texpdf_font_serif']=~/\S{3,}/) \
+ ? @rc['default']['texpdf_fontface_serif']
+ : 'Liberation Serif'
+ end
+ def mono
+ (defined? @rc['default']['texpdf_fontface_mono']) \
+ && (@rc['default']['texpdf_fontface_mono']=~/\S{3,}/) \
+ ? @rc['default']['texpdf_fontface_mono']
+ : 'Liberation Mono'
+ end
+ def cjk
+ (defined? @rc['default']['texpdf_fontface_cjk']) \
+ && (@rc['default']['texpdf_fontface_cjk']=~/\S{3,}/) \
+ ? @rc['default']['texpdf_fontface_cjk']
+ : 'IPAGothic' # 'IPAGothic' # 'IPAMincho' # 'TakaoMincho' # 'VL Gothic'
+ end
+ def cjk_zh
+ (defined? @rc['default']['texpdf_fontface_cjk_zh']) \
+ && (@rc['default']['texpdf_fontface_cjk_zh']=~/\S{3,}/) \
+ ? @rc['default']['texpdf_fontface_cjk_zh']
+ : 'IPAGothic'
+ end
+ def cjk_ja
+ (defined? @rc['default']['texpdf_fontface_cjk_ja']) \
+ && (@rc['default']['texpdf_fontface_cjk_ja']=~/\S{3,}/) \
+ ? @rc['default']['texpdf_fontface_cjk_ja']
+ : 'IPAGothic'
+ end
+ def cjk_ko
+ (defined? @rc['default']['texpdf_fontface_cjk_ko']) \
+ && (@rc['default']['texpdf_fontface_cjk_ko']=~/\S{3,}/) \
+ ? @rc['default']['texpdf_fontface_cjk_ko']
+ : 'IPAGothic'
+ end
+ def size(pt=nil)
+ if pt && pt != :na
+ pt
+ elsif (defined? @rc['default']['texpdf_fontsize']) \
+ && (@rc['default']['texpdf_fontsize']=~/\d{1,2}/)
+ @rc['default']['texpdf_fontsize']
+ elsif (defined? @rc['default']['fontsize']) \
+ && (@rc['default']['fontsize']=~/\d{1,2}/)
+ @rc['default']['fontsize']
+ else
+ :na
+ end
+ end
+ self
+ end
+ self
+ end
+ def path_rel_links
+ def html_scroll_2
+ if @env.output_dir_structure.by_language_code?
+ '../../'
+ elsif @env.output_dir_structure.by_filetype?
+ '../'
+ else
+ '../'
+ end
+ end
+ def html_seg_2
+ if @env.output_dir_structure.by_language_code?
+ '../../../'
+ elsif @env.output_dir_structure.by_filetype?
+ '../../'
+ else
+ '../'
+ end
+ end
+ def html_scroll_1
+ if @env.output_dir_structure.by_language_code?
+ '../'
+ elsif @env.output_dir_structure.by_filetype?
+ '../'
+ else
+ './'
+ end
+ end
+ def html_seg_1
+ if @env.output_dir_structure.by_language_code?
+ '../../'
+ elsif @env.output_dir_structure.by_filetype?
+ '../../'
+ else
+ './'
+ end
+ end
+ self
+ end
+ def read_source_file_array(fns)
+ (fns !~/\.ssm.sst$/) \
+ ? (IO.readlines(fns, mode: 'r:utf-8', cr_newline: true))
+ : (IO.readlines(
+ "#{processing_path.composite_file}/#{fns}",
+ mode: 'r:utf-8',
+ cr_newline: true
+ ))
+ end
+ def read_source_file(fns)
+ read_source_file_array(fns)
+ end
+ def read_source_file_string(fns)
+ (fns !~/\.ssm.sst$/) \
+ ? (IO.read(fns, mode: 'r:utf-8', cr_newline: true))
+ : (IO.read(
+ "#{processing_path.composite_file}/#{fns}",
+ mode: 'r:utf-8',
+ cr_newline: true
+ ))
+ end
+ def source_file_processing_array(fns)
+ read_source_file_string(fns).split(/\s*\n\s*\n/m)
+ end
+ def path #dir
+ def home
+ @sys.home
+ end
+ def sisurc_path
+ GetInit.new.sisu_yaml.rc_path
+ end
+ def pwd
+ @sys.pwd
+ end
+ def base_markup_dir_stub
+ @base_markup_dir_stub
+ end
+ def stub_epub
+ @stub_epub
+ end
+ def stub_src
+ @stub_src
+ end
+ def stub_pod
+ @stub_pod
+ end
+ def etc
+ defaults[:sisu_etc] #live/dynamic
+ end
+ def arch
+ @sys.dir_arch
+ end
+ def sitearch
+ @sys.dir_sitearch
+ end
+ def bin
+ @sys.dir_bin
+ end
+ def share #shared data repository source directory
+ #SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).
+ # mark(defaults[:sisu_share])
+ defaults[:sisu_share]
+ end
+ def style
+ if @md \
+ && ((@md.opt.opt_act[:dump][:bool] \
+ && @md.opt.opt_act[:dump][:inst]) \
+ || (@md.opt.opt_act[:redirect][:bool] \
+ && @md.opt.opt_act[:redirect][:inst]))
+ 'css'
+ else
+ defaults[:stylesheet_stub]
+ end
+ end
+ def sample_data #sample data repository source directory
+ defaults[:sample_data_path]
+ end
+ def rc
+ @init.rc_path
+ end
+ def yamlrc
+ GetInit.new.sisu_yaml.rc_path
+ end
+ def man #check use
+ (defined? @rc['webserv']['man']) \
+ ? "#{webserv}/#{@rc['webserv']['man']}"
+ : defaults[:webserv_man]
+ end
+ def webserv_path #testing, check need, remove
+ webserv
+ end
+ def webserv #separation required for webrick which cannot use path.output (different requirements as no file is passed)
+ man_path=if @@man_path.nil?
+ man_path=if defined? @rc['webserv']['path'] \
+ and @rc['webserv']['path'] =~/\S\S+/
+ pwd=Dir.pwd
+ Dir.chdir(SiSU_Utils::Path.new.base_markup)
+ man_path=@@man_path=File.expand_path(@rc['webserv']['path'])
+ Dir.chdir(pwd)
+ man_path
+ else defaults[:webserv_path]
+ end
+ else @@man_path
+ end
+ man_path_head=man_path.gsub(/(\S+)\/[^\/\s]+$/,'\1')
+ unless FileTest.directory?(man_path)
+ FileUtils::mkdir_p(man_path) if File.writable?("#{man_path_head}/.")
+ end
+ @webserv_path=if defined? man_path \
+ and File.writable?("#{man_path}/.")
+ man_path #web server path as configured in rc file
+ elsif FileTest.directory?(defaults[:webserv_path]) \
+ and File.writable?("#{defaults[:webserv_path]}/.") #web server path default
+ defaults[:webserv_path]
+ else #create default directory under home and place output there
+ unless FileTest.directory?(defaults[:output_local])
+ FileUtils::mkdir_p(defaults[:output_local])
+ end
+ defaults[:output_local]
+ end
+ end
+ def webserv_stub_ensure
+ FileUtils::mkdir_p(path.webserv) unless FileTest.directory?(path.webserv)
+ FileUtils::mkdir_p("#{path.webserv}/#{@base_markup_dir_stub}") \
+ unless FileTest.directory?("#{path.webserv}/#{@base_markup_dir_stub}")
+ end
+ def webserv_map_pwd #dir
+ "#{path.webserv}/#{base_markup_dir_stub}"
+ end
+ def webserv_dir #fixed/hard path to /www web/presentation directory, on Debian /var/www subdirectories are created within it, depending on markup directory stub-name (last segment of markup directory name)
+ defaults[:webserv_dir]
+ end
+ def webserv_image #web/presentation directory, subdirectories are created within it, depending on markup directory stub-name (last segment of markup directory name)
+ images=if defined? @rc['webserv']['images']
+ @rc['webserv']['images']
+ else defaults[:images]
+ end
+ "#{path.webserv}/#{images}"
+ end
+ def output #web/webserv output directory... subdirectory into which further subdirectories are made based on file names
+ r=Px[:lng_lst_rgx]
+ u=/.+?\/([^\/]+)(?:\/(?:#{r})$|$)/
+ base_stub=@sys.pwd.gsub(u,'\1')
+ if Dir.pwd =~/\/#{Gt[:sisupod]}\/[^\/]+\/#{Gt[:pod]}\/#{Gt[:doc]}/
+ "#{path.webserv}/#{Gt[:doc]}"
+ else
+ "#{path.webserv}/#{base_stub}"
+ end
+ end
+ def feed
+ (defined? @rc['webserv']['feed']) \
+ ? ("#{public_output}/#{@rc['webserv']['feed']}")
+ : (defaults[:webserv_feed])
+ end
+ def feed_home
+ "#{public_output}/#{@rc['webserv']['feed_home']}"
+ end
+ def scripts #used previously only to include tla version info
+ if defined? @rc['project']['path']
+ "#{home}/#{@rc['project']['path']}"
+ end
+ end
+ def cgi
+ (defined? @rc['webserv']['cgi']) \
+ ? "#{@rc['webserv']['cgi']}"
+ : (defaults[:webserv_cgi])
+ end
+ def php
+ (defined? @rc['webserv']['php']) \
+ ? "#{public_output}/#{@rc['webserv']['php']}"
+ : (defaults[:webserv_php])
+ end
+ #% programs
+ def output_tell
+ url.webserv_map_pwd
+ end
+ def image_source #image repository source directory
+ if defined? @rc['image']['path'] \
+ and defined? @rc['image']['public']
+ pth="#{@rc['image']['path']}"
+ "#{pth}/#{@rc['image']['public']}"
+ else
+ "#{share}/image"
+ end
+ end
+ def image_source_sisu_includes
+ "#{share}/image"
+ end
+ def image_source_include #image repository source directory
+ if defined? @rc['image']['path'] \
+ and defined? @rc['image']['public'] \
+ and FileTest.directory?(
+ "#{@rc['image']['path']}/#{@rc['image']['public']}"
+ )==true
+ "#{@rc['image']['path']}/#{@rc['image']['public']}"
+ elsif FileTest.directory?("#{@@pwd}/#{defaults[:image_stub]}")==true
+ "#{@@pwd}/#{defaults[:image_stub]}"
+ elsif FileTest.directory?(
+ "#{SiSU_Utils::Path.new.base_markup}/#{defaults[:image_stub]}"
+ )==true
+ "#{SiSU_Utils::Path.new.base_markup}/#{defaults[:image_stub]}"
+ else
+ "#{share}/image"
+ end
+ end
+ def image_external
+ "#{processing}/external_document/image"
+ end
+ def image_source_include_local
+ if FileTest.directory?(defaults[:image_local])
+ defaults[:image_local]
+ end
+ end
+ def image_source_include_remote
+ if FileTest.directory?(image_external); image_external
+ end
+ end
+ self
+ end
+ def processing_path
+ def encoding
+ pth="#{processing}/#{defaults[:processing_encoding]}"
+ FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
+ pth
+ end
+ def processing_base_tmp
+ defaults[:processing_path_tmp_base]
+ end
+ def tmp_root_dir
+ defaults[:processing_dir_tmp_root]
+ end
+ def root_dir
+ proposed_path_base=if defined? @rc['processing']['path'] \
+ and not @rc['processing']['path'].nil? \
+ and not @rc['processing']['path'].empty?
+ x=if @rc['processing']['path'] =~/^(?:~|home)$/
+ home #fix
+ else @rc['processing']['path']
+ end
+ else nil
+ end
+ proposed_dir=if defined? @rc['processing']['dir'] \
+ and not @rc['processing']['dir'].nil? \
+ and not @rc['processing']['dir'].empty?
+ @rc['processing']['dir']
+ else defaults[:processing_dir]
+ end
+ v=SiSU_Env::InfoVersion.instance.get_version
+ v_dev=(DEVELOPER[:maintenance]==:true) \
+ ? "_#{v[:version]}"
+ : ''
+ path=if proposed_path_base \
+ and FileTest.directory?(proposed_path_base) \
+ and File.writable?("#{proposed_path_base}/.")
+ x=proposed_dir \
+ ? "#{proposed_path_base}/#{proposed_dir}"
+ : "#{proposed_path_base}/#{defaults[:processing_dir]}"
+ else defaults[:processing_dir_tmp_root]
+ end
+ path = path + v_dev
+ end
+ def usr_dir?
+ case root_dir
+ when /^\/home/ then false
+ else true
+ end
+ end
+ def stub_dir
+ (usr_dir?) \
+ ? ("#{root_dir}/#{user}/#{base_markup_dir_stub}")
+ : ("#{root_dir}/#{base_markup_dir_stub}") # see defaults[:processing_path]
+ end
+ def stub_dir_orig # ends up with lang, if lang dir
+ (usr_dir?) \
+ ? ("#{root_dir}/#{user}/#{base_markup_dir_stub}")
+ : ("#{root_dir}/#{base_markup_dir_stub}") # see defaults[:processing_path]
+ end
+ def processing_sisupod(opt=nil) #processing directory, used/needed for sisu work files, has sub-directories (ao,tex etc)
+ @opt=opt
+ def paths
+ processing_path_usr="#{root_dir}/#{user}"
+ processing_path_fnb=processing_path_usr \
+ + '/' + Gt[:pods] \
+ + '/' + @opt.fng
+ processing_path_sisupod=processing_path_fnb \
+ + '/' + Gt[:sisupod]
+ {
+ fnb: processing_path_fnb,
+ sisupod: processing_path_sisupod,
+ }
+ end
+ def make
+ unless FileTest.directory?(root_dir)
+ FileUtils::mkdir_p(root_dir)
+ File.chmod(0777,root_dir)
+ end
+ if usr_dir?
+ processing_path_usr="#{root_dir}/#{user}"
+ FileUtils::mkdir_p(processing_path_usr) \
+ unless FileTest.directory?(processing_path_usr)
+ File.chmod(0700,processing_path_usr)
+ end
+ sisupod_processing_path=paths[:sisupod]
+ FileUtils::mkdir_p(sisupod_processing_path) \
+ unless FileTest.directory?(sisupod_processing_path)
+ sisupod_processing_path_lng=if defined? @opt.lng
+ sisupod_processing_path \
+ + '/' + Gt[:doc] \
+ + '/' + @opt.lng
+ else
+ sisupod_processing_path \
+ + '/' + Gt[:doc]
+ end
+ unless FileTest.directory?(sisupod_processing_path_lng)
+ #puts "a processing directory (#{sisupod_processing_path_lng}) is being created for use by sisu"
+ FileUtils::mkdir_p(sisupod_processing_path_lng)
+ File.chmod(0700,sisupod_processing_path_lng)
+ end
+ sisupod_processing_path
+ end
+ self
+ end
+ def processing #processing directory, used/needed for sisu work files, has sub-directories (ao,tex etc)
+ unless FileTest.directory?(root_dir)
+ FileUtils::mkdir_p(root_dir)
+ File.chmod(0777,root_dir)
+ end
+ if usr_dir?
+ processing_path_usr="#{root_dir}/#{user}"
+ FileUtils::mkdir_p(processing_path_usr) \
+ unless FileTest.directory?(processing_path_usr)
+ File.chmod(0700,processing_path_usr)
+ end
+ FileUtils::mkdir_p(stub_dir) \
+ unless FileTest.directory?(stub_dir)
+ File.chmod(0700,stub_dir)
+ path_processing=[
+ stub_dir,
+ defaults[:processing_path],
+ defaults[:processing_path_home]
+ ]
+ processing=nil
+ path_processing.each do |v| #
+ processing=v
+ unless FileTest.directory?(processing)
+ FileUtils::mkdir_p(processing)
+ File.chmod(0700,processing)
+ end
+ break
+ end
+ processing
+ end
+ def ao
+ pth=if defined? @rc['processing']['dal'] \
+ and @rc['processing']['dal'].is_a?(String)
+ "#{processing}/#{@rc['processing']['dal']}"
+ else "#{processing}/#{defaults[:processing_ao]}"
+ end
+ FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
+ pth
+ end
+ def tune
+ pth=if defined? @rc['processing']['tune'] \
+ and @rc['processing']['tune'].is_a?(String)
+ "#{processing}/#{@rc['processing']['tune']}"
+ else "#{processing}/#{defaults[:processing_tune]}"
+ end
+ FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
+ pth
+ end
+ def composite_file
+ pth=processing_path.ao #"#{processing}/composite"
+ FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
+ pth
+ end
+ def git
+ pth=if defined? @rc['git']['dir'] \
+ and @rc['git']['dir'].is_a?(String)
+ (@rc['git']['dir'] =~/^(?:~|home)$/) \
+ ? home + '/' + Gt[:git]
+ : @rc['git']['dir'] + '/' + Gt[:git]
+ else defaults[:processing_git]
+ end
+ unless FileTest.directory?(pth)
+ FileUtils::mkdir_p(pth)
+ File.chmod(0700,pth)
+ end
+ pth
+ end
+ def odf_pth
+ pth="#{processing}/odf/#{@fns}"
+ pth
+ end
+ def odf
+ odt
+ end
+ def odt
+ pth=odf_pth + '/odt'
+ FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
+ pth
+ end
+ def odf
+ pth="#{processing}/odf"
+ FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
+ pth
+ end
+ def odt_bld
+ FileUtils::rm_rf(processing_path.odt)
+ FileUtils::mkdir_p(processing_path.odt) \
+ unless FileTest.directory?(processing_path.odt)
+ FileUtils::mkdir_p("#{processing_path.odt}/Configurations2") \
+ unless FileTest.directory?("#{processing_path.odt}/Configurations2")
+ FileUtils::mkdir_p("#{processing_path.odt}/META-INF") \
+ unless FileTest.directory?("#{processing_path.odt}/META-INF")
+ FileUtils::mkdir_p("#{processing_path.odt}/Pictures") \
+ unless FileTest.directory?("#{processing_path.odt}/Pictures")
+ FileUtils::mkdir_p("#{processing_path.odt}/Thumbnails") \
+ unless FileTest.directory?("#{processing_path.odt}/Thumbnails")
+ processing_path.odt
+ end
+ def epub
+ "#{processing}/epub/#{@fnb}"
+ end
+ def epub_bld #(md)
+ FileUtils::rm_rf(processing_path.epub) \
+ if FileTest.directory?(processing_path.epub)
+ FileUtils::mkdir_p(processing_path.epub) \
+ unless FileTest.directory?(processing_path.epub)
+ FileUtils::mkdir_p("#{processing_path.epub}/META-INF") \
+ unless FileTest.directory?("#{processing_path.epub}/META-INF")
+ FileUtils::mkdir_p("#{processing_path.epub}/#{Ep[:d_oebps]}/image") \
+ unless FileTest.directory?("#{processing_path.epub}/#{Ep[:d_oebps]}/image")
+ FileUtils::mkdir_p("#{processing_path.epub}/#{Ep[:d_oebps]}/css") \
+ unless FileTest.directory?("#{processing_path.epub}/#{Ep[:d_oebps]}/css")
+ processing_path.epub
+ end
+ def epub_cp_images(md)
+ pth="#{processing_path.epub}/#{Ep[:d_oebps]}/image"
+ FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
+ src="#{path.share}/image"
+ images=%W[bullet_09.png arrow_next_red.png arrow_prev_red.png arrow_up_red.png]
+ images.each do |i| #move to avoid repeated tests
+ if FileTest.file?("#{src}/#{i}")
+ FileUtils::cp("#{src}/#{i}","#{pth}/#{i}") \
+ unless FileTest.file?("#{pth}/#{i}")
+ else STDERR.puts %{\t*WARN* did not find image - "#{i}" [#{__FILE__}:#{__LINE__}]}
+ end
+ end
+ pth
+ end
+ def tex
+ pth=if defined? @rc['processing']['latex'] \
+ and @rc['processing']['latex'].is_a?(String)
+ "#{processing}/#{@rc['processing']['latex']}"
+ else "#{processing}/#{defaults[:processing_latex]}"
+ end
+ FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
+ pth
+ end
+ def texi
+ pth=if defined? @rc['processing']['texinfo'] \
+ and @rc['processing']['texinfo'].is_a?(String)
+ "#{processing}/#{@rc['processing']['texinfo']}"
+ else "#{processing}/#{defaults[:processing_texinfo]}"
+ end
+ FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
+ pth
+ end
+ def texinfo #texinfo webserv, check
+ "#{processing}/#{defaults[:processing_texinfo]}"
+ end
+ def manpage
+ "#{path.output}/man"
+ end
+ def lout
+ pth=if defined? @rc['processing']['lout'] \
+ and @rc['processing']['lout'].is_a?(String)
+ "#{processing}/#{@rc['processing']['lout']}"
+ else "#{processing}/#{defaults[:processing_lout]}"
+ end
+ FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
+ pth
+ end
+ def sql
+ pth="#{processing}/sql"
+ FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
+ pth
+ end
+ def sqlite
+ pth=if defined? @rc['processing']['sqlite'] \
+ and @rc['processing']['sqlite'].is_a?(String)
+ "#{processing}/#{@rc['processing']['sqlite']}"
+ else "#{processing}/#{defaults[:processing_sqlite]}"
+ end
+ FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
+ pth
+ end
+ def postgresql
+ pth=if defined? @rc['processing']['postgresql'] \
+ and @rc['processing']['postgresql'].is_a?(String)
+ "#{processing}/#{@rc['processing']['postgresql']}"
+ else "#{processing}/#{defaults[:processing_postgresql]}"
+ end
+ FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
+ pth
+ end
+ self
+ end
+ def url
+ def hostname
+ "http://#{@sys.hostname}"
+ end
+ def dir_url
+ "file://#{path.webserv}/#{base_markup_dir_stub}"
+ end
+ def localhost
+ "http://localhost/#{base_markup_dir_stub}"
+ end
+ def local
+ "http://#{hostname}/#{@base_markup_dir_stub}"
+ end
+ def root
+ if defined? @rc['webserv']['url_root'] \
+ and @rc['webserv']['url_root'] =~/https?:\/\//
+ "#{@rc['webserv']['url_root']}/#{@base_markup_dir_stub}"
+ elsif defined? @rc['webserv']['url_root'] \
+ and @rc['webserv']['url_root'] =~/localhost/
+ "http://localhost/#{@base_markup_dir_stub}"
+ else "file://#{path.output}"
+ end
+ end
+ def remote
+ root
+ end
+ def txt
+ "#{root}/txt"
+ end
+ def html
+ "#{root}/html"
+ end
+ def epub
+ "#{root}/epub"
+ end
+ def odt
+ "#{root}/odt"
+ end
+ def pdf
+ "#{root}/pdf"
+ end
+ def src_txt
+ "#{root}/src"
+ end
+ def src_pod
+ "#{root}/pod"
+ end
+ def pot
+ "#{root}/po4a/pot"
+ end
+ def po
+ "#{root}/po4a/po"
+ end
+ def webserv_host_base(opt=nil)
+ if defined? @rc['webserv']['host']
+ case @rc['webserv']['host']
+ when /https?:\/\// then @rc['webserv']['host']
+ when /\S+/ then "http://#{@rc['webserv']['host']}"
+ else defaults[:webserv_host_cgi]
+ end
+ else defaults[:webserv_host_cgi]
+ end
+ end
+ def webserv_cgi(opt=nil) #web url for local webserv (localhost, or hostname)
+ http=if defined? @rc['webserv_cgi']['host'] \
+ and @rc['webserv_cgi']['host'].is_a?(String)
+ http=((@rc['webserv_cgi']['host'] =~ /https?:\/\//) ? '' : 'http://') #check https? missing
+ if port.webserv_port_cgi
+ http + @rc['webserv_cgi']['host'] + ':' \
+ + port.webserv_port_cgi + '/' \
+ + @base_markup_dir_stub
+ else
+ http + @rc['webserv_cgi']['host'] + '/' \
+ + @base_markup_dir_stub
+ end
+ else
+ http=((webserv_host_base=~/https?:\/\//) ? '' : 'http://')
+ if port.webserv_port_cgi(opt)
+ http + webserv_host_base + ':' \
+ + port.webserv_port_cgi(opt) + '/'\
+ + @base_markup_dir_stub
+ else
+ http + webserv_host_base + '/' \
+ + @base_markup_dir_stub
+ end
+ end
+ http=http.strip
+ end
+ def webserv_base_cgi(opt=nil) #web url for local webserv (localhost, or hostname)
+ http=if opt.mod.inspect =~/--webserv-(?:cgi|db|search)[=-]["']?(\S+)["']+/
+ m=$1
+ (m=~/http\/\/:/) ? m : %{http://#{m}}
+ elsif defined? @rc['webserv_cgi']['host'] \
+ and @rc['webserv_cgi']['host'].is_a?(String)
+ http=((@rc['webserv_cgi']['host'] =~ /https?:\/\//) ? '' : 'http://')
+ if port.webserv_port_cgi(opt)
+ http + @rc['webserv_cgi']['host'] + ':' \
+ + port.webserv_port_cgi(opt)
+ else
+ http + @rc['webserv_cgi']['host']
+ end
+ else
+ http=((webserv_host_base=~/https?:\/\//) ? '' : 'http://')
+ if port.webserv_port_cgi(opt)
+ http + webserv_host_base + ':' \
+ + port.webserv_port_cgi(opt)
+ else "#{http}#{webserv_host_base}"
+ end
+ end
+ http=http.strip
+ #%q{http://#{ENV['HTTP_HOST']}}
+ end
+ def webrick #must have a port #REMOVE
+ if defined? @rc['webserv_cgi']['host'] \
+ and @rc['webserv_cgi']['host'].is_a?(String)
+ http=if @rc['webserv_cgi']['host'] =~/http:\/\//
+ 'http://'
+ elsif @rc['webserv_cgi']['host'] =~/https:\/\//
+ 'https://'
+ else defaults
+ end
+ "#{http}#{@rc['webserv_cgi']['host']}"
+ elsif webserv_host_base \
+ and webserv_host_base.is_a?(String)
+ http + webserv_host_base
+ else
+ http + 'localhost'
+ end
+ end
+ def webserv #web url for local webserv (localhost, or hostname)
+ if defined? @rc['webserv']['url_root'] \
+ and @rc['webserv']['url_root'] =~/http/
+ # needed for alternative output dir structures, fixes manifest url links, check may cause problems elsewhere
+ @rc['webserv']['url_root']
+ elsif path.webserv_dir \
+ and path.webserv =~ /#{path.webserv_dir}/ #revisit
+ path.webserv + '/' \
+ + @base_markup_dir_stub.
+ gsub(/#{path.webserv_dir}/,
+ "#{url.hostname}/#{@base_markup_dir_stub}")
+ elsif defined? @rc['webserv']['webrick_url'] \
+ and @rc['webserv']['webrick_url']==false
+ 'file://' + path.webserv
+ elsif port.webserv_port_cgi =~/\S+/
+ url.hostname + ':' + port.webserv_port_cgi
+ else
+ url.hostname
+ end
+ end
+ def webserv_base #web url for local webserv (localhost, or hostname)
+ if path.webserv_dir \
+ and path.webserv =~ /#{path.webserv_dir}/ #revisit
+ path.webserv + '/' \
+ + @base_markup_dir_stub.
+ gsub(/#{path.webserv_dir}/,
+ "#{url.hostname}")
+ elsif defined? @rc['webserv']['webrick_url'] \
+ and @rc['webserv']['webrick_url']==false
+ "file://#{path.webserv}"
+ else "#{url.webrick_base}"
+ end
+ end
+ def webserv_files_from_db(opt=nil) #sort this out, messy
+ if opt.mod.inspect =~/--webserv-output[=-]["']?(\S+)["']+/
+ m=$1
+ (m=~/(?:http|file\/)\/\/:/) ? m : %{http://#{m}}
+ else
+ show_output_on=if defined? @rc['webserv_cgi']['show_output_on']
+ @rc['webserv_cgi']['show_output_on']
+ elsif defined? @rc['webserv_cgi']['file_links']
+ @rc['webserv_cgi']['file_links']
+ else ''
+ end
+ m=case show_output_on
+ when /webserv_cgi/ then url.webserv_base_cgi(opt)
+ when /webserv/ then @rc['webserv']['url_root']
+ when /https?:\/\// then @rc['webserv_cgi']['file_links']
+ when /\S+/ then 'http://' + @rc['webserv_cgi']['file_links']
+ else webserv_base_cgi(opt)
+ end
+ end
+ #%q{http://#{ENV['HTTP_HOST']}/cgi-bin}
+ end
+ def cgi_sample_search_form_name(opt=nil)
+ if opt.mod.inspect \
+ =~/--(?:cgi-)?search-form-name[=-]["']?(\S+?\.cgi)/
+ $1
+ elsif not opt.mod.inspect =~/--db[=-]["']?sqlite/ \
+ and defined? @rc['search'] \
+ and defined? @rc['search']['sisu'] \
+ and defined? @rc['search']['sisu']['action'] \
+ and @rc['search']['sisu']['action'] =~/https?:\/\/\S+?\.cgi/
+ /(?:https?:\/\/\S+?)\/([^\/]+?\.cgi)$/.
+ match(@rc['search']['sisu']['action'])[1]
+ else
+ (opt.mod.inspect =~/--db[=-]["']?sqlite/) \
+ ? "#{Db[:name_prefix_db]}sqlite.cgi" \
+ : "#{Db[:name_prefix_db]}pg.cgi"
+ end
+ end
+ def sample_search_form_title(organised_by=:language)
+ title=if defined? @rc['search']['sisu']['title'] \
+ and @rc['search']['sisu']['title'] =~/\S+/
+ @rc['search']['sisu']['title']
+ else %{SiSU (generated sample) search form}
+ end
+ title=title + " (content organised by #{organised_by})"
+ end
+ def output_tell #BROKEN Revisit 2011-02
+ output_type=if defined? @rc['show_output_on'] \
+ and @rc['show_output_on'] \
+ =~/^(?:filesystem|webserv|(?:local|remote)(?:_webserv)?|webrick)/
+ @rc['show_output_on']
+ else 'filesystem'
+ end
+ case output_type
+ when /^filesystem(?:_url)?/ then url.dir_url
+ when /^remote(?:_webserv)?/ then url.remote
+ when /^(?:webserv|local_webserv)/ then url.local
+ when /^local(:\d+)/ then url.hostname + $1 + '/' + base_markup_dir_stub
+ when /^localhost(:\d+)/ then url.localhost + $1 + '/' + base_markup_dir_stub
+ when /^localhost/ then url.localhost
+ when /^webrick/ then url.webrick
+ when /^path/ then url.webserv_map_pwd
+ else url.webserv_map_pwd
+ end
+ end
+ def images
+ "#{Xx[:html_relative2]}/_sisu/image"
+ end
+ #def images
+ # '../_sisu/image'
+ #end
+ def images_local
+ if FileTest.directory?(path.image_source_include)
+ path.image_source_include
+ else
+ if @@local_image==true
+ cmd=@cmd ? @cmd : ''
+ SiSU_Screen::Ansi.new(
+ cmd,
+ "WARNING - no local image directory or images:",
+ defaults[:image_local]
+ ).warn unless cmd =~/q/
+ @@local_image=false
+ end
+ url.images
+ end
+ end
+ def images_external
+ if FileTest.directory?(image_external)
+ if @@image_flag
+ images=Dir.glob("#{image_external}/*.{png,jpg,gif}")
+ pth=path.webserv + '/' \
+ + @base_markup_dir_stub
+ FileUtils::mkdir_p("#{pth}/_sisu/image_external") \
+ unless FileTest.directory?("#{pth}/_sisu/image_external")
+ images.each { |i| File.install(i,"#{pth}/#{i}") } \
+ unless images.length > 0
+ @@image_flag=false
+ end
+ "#{Xx[:html_relative2]}/_sisu/image_external"
+ else
+ if @@local_image==true
+ SiSU_Screen::Ansi.new(
+ @cmd,
+ 'WARNING - image directory for external images or no such images:',
+ :image_external
+ ).warn unless @cmd =~/q/
+ @@local_image=false
+ end
+ url.images_external
+ end
+ end
+ def images_epub
+ './image'
+ end
+ self
+ end
+ def port
+ def webrick_port
+ if @md \
+ and @md.opt.cmd.inspect=~/-F/ \
+ and @md.opt.mod.inspect=~/port=(\d+)/
+ $1
+ else
+ if defined? @rc['webserv_cgi']['port']
+ if @rc['webserv_cgi']['port'].nil? \
+ and (defined? @md.opt.mod \
+ and not @md.opt.mod.nil? \
+ and @md.opt.mod.inspect=~/webrick/)
+ defaults[:webserv_port_cgi]
+ elsif not @rc['webserv_cgi']['port'].nil?
+ @rc['webserv_cgi']['port']
+ else defaults[:webserv_port_cgi]
+ end
+ else defaults[:webserv_port_cgi]
+ end
+ end
+ end
+ def webserv_port_cgi(opt=nil)
+ port=if opt \
+ and opt.cmd.inspect=~/-F/ \
+ and opt.mod.inspect=~/port=(\d+)/
+ $1
+ else
+ port=if defined? @rc['webserv_cgi']['port']
+ if @rc['webserv_cgi']['port'].nil? \
+ and (defined? opt.mod \
+ and not opt.mod.nil? \
+ and opt.mod.inspect=~/webrick/)
+ defaults[:webserv_port_cgi]
+ elsif not @rc['webserv_cgi']['port'].nil?
+ @rc['webserv_cgi']['port']
+ else nil
+ end
+ else
+ if (defined? opt.mod \
+ and not opt.mod.nil? \
+ and opt.mod.inspect=~/webrick/)
+ defaults[:webserv_port_cgi]
+ else nil
+ end
+ end
+ end
+ end
+ self
+ end
+ def digest_conf?
+ if defined? @rc['default']['digest'] \
+ and @rc['default']['digest'] != nil
+ case @rc['default']['digest']
+ when /^sha(?:5|512)?$/ then :sha512
+ when /^sha(?:2|256)?$/ then :sha256
+ when /^md5$/ then :md5
+ else :sha256
+ end
+ else :sha256
+ end
+ end
+ def digest(opt=nil)
+ @opt=opt
+ def type
+ if @opt
+ case @opt.act[:hash_digest_algo]
+ when :sha512 then :sha512
+ when :sha256 then :sha256
+ when :md5 then :md5
+ else digest_conf?
+ end
+ else digest_conf?
+ end
+ end
+ def length
+ case digest(@opt).type
+ when :sha512 then 128
+ when :sha256 then 64
+ when :md5 then 32
+ else 64
+ end
+ end
+ def pattern
+ "[0-9a-f]{#{digest(@opt).length}}" #/[0-9a-f]{#{digest.length}}/
+ end
+ self
+ end
+ def program
+ def text_editor
+ if defined? @rc['program_select']['editor'] \
+ and @rc['program_select']['editor'] =~/\S\S+/
+ @rc['program_select']['editor']
+ elsif defined? @rc['program_select']['text_editor'] \
+ and @rc['program_select']['text_editor'] =~/\S\S+/
+ @rc['program_select']['text_editor']
+ else 'editor' #'gvim -c :R -c :S'
+ end
+ end
+ def pdf_viewer
+ ((defined? @rc['program_select']['pdf_viewer']) \
+ && @rc['program_select']['pdf_viewer'] =~/\S\S+/) \
+ ? @rc['program_select']['pdf_viewer']
+ : 'pdf-viewer' #'evince'
+ end
+ def web_browser
+ if defined? @rc['program_select']['www_browser'] \
+ and @rc['program_select']['www_browser'] =~/\S\S+/
+ @rc['program_select']['www_browser']
+ elsif defined? @rc['program_select']['web_browser'] \
+ and @rc['program_select']['web_browser'] =~/\S\S+/
+ @rc['program_select']['web_browser']
+ else 'x-www-browser' #'firefox' 'iceweasel' 'kazehakase' 'galeon'
+ end
+ end
+ def www_browser
+ web_browser
+ end
+ def console_web_browser
+ if defined? @rc['program_select']['console_www_browser'] \
+ and @rc['program_select']['console_www_browser'] =~/\S\S+/
+ @rc['program_select']['console_www_browser']
+ elsif defined? @rc['program_select']['console_web_browser'] \
+ and @rc['program_select']['console_web_browser'] =~/\S\S+/
+ @rc['program_select']['console_web_browser']
+ else 'console-www-browser' #'lynx' 'links' 'links2' 'elinks' 'w3m'
+ end
+ end
+ def console_www_browser
+ web_browser
+ end
+ def epub_viewer
+ ((defined? @rc['program_select']['epub_viewer']) \
+ && @rc['program_select']['epub_viewer'] =~/\S\S+/) \
+ ? @rc['program_select']['epub_viewer']
+ : 'ebook-viewer' #'calibre' 'fbreader'
+ end
+ def xml_viewer
+ ((defined? @rc['program_select']['xml_viewer']) \
+ && @rc['program_select']['xml_viewer'] =~/\S\S+/) \
+ ? @rc['program_select']['xml_viewer']
+ : text_editor
+ end
+ def docbook_viewer
+ ((defined? @rc['program_select']['xml_viewer']) \
+ && @rc['program_select']['xml_viewer'] =~/\S\S+/) \
+ ? @rc['program_select']['xml_viewer']
+ : text_editor
+ end
+ def fictionbook_viewer
+ ((defined? @rc['program_select']['xml_viewer']) \
+ && @rc['program_select']['xml_viewer'] =~/\S\S+/) \
+ ? @rc['program_select']['xml_viewer']
+ : text_editor
+ end
+ def xml_editor
+ xml_viewer
+ end
+ def odf_viewer
+ ((defined? @rc['program_select']['odf_viewer']) \
+ && @rc['program_select']['odf_viewer'] =~/\S\S+/) \
+ ? @rc['program_select']['odf_viewer']
+ : 'lowriter' #'odf-viewer','oowriter'
+ end
+ def manpage_viewer
+ 'man'
+ end
+ def manpage_generator
+ ((defined? @rc['program_select']['man']) \
+ && @rc['program_select']['man'] =~/\S\S+/) \
+ ? @rc['program_select']['man']
+ : 'nroff -man' #'nroff -man' #'groff -man -Tascii'
+ end
+ def texinfo
+ ((defined? @rc['program_select']['info_viewer']) \
+ && @rc['program_select']['info_viewer'] =~/\S\S+/) \
+ ? @rc['program_select']['info_viewer']
+ : 'pinfo -f' #'pinfo -f' 'info' 'tkinfo'
+ end
+ def file_encoding
+ is=(defined? @rc['program_set']['file_encoding']) \
+ ? @rc['program_set']['encoding'] : ''
+ (is.nil? || is==true) ? 'encoding' : is
+ end
+ def wc #wordcount
+ is=(defined? @rc['program_set']['wc']) \
+ ? @rc['program_set']['wc'] : ''
+ (is.nil? || is==true) ? 'wc' : is
+ end
+ def tidy
+ is=(defined? @rc['program_set']['tidy']) \
+ ? @rc['program_set']['tidy'] : nil
+ (is.nil? || is==true) ? 'tidy' : is
+ end
+ def rmagick
+ is=(defined? @rc['program_set']['rmagick']) \
+ ? @rc['program_set']['rmagick'] : nil
+ (is.nil? || is==true) ? 'rmagick' : is
+ end
+ def rexml #should be part of ruby 1.8 but apparently not always
+ is=(defined? @rc['program_set']['rexml']) ? \
+ @rc['program_set']['rexml'] : ''
+ (is.nil? || is==true) ? 'rexml' : is
+ end
+ def pdflatex
+ is=(defined? @rc['program_set']['pdflatex']) ? \
+ @rc['program_set']['pdflatex'] : ''
+ (is.nil? || is==true) ? 'pdflatex' : is
+ end
+ def postgresql
+ is=(defined? @rc['program_set']['postgresql']) ? \
+ @rc['program_set']['postgresql'] : ''
+ (is.nil? || is==true) ? 'postgresql' : is
+ end
+ def sqlite
+ is=(defined? @rc['program_set']['sqlite']) ? \
+ @rc['program_set']['sqlite'] : ''
+ (is.nil? || is==true) ? 'sqlite' : is
+ end
+ self
+ end
+ def i18n
+ def language # language settings
+ m=/.+\/\S+?\~(\S+)/
+ pwd=Dir.pwd
+ conf=(defined? @rc['default']['language']) \
+ ? @rc['default']['language'] : nil
+ l=if pwd=~ m then pwd[m,1] #2 directory: by visible directory name
+ elsif conf then @rc['default']['language'] #3 config: from sisurc.yaml
+ else defaults[:language] #4 sisu: program default
+ end #1 document: param gets
+ SiSU_Env::StandardiseLanguage.new(l)
+ end
+ #def multilingual
+ # x=(defined? @rc['output_structure']['multilingual'] \
+ # && @rc['output_structure']['multilingual'] ==true) \
+ # ? true : false
+ #end
+ #def bundle
+ # x=(defined? @rc['output_structure']['bundle'] \
+ # && @rc['output_structure']['bundle'] ==true) \
+ # ? true : false
+ #end
+ def lang_filename(l)
+ @lang={}
+ x=if output_dir_structure.by_language_code?
+ (( defined? @rc['default']['language_file']) \
+ && @rc['default']['language_file'] != nil) \
+ ? @rc['default']['language_file']
+ : 1
+ else 0
+ end
+ if (l != defaults[:language_code]) \
+ or (language.code != defaults[:language_code]) #watch
+ if x==1 then @lang[:pre],@lang[:mid],@lang[:post]="#{l}.",'',''
+ elsif x==2 then @lang[:pre],@lang[:mid],@lang[:post]='',".#{l}",''
+ elsif x==3 then @lang[:pre],@lang[:mid],@lang[:post]='','',".#{l}"
+ else @lang[:pre],@lang[:mid],@lang[:post]='','',''
+ end
+ else @lang[:pre],@lang[:mid],@lang[:post]='','',''
+ end
+ @lang
+ end
+ self
+ end
+ def file_encoding
+ is=''
+ if defined? @rc['program_set']['file_encoding']
+ is=@rc['program_set']['encoding']
+ end
+ if is.nil? \
+ or is==true
+ is='encoding'
+ end
+ is
+ end
+ def papersize # paper settings, default overidden in param if set within document
+ (defined? @rc['default']['papersize']) \
+ ? @rc['default']['papersize'].downcase
+ : (defaults[:papersize].downcase)
+ end
+ def odf_structure
+ FileUtils::rm_rf(processing_path.processing_path.odf_pth)
+ FileUtils::mkdir_p(processing_path.processing_path.odf_pth)
+ system(
+ "unzip -q #{path.share}/#{SiSU_is[:version_dir]}/odf/odt.zip -d #{processing_path.odf_pth}"
+ )
+ end
+ def sisupod_gen(fns_pod)
+ sisupod_gen_v3(fns_pod)
+ end
+ def sisupod_gen_v3(fns_pod)
+ pwd=Dir.pwd
+ sisupod_processing_path=
+ processing_path.processing + '/' + Gt[:sisupod]
+ if FileTest.directory?(sisupod_processing_path) \
+ or FileTest.file?(sisupod_processing_path)
+ FileUtils::rm_rf(sisupod_processing_path)
+ end
+ unless FileTest.directory?(sisupod_processing_path)
+ FileUtils::mkdir_p(sisupod_processing_path)
+ end
+ f_pod=if FileTest.file?("#{Dir.pwd}/#{fns_pod}")
+ "#{Dir.pwd}/#{fns_pod}"
+ elsif FileTest.file?(fns_pod)
+ fns_pod
+ end
+ if f_pod \
+ && FileTest.file?(f_pod)
+ (SiSU_Env::SystemCall.new.program_found?('tree')) \
+ ? 'tree ' + processing_path.processing + '/' + Gt[:sisupod]
+ : ''
+ if FileTest.directory?(processing_path.processing)
+ Dir.chdir(processing_path.processing)
+ system(%{tar xJf #{f_pod}})
+ Dir.chdir(pwd)
+ end
+ #system(tree) #enable if (/[vVM]/)
+ else
+ SiSU_Screen::Ansi.new(
+ '',
+ '*WARN* file not found: ' + fns_pod
+ ).warn unless @cmd=~/q/
+ end
+ sisupod_processing_path
+ end
+ def sisupod_gen_v2(fns_pod)
+ sisupod_processing_path=
+ processing_path.processing + '/' + Gt[:sisupod]
+ if FileTest.directory?(sisupod_processing_path) \
+ or FileTest.file?(sisupod_processing_path)
+ FileUtils::rm_rf(sisupod_processing_path)
+ end
+ unless FileTest.directory?(sisupod_processing_path)
+ FileUtils::mkdir_p(sisupod_processing_path)
+ end
+ (FileTest.file?(fns_pod)) \
+ ? system("unzip -q #{fns_pod} -d #{processing_path.processing}")
+ : (SiSU_Screen::Ansi.new(
+ '',
+ "*WARN* file not found: #{fns_pod}"
+ ).warn unless @cmd=~/q/)
+ sisupod_processing_path
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/se_info_port.rb b/lib/sisu/v5/se_info_port.rb
new file mode 100644
index 0000000..b2ead67
--- /dev/null
+++ b/lib/sisu/v5/se_info_port.rb
@@ -0,0 +1,76 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_info_port.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Info_Port
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ require_relative 'se_info_env' # se_info_env.rb
+ class InfoPort < SiSU_Info_Env::InfoEnv # se_info_env.rb
+ def initialize
+ @env=SiSU_Env::InfoEnv.new
+ end
+ def webrick
+ @env.port.webrick_port
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/se_info_system.rb b/lib/sisu/v5/se_info_system.rb
new file mode 100644
index 0000000..e932e26
--- /dev/null
+++ b/lib/sisu/v5/se_info_system.rb
@@ -0,0 +1,206 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_info_system.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Info_Sys_Gen
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ class InfoSystemGen
+ begin
+ require 'rbconfig'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('rbconfig NOT FOUND (LoadError)')
+ end
+ @@user, @@home, @@hostname, @@pwd, @@sisu_etc, @@host, @@arch, @@rbver, @@dir_arch, @@dir_sitearch, @@dir_bin, @@locale, @@rc,@@sisurc_path,@@ad=
+ ENV['USER'],ENV['HOME'],ENV['HOSTNAME'],ENV['PWD'],Config::CONFIG['sysconfdir'] + '/sisu',Config::CONFIG['host'],Config::CONFIG['arch'],%x{ruby -v}.strip,Config::CONFIG['archdir'],Config::CONFIG['sitearchdir'],Config::CONFIG['bindir'],%x{locale charmap}.strip,nil, nil, {} # %x{ruby -v}.strip # Config::CONFIG['rb_ver']
+ out=Config::CONFIG['localstatedir']
+ etc=Config::CONFIG['sysconfdir'] + '/sisu'
+ share=Config::CONFIG['datadir'] + '/sisu'
+ data=Config::CONFIG['datadir'] + '/doc/sisu'
+ m=/.+\/(?:src\/)?(\S+)/m # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
+ @base_markup_dir_stub=SiSU_Utils::Path.new.base_markup_stub
+ prcss_dir='_sisu_processing_' + '.' + SiSU_is[:version_dir]
+ prcss_dir_tmp_root="/tmp/#{prcss_dir}"
+ prcss_dir_stub="#{prcss_dir}/#{@base_markup_dir_stub}"
+ if @@user
+ tmp_processing="#{prcss_dir_tmp_root}/#{@@user}/#{@base_markup_dir_stub}"
+ tmp_processing_individual="#{prcss_dir_tmp_root}/#{@@user}/#{@base_markup_dir_stub}"
+ else #error
+ tmp_processing=tmp_processing_individual="/tmp/#{prcss_dir_stub}"
+ end
+ processing_pth=tmp_processing_individual
+ processing_dir=prcss_dir
+ processing_git="#{Dir.pwd}/#{Gt[:grotto]}"
+ #user=ENV['USER']
+ port_pgsql=if defined? ENV['PGPORT'] \
+ and not (ENV['PGPORT'].nil? \
+ || ENV['PGPORT'].empty?) \
+ and ENV['PGPORT']=~/^\d+$/
+ ENV['PGPORT']
+ else '5432'
+ end
+ IMAGES=:images
+ SISU_ETC=:sisu_etc
+ SISU_SHARE=:sisu_share
+ SAMPLE_DATA_PATH=:sample_data_path
+ IMAGE_STUB=:image_stub
+ STYLESHEET_STUB=:stylesheet_stub
+ IMAGE_LOCAL=:image_local
+ WEBSERV_PATH=:webserv_path
+ WEBSERV_MAN=:webserv_man
+ WEBSERV_PHP=:webserv_php
+ WEBSERV_CGI=:webserv_cgi
+ WEBSERV_RSS=:webserv_rss
+ WEBSERV_SQLITE=:webserv_sqlite
+ OUTPUT_LOCAL=:output_local
+ PROCESSING_DIR=:processing_dir
+ PROCESSING_PATH=:processing_path
+ PROCESSING_DIR_TMP_ROOT=:processing_dir_tmp_root
+ PROCESSING_PATH_TMP_BASE=:processing_path_tmp_base
+ PROCESSING_AO=:processing_ao
+ PROCESSING_TUNE=:processing_tune
+ PROCESSING_LATEX=:processing_latex
+ PROCESSING_TEXINFO=:processing_texinfo
+ PROCESSING_LOUT=:processing_lout
+ PROCESSING_SQLITE=:processing_sqlite
+ PROCESSING_POSTGRESQL=:processing_postgresql
+ PROCESSING_ENCODING=:processing_encoding
+ PROCESSING_GIT=:processing_git
+ PAPERSIZE=:papersize
+ #LANGUAGE=:language
+ #LANGUAGE_CODE=:language_code
+ MULTILINGUAL=:multilingual
+ BUNDLE=:bundle
+ CONCORD_MAX=:concord_max
+ DIGEST=:digest
+ WEBSERV_HOST_CGI=:webserv_host_cgi
+ WEBSERV_PORT_CGI=:webserv_port_cgi
+ POSTGRESQL_USER=:postgresql_user
+ POSTGRESQL_PORT=:postgresql_port
+ SQLITE_USER=:sqlite_user
+ SQLITE_PATH=:sqlite_path
+ SQLITE_PORT=:sqlite_port
+ DEFAULT_DIR={
+ IMAGES => '_sisu/image',
+ SISU_ETC => etc,
+ SISU_SHARE => share,
+ SAMPLE_DATA_PATH => data,
+ IMAGE_STUB => '_sisu/image',
+ STYLESHEET_STUB => '_sisu/css',
+ IMAGE_LOCAL => @@pwd + '/_sisu/image',
+ WEBSERV_PATH => out + '/www',
+ #WEBSERV_DIR => www, # uncomment for urls...
+ #WEBSERV_IMAGE => out + '/www/_sisu/image',
+ WEBSERV_MAN => out + '/www/man', #alter
+ WEBSERV_PHP => out + '/www/php',
+ WEBSERV_CGI => '/usr/lib/cgi-bin',
+ WEBSERV_RSS => out + '/www/feed',
+ WEBSERV_SQLITE => out + '/www/sqlite',
+ OUTPUT_LOCAL => @@home + '/sisu_www',
+ PROCESSING_DIR => processing_dir,
+ PROCESSING_PATH => processing_pth,
+ PROCESSING_DIR_TMP_ROOT => prcss_dir_tmp_root,
+ PROCESSING_PATH_TMP_BASE => processing_pth,
+ PROCESSING_AO => 'ao',
+ PROCESSING_TUNE => 'tune',
+ PROCESSING_LATEX => 'tex',
+ PROCESSING_TEXINFO => 'texinfo',
+ PROCESSING_SQLITE => 'sqlite',
+ PROCESSING_POSTGRESQL=> 'postgresql',
+ PROCESSING_ENCODING => 'encoding',
+ PROCESSING_GIT => processing_git,
+ #TEXINFO_STUB => 'texinfo',
+ PAPERSIZE => 'A4', #A4, US_letter, book_b5, book_a5, US_legal
+ #LANGUAGE => 'English',
+ #LANGUAGE_CODE => 'en', #change, unecessary duplication though currently used
+ MULTILINGUAL => false,
+ BUNDLE => false,
+ CONCORD_MAX => 260000,
+ DIGEST => :sha256,
+ WEBSERV_HOST_CGI => 'http://localhost',
+ WEBSERV_PORT_CGI => 8081, #8111,8123,8081
+ POSTGRESQL_USER => @@user, #'ralph', # change user !!!
+ POSTGRESQL_PORT => port_pgsql,
+ #POSGRESQL_LINKS_PATH => '',
+ SQLITE_USER => @@user,
+ SQLITE_PATH => @@user, #??
+ SQLITE_PORT => '**',
+ }
+ @@default_dir=DEFAULT_DIR
+ m=/.+\/(?:src\/)?(\S+)/m # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
+ @@pwd=@pwd=SiSU_Utils::Path.new.base_markup
+ attr_accessor :user,:home,:hostname,:pwd,:host,:arch,:rbver,:dir_arch,:dir_sitearch,:dir_bin,:locale,:webserv_path,:webserv_host_cgi,:webserv_port_cgi,:default_dir,:rc_path,:ad_path
+ def initialize
+ @user, @home, @hostname, @pwd, @sisu_etc, @host, @arch, @rbver, @dir_arch, @dir_sitearch, @dir_bin, @locale, @default_dir=
+ @@user,@@home,@@hostname,@@pwd,@@sisu_etc,@@host,@@arch,@@rbver,@@dir_arch,@@dir_sitearch,@@dir_bin,@@locale,@@default_dir
+ #note rbver is duplicated in InfoVersion
+ end
+ end
+end
+module SiSU_Info_Sys
+ class InfoSystem < SiSU_Info_Sys_Gen::InfoSystemGen
+ include Singleton
+ def initialize
+ super()
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/se_load.rb b/lib/sisu/v5/se_load.rb
new file mode 100644
index 0000000..f235fa3
--- /dev/null
+++ b/lib/sisu/v5/se_load.rb
@@ -0,0 +1,114 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_load.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Load
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ class Load
+ def initialize(prog,mandatory=false)
+ @prog,@mandatory=prog,mandatory
+ end
+ def prog
+ load_prog=false
+ $:.each do |reqpath|
+ if FileTest.exist?("#{reqpath}/#{@prog}.rb")
+ load_prog=true
+ #SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).ok("#{reqpath}/#{@prog}.rb loaded")
+ break
+ #else SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).warn("#{reqpath}/#{@prog}.rb not found")
+ end
+ end
+ if load_prog \
+ and @prog=~/dbi/
+ begin
+ require 'dbi'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('dbi NOT FOUND (LoadError)')
+ end
+ end
+ if load_prog
+ begin
+ require @prog
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error("#{@prog} NOT FOUND (LoadError)")
+ end
+ else
+ @mandatory \
+ ? (SiSU_Screen::Ansi.new(@prog,"*WARN* module required: #{@prog}").warn)
+ : '' #(SiSU_Screen::Ansi.new(@prog,"*WARN* #{@prog} load requested").warn)
+ end
+ load_prog
+ end
+ def prog?
+ load_prog=false
+ $:.each do |reqpath|
+ if FileTest.exist?("#{reqpath}/#{@prog}.rb"); load_prog=true
+ break
+ end
+ end
+ load_prog
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/se_processing.rb b/lib/sisu/v5/se_processing.rb
new file mode 100644
index 0000000..ec688a7
--- /dev/null
+++ b/lib/sisu/v5/se_processing.rb
@@ -0,0 +1,521 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_processing.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Processing_Settings
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ class ProcessingSettings
+ def initialize(md)
+ @md=md
+ end
+ def cnf_rc #sisurc.yml
+ @rc=SiSU_Env::GetInit.new.sisu_yaml.rc
+ end
+ def env_rc #env rc (including sisurc.yml)
+ @env_rc ||=SiSU_Env::InfoEnv.new(@md.fns)
+ end
+ def doc_rc #document rc, make instructions
+ (defined? @md.make) \
+ ? @md.make
+ : nil
+ end
+ def cmd_rc_act #command-line rc
+ @cmd_rc_act=@md.opt.opt_act
+ end
+ def build
+ def ocn?
+ if cmd_rc_act[:ocn][:set]==:on
+ true
+ elsif cmd_rc_act[:ocn][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.ocn? \
+ and doc_rc.toc? ==:off
+ false
+ elsif env_rc.build.ocn? ==:off
+ false
+ else
+ true
+ end
+ end
+ def plaintext_ocn?
+ if cmd_rc_act[:txt_ocn][:set]==:on \
+ or cmd_rc_act[:ocn][:set]==:on
+ true
+ elsif cmd_rc_act[:txt_ocn][:set]==:off \
+ or cmd_rc_act[:ocn][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.ocn? \
+ and doc_rc.toc? ==:off
+ false
+ elsif env_rc.build.ocn? ==:off
+ false
+ else
+ true
+ end
+ end
+ def odt_ocn?
+ if cmd_rc_act[:odt_ocn][:set]==:on \
+ or cmd_rc_act[:ocn][:set]==:on
+ true
+ elsif cmd_rc_act[:odt_ocn][:set]==:off \
+ or cmd_rc_act[:ocn][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.ocn? \
+ and doc_rc.toc? ==:off
+ false
+ elsif env_rc.build.ocn? ==:off
+ false
+ else
+ true
+ end
+ end
+ def html_strict?
+ if cmd_rc_act[:html_strict][:set]==:on
+ true
+ elsif cmd_rc_act[:html_strict][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.html_strict? \
+ and doc_rc.html_strict? ==:on
+ true
+ else
+ false
+ end
+ end
+ def toc?
+ if cmd_rc_act[:toc][:set]==:on
+ true
+ elsif cmd_rc_act[:toc][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.toc? \
+ and doc_rc.toc? ==:off
+ false
+ elsif env_rc.build.toc? ==:off
+ false
+ else
+ true
+ end
+ end
+ def manifest?
+ if cmd_rc_act[:manifest][:set]==:on
+ true
+ elsif cmd_rc_act[:manifest][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.manifest? \
+ and doc_rc.manifest? ==:off
+ false
+ elsif env_rc.build.manifest? ==:off
+ false
+ else
+ true
+ end
+ end
+ def links_to_manifest?
+ if cmd_rc_act[:links_to_manifest][:set]==:on
+ true
+ elsif cmd_rc_act[:links_to_manifest][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.links_to_manifest? \
+ and doc_rc.links_to_manifest? ==:off
+ false
+ elsif env_rc.build.links_to_manifest? ==:off
+ false
+ else
+ true
+ end
+ end
+ def metadata?
+ if cmd_rc_act[:metadata][:set]==:on
+ true
+ elsif cmd_rc_act[:metadata][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.metadata? \
+ and doc_rc.metadata? ==:off
+ false
+ elsif env_rc.build.metadata? ==:off
+ false
+ else
+ true
+ end
+ end
+ def minitoc?
+ if html_top_band? == false #one form of navigation necessary
+ true
+ elsif cmd_rc_act[:minitoc][:set]==:on
+ true
+ elsif cmd_rc_act[:minitoc][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.minitoc? \
+ and doc_rc.minitoc? ==:off
+ false
+ elsif env_rc.build.minitoc? ==:off
+ false
+ else
+ true
+ end
+ end
+ def manifest_minitoc?
+ if html_top_band? == false #one form of navigation necessary
+ true
+ elsif cmd_rc_act[:manifest_minitoc][:set]==:on \
+ || cmd_rc_act[:minitoc][:set]==:on
+ true
+ elsif cmd_rc_act[:manifest_minitoc][:set]==:off \
+ || cmd_rc_act[:minitoc][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.manifest_minitoc? \
+ and (doc_rc.manifest_minitoc? ==:off \
+ || doc_rc.minitoc? ==:off)
+ false
+ elsif env_rc.build.manifest_minitoc? ==:off \
+ || env_rc.build.minitoc? ==:off
+ false
+ elsif minitoc? == false
+ false
+ else
+ true
+ end
+ end
+ def html_minitoc?
+ if html_top_band? == false #one form of navigation necessary
+ true
+ elsif cmd_rc_act[:html_minitoc][:set]==:on \
+ || cmd_rc_act[:minitoc][:set]==:on
+ true
+ elsif cmd_rc_act[:html_minitoc][:set]==:off \
+ || cmd_rc_act[:minitoc][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.html_minitoc? \
+ and (doc_rc.html_minitoc? ==:off \
+ || doc_rc.minitoc? ==:off)
+ false
+ elsif env_rc.build.html_minitoc? ==:off \
+ || env_rc.build.minitoc? ==:off
+ false
+ elsif minitoc? == false
+ false
+ else
+ true
+ end
+ end
+ def html_top_band?
+ if cmd_rc_act[:html_top_band][:set]==:on
+ true
+ elsif cmd_rc_act[:html_top_band][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.html_top_band? \
+ and doc_rc.html_top_band? ==:off
+ false
+ elsif env_rc.build.html_top_band? ==:off
+ false
+ else
+ true
+ end
+ end
+ def html_navigation?
+ if cmd_rc_act[:html_navigation][:set]==:on
+ true
+ elsif cmd_rc_act[:html_navigation][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.html_navigation? \
+ and doc_rc.html_navigation? ==:off
+ false
+ elsif env_rc.build.html_navigation? ==:off
+ false
+ else
+ true
+ end
+ end
+ def html_navigation_bar?
+ if cmd_rc_act[:html_navigation_bar][:set]==:on
+ true
+ elsif cmd_rc_act[:html_navigation_bar][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.html_navigation_bar? \
+ and doc_rc.html_navigation_bar? ==:off
+ false
+ elsif env_rc.build.html_navigation_bar? ==:off
+ false
+ else
+ true
+ end
+ end
+ def search_form?
+ if cmd_rc_act[:search_form][:set]==:on
+ true
+ elsif cmd_rc_act[:search_form][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.html_search_form? \
+ and doc_rc.search_form? ==:off
+ false
+ elsif env_rc.build.search_form? ==:off
+ false
+ else
+ true
+ end
+ end
+ def html_search_form?
+ if cmd_rc_act[:html_search_form][:set]==:on \
+ || cmd_rc_act[:search_form][:set]==:on
+ true
+ elsif cmd_rc_act[:html_search_form][:set]==:off \
+ || cmd_rc_act[:search_form][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.html_search_form? \
+ and (doc_rc.html_search_form? ==:off \
+ || doc_rc.search_form? ==:off)
+ false
+ elsif env_rc.build.html_search_form? ==:off \
+ || env_rc.build.search_form? ==:off
+ false
+ elsif search_form? == false
+ false
+ else
+ true
+ end
+ end
+ def html_right_pane?
+ if cmd_rc_act[:html_right_pane][:set]==:on
+ true
+ elsif cmd_rc_act[:html_right_pane][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.html_right_pane? \
+ and doc_rc.html_right_pane? ==:off
+ false
+ elsif env_rc.build.html_right_pane? ==:off
+ false
+ else
+ true
+ end
+ end
+ def segsubtoc?
+ if cmd_rc_act[:segsubtoc][:set]==:on
+ true
+ elsif cmd_rc_act[:segsubtoc][:set]==:off
+ false
+ elsif doc_rc.is_a?(Method) \
+ and defined? doc_rc.segsubtoc? \
+ and doc_rc.segsubtoc? ==:off
+ false
+ elsif env_rc.build.segsubtoc? ==:off
+ false
+ else
+ true
+ end
+ end
+ self
+ end
+ def ocn_html_identifier
+ (build.html_strict?) \
+ ? Mx[:ocn_id_char]
+ : ''
+ end
+ def output_dir_structure
+ def by_language_code?
+ if cmd_rc_act[:output_by][:set] == :language
+ true
+ elsif cmd_rc_act[:output_by][:set] == :filetype \
+ or cmd_rc_act[:output_by][:set] == :filename
+ false
+ elsif cmd_rc_act[:output_by][:set] == :language
+ true
+ else
+ env_rc.output_dir_structure.by_language_code?
+ end
+ end
+ def by_filetype?
+ if cmd_rc_act[:output_by][:set] == :filetype
+ true
+ elsif cmd_rc_act[:output_by][:set] == :language \
+ or cmd_rc_act[:output_by][:set] == :filename
+ false
+ elsif cmd_rc_act[:output_by][:set] == :filetype
+ true
+ else
+ env_rc.output_dir_structure.by_filetype?
+ end
+ end
+ def by_filename?
+ if cmd_rc_act[:output_by][:set] == :filename
+ true
+ elsif cmd_rc_act[:output_by][:set] == :language \
+ or cmd_rc_act[:output_by][:set] == :filetype
+ false
+ elsif cmd_rc_act[:output_by][:set] == :filename
+ true
+ else
+ env_rc.output_dir_structure.by_filename?
+ end
+ end
+ def multilingual?
+ by_language_code?
+ end
+ def dump?
+ ((cmd_rc_act[:dump][:bool] \
+ && cmd_rc_act[:dump][:inst]) \
+ || (env_rc.output_dir_structure.dump?)) \
+ ? true
+ : false
+ end
+ def redirect?
+ ((cmd_rc_act[:redirect][:bool] \
+ && cmd_rc_act[:redirect][:inst]) \
+ || (env_rc.output_dir_structure.redirect?)) \
+ ? true
+ : false
+ end
+ def dump_or_redirect?
+ ((dump?) || (redirect?)) \
+ ? true
+ : false
+ end
+ def by?
+ if dump?
+ :dump
+ elsif redirect?
+ :redirect
+ elsif by_language_code?
+ :language
+ elsif by_filetype?
+ :filetype
+ elsif by_filename?
+ :filename
+ else #recheck current default
+ :language
+ end
+ end
+ self
+ end
+ end
+end
+module SiSU_Info_Processing_Flag
+ class InfoProcessingFlag
+ attr_accessor :color,:cf_0,:cf_1,:cf_2,:cf_3,:cf_4,:cf_5
+ def initialize
+ @rc=SiSU_Get_Init::GetInit.new.sisu_yaml.rc
+ end
+ def color #processing flag shortcuts
+ (defined? @rc['flag']['color']) \
+ ? @rc['flag']['color']
+ : false
+ end
+ def cf_0 #processing flag shortcuts
+ if defined? @rc['flag']['default'] \
+ and @rc['flag']['default'].is_a?(String)
+ @rc['flag']['default']
+ else '-NQhewpotbxXdyYv'
+ end
+ end
+ def cf_1 #processing flag shortcuts
+ if defined? @rc['flag']['i'] \
+ and @rc['flag']['i'].is_a?(String)
+ @rc['flag']['i']
+ else '-Qhewpoty'
+ end
+ end
+ def cf_2 #processing flag shortcuts
+ if defined? @rc['flag']['ii'] \
+ and @rc['flag']['ii'].is_a?(String)
+ @rc['flag']['ii']
+ else '-NQhewpotbxXdy'
+ end
+ end
+ def cf_3 #processing flag shortcuts
+ if defined? @rc['flag']['iii'] \
+ and @rc['flag']['iii'].is_a?(String)
+ @rc['flag']['iii']
+ else '-NQhewpotbxXdyY'
+ end
+ end
+ def cf_4 #processing flag shortcuts
+ if defined? @rc['flag']['iv'] \
+ and @rc['flag']['iv'].is_a?(String)
+ @rc['flag']['iv']
+ else '-NQhewpotbxXdDyY --update'
+ end
+ end
+ def cf_5 #processing flag shortcuts
+ if defined? @rc['flag']['v'] \
+ and @rc['flag']['v'].is_a?(String)
+ @rc['flag']['v']
+ else '-NQhewpotbxXdDyYv --update'
+ end
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/se_programs.rb b/lib/sisu/v5/se_programs.rb
new file mode 100644
index 0000000..35d68cb
--- /dev/null
+++ b/lib/sisu/v5/se_programs.rb
@@ -0,0 +1,384 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_programs.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Sys_Call
+ begin
+ require 'singleton'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('singleton NOT FOUND (LoadError)')
+ end
+ class SystemCall
+ @@locale_flag=false
+ def initialize(input='',output='',opt_or_cmd='')
+ @input,@output=input,output
+ (opt_or_cmd.is_a?(SiSU_Commandline::Options)) \
+ ? (@cmd,@opt=opt_or_cmd.cmd,opt_or_cmd)
+ : (@cmd,@opt=opt_or_cmd,nil) #cmd.is_a?(String)
+ @prog=SiSU_Env::InfoProgram.new
+ @sys=SiSU_Info_Sys::InfoSystem.instance
+ end
+ def program_found?(program)
+ found=`which #{program}` #`whereis #{program}`
+ (found =~/bin\/#{program}\b/) ? true : false
+ end
+ def locale #locales utf8 or other
+ unless @@locale_flag
+ @@locale_flag=true
+ end
+ @sys.locale
+ end
+ def file_encoding(filename,cmd='') #file encoding
+ program='file'
+ fnsp=SiSU_Env::InfoEnv.new(filename).source_file_with_path
+ if program_found?(program)
+ encoding=%x{file -L #{fnsp}}.strip
+ encoding=encoding.gsub(/#{fnsp}:(\s+|$)/,'')
+ encoding=if encoding \
+ and not encoding.empty?
+ encoding
+ else 'UTF-8 assumed, encoding undetermined'
+ end
+ puts encoding if cmd =~/[VM]/
+ encoding
+ else encoding='UTF-8 assumed, file encoding check program unavailable'
+ end
+ end
+ def wc #word count
+ program='wc'
+ if program_found?(program) \
+ and locale !~/utf-?8/i
+ true
+ else
+ program_ref="(not available)" unless program_found?(program)
+ program_ref="(UTF-8)" if locale =~/utf-?8/i
+ false
+ end
+ end
+ def rcs #rcs for document markup data
+ program='rcs'
+ program_ref="\n\t\tdocument version information requested"
+ if program_found?(program); true
+ else
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ warn("#{program} is not installed #{program_ref}")
+ false
+ end
+ end
+ def cvs #cvs for document markup data
+ program='cvs'
+ program_ref="\n\t\tdocument version information requested"
+ if program_found?(program); true
+ else
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ warn("#{program} is not installed #{program_ref}")
+ false
+ end
+ end
+ def zip #zip
+ program='zip'
+ program_ref="\n\t\tused to in the making of number of file formats, odf, epub"
+ if program_found?(program); true
+ else
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ mark("*WARN* #{program} is not installed #{program_ref}")
+ false
+ end
+ end
+ def openssl #openssl for digests
+ program='openssl'
+ program_ref="\n\t\tused to generate requested source document identification digest"
+ if program_found?(program); true
+ else
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ warn("#{program} is not installed #{program_ref}")
+ false
+ end
+ end
+ def md5(filename) #md5 dgst
+ program='openssl'
+ program_ref="\n\t\tmd5 digest requested"
+ if program_found?(program)
+ pwd=Dir.pwd
+ Dir.chdir(File.dirname(filename))
+ dgst=%x{openssl dgst -md5 #{File.basename(filename)}}.strip #use file name without file path
+ Dir.chdir(pwd)
+ dgst.scan(/\S+/)
+ else
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ warn("#{program} is not installed #{program_ref}")
+ false
+ end
+ end
+ def sha256(filename) #sha dgst
+ program='openssl'
+ program_ref="\n\t\tsha digest requested"
+ if program_found?(program)
+ pwd=Dir.pwd
+ Dir.chdir(File.dirname(filename))
+ dgst=%x{openssl dgst -sha256 #{File.basename(filename)}}.strip #use file name without file path
+ Dir.chdir(pwd)
+ dgst.scan(/\S+/)
+ else
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ warn("#{program} is not installed #{program_ref}")
+ false
+ end
+ end
+ def sha512(filename) #sha dgst
+ program='openssl'
+ program_ref="\n\t\tsha digest requested"
+ if program_found?(program)
+ pwd=Dir.pwd
+ Dir.chdir(File.dirname(filename))
+ dgst=%x{openssl dgst -sha512 #{File.basename(filename)}}.strip #use file name without file path
+ Dir.chdir(pwd)
+ dgst.scan(/\S+/)
+ else
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ warn("#{program} is not installed #{program_ref}")
+ false
+ end
+ end
+ def psql #psql
+ program='psql'
+ program_ref="\n\t\tpsql requested"
+ if program_found?(program); true
+ else
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ warn("#{program} is not installed #{program_ref}")
+ false
+ end
+ end
+ def create_pg_db(dbname_stub=nil) #createdb
+ unless dbname_stub
+ @pwd ||=Dir.pwd
+ m=/.+\/(?:src\/)?(\S+)/im # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
+ dbname_stub=@pwd[m,1]
+ end
+ program='createdb'
+ db_name="#{Db[:name_prefix]}#{dbname_stub}"
+ program_ref="\n\t\tcreatedb dbname #{db_name} #for postgresql database creation"
+ (program_found?(program)) \
+ ? system("#{program} #{dbname_name}")
+ : (STDERR.puts "\t*WARN* #{program} is not available #{program_ref}")
+ end
+ def relaxng(cmd='') #trang - convert between different schema languages for XML
+ program='trang'
+ program_ref="\n\t\tsee <http://www.thaiopensource.com/relaxng/trang.html>"
+ (program_found?(program)) \
+ ? system("#{program} #{@input} #{@output}")
+ : (STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" if cmd =~/V/)
+ end
+ def qrencode #qrcode - for generating QR code
+ program='qrencode'
+ program_ref="\n\t\tsee <http://megaui.net/fukuchi/works/qrencode/index.en.html>"
+ found=(program_found?(program)) ? true : false
+ found \
+ ? (system(%{
+ echo "#{@input}" | #{program} -s 3 -o #{@output}
+ }))
+ : (STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" if @cmd =~/V/)
+ #found
+ end
+ def imagemagick #imagemagick is a image manipulation program
+ program='identify'
+ #program_ref="\n\t\tsee <http://www.imagemagick.org/>"
+ found=(program_found?(program)) ? true : false
+ #STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" unless found
+ found
+ end
+ def graphicksmagick #graphicsmagick is a image manipulation program
+ program='gm'
+ #program_ref="\n\t\tsee <http://www.graphicsmagick.org/>"
+ found=(program_found?(program)) ? true : false
+ #STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" unless found
+ found
+ end
+ def well_formed? #tidy - check for well formed xml xhtml etc.
+ program=@prog.tidy
+ program_ref="\n\t\tsee <http://tidy.sourceforge.net/>"
+ (program_found?(program)) \
+ ? system("#{@prog.tidy} -xml #{@input} > #{@output}")
+ : (STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}")
+ end
+ def tex2pdf_engine
+ progs=['xetex','xelatex','pdflatex','pdfetex','pdftex']
+ @pdfetex_flag=false
+ @cmd ||=''
+ @texpdf=nil
+ progs.each do |program|
+ if program_found?(program)
+ @texpdf=program if program =~/xetex|xelatex|pdftex|pdflatex/
+ @pdfetex_flag=true
+ break
+ end
+ end
+ if @pdfetex_flag==false
+ @texpdf=progs.join(', ')
+ end
+ @texpdf
+ end
+ def latex2pdf(md,papersize='a4') #convert from latex to pdf
+ tell=if @cmd =~/[MV]/
+ ''
+ elsif @cmd =~/[v]/
+ %q{2>&1 | grep -v ' WARNING '}
+ else %q{2>&1 | grep -v '$'}
+ end
+ mode='batchmode' #mode='nonstopmode'
+ texpdf=tex2pdf_engine
+ if @pdfetex_flag
+ texpdf_cmd=case texpdf
+ when /xetex/
+ %{#{texpdf} -interaction=#{mode} -fmt=xelatex -papersize="#{papersize}" #{@input} #{tell}\n}
+ when /xelatex/
+ %{#{texpdf} -interaction=#{mode} -papersize="#{papersize}" #{@input} #{tell}\n}
+ when /pdftex/
+ "#{texpdf} -interaction=#{mode} -fmt=pdflatex #{@input} #{tell}\n"
+ when /pdflatex/
+ "#{texpdf} -interaction=#{mode} #{@input} #{tell}\n"
+ end
+ system(texpdf_cmd)
+ else STDERR.puts "\t*WARN* none of the following programs are installed: #{@texpdf}"
+ end
+ end
+ def makeinfo #texinfo
+ program='makeinfo'
+ options='' #'--force' #''
+ program_ref="\n\t\tsee http://www.gnu.org/software/texinfo/"
+ (program_found?(program)) \
+ ? system("#{program} #{options} #{@input}\n")
+ : (STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}")
+ end
+ def scp
+ puts "scp -Cr #{@input} #{@output}" if @cmd =~/[vVM]/
+ puts "scp disabled"
+ end
+ def rsync(action='',chdir=nil)
+ program='rsync'
+ if program_found?(program)
+ vb=if @cmd =~/q/; 'q'
+ elsif @cmd =~/v/; 'v'
+ else ''
+ end
+ cX=SiSU_Screen::Ansi.new(@cmd).cX
+ msg=(@cmd =~/q/) ? '' : %{ && echo " #{cX.grey}OK: #{@input} -> #{@output}#{cX.off}"}
+ amp=(@opt \
+ && @opt.files.length > 1) \
+ ? ''
+ : ((@cmd =~/[vVM]/) ? '' : '&')
+ rsync_cmd="rsync -az#{vb} #{action} #{@input} #{@output}"
+ puts rsync_cmd if @cmd =~/[vVM]/
+ dir_change=dir_return=nil
+ if not chdir.nil? \
+ && chdir != Dir.pwd
+ dir_change=Dir.chdir(chdir)
+ dir_return=Dir.pwd
+ end
+ dir_change if dir_change
+ system("
+ #{rsync_cmd} #{msg} #{amp}
+ ")
+ dir_return if dir_return
+ else STDERR.puts "\t*WARN* #{program} not found"
+ end
+ end
+ def rm
+ if @cmd =~/^-Z[mMvVq]*$/; FileUtils::rm_rf(@input)
+ elsif @cmd =~/V/; FileUtils::rm(@input)
+ elsif @cmd !~/q/; FileUtils::rm(@input)
+ elsif @cmd =~/q/; FileUtils::rm(@input)
+ else STDERR.puts "\t*WARN* operation ignored"
+ end
+ end
+ end
+end
+module SiSU_Info_Program
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ require_relative 'se_info_env' # se_info_env.rb
+ class InfoProgram < SiSU_Info_Env::InfoEnv # se_info_env.rb
+ attr_accessor :editor,:wc,:tidy,:rexml,:pdflatex,:postgresql,:sqlite
+ def initialize
+ prog=SiSU_Env::InfoEnv.new.program
+ @editor, @wc, @tidy, @rexml, @pdflatex, @postgresql, @sqlite=
+ prog.text_editor,prog.wc,prog.tidy,prog.rexml,prog.pdflatex,prog.postgresql,prog.sqlite
+ end
+ end
+end
+module SiSU_Info_Set
+ require_relative 'se_info_env' # se_info_env.rb
+ class InfoSettings < SiSU_Info_Env::InfoEnv # se_info_env.rb
+ def permission?(prog) # program defaults
+ (defined? @rc['permission_set'][prog]) \
+ ? @rc['permission_set'][prog]
+ : false
+ end
+ def program?(prog) # program defaults
+ (defined? @rc['program_set'][prog]) \
+ ? @rc['program_set'][prog]
+ : false
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/se_remotes.rb b/lib/sisu/v5/se_remotes.rb
new file mode 100644
index 0000000..83912d1
--- /dev/null
+++ b/lib/sisu/v5/se_remotes.rb
@@ -0,0 +1,559 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_remotes.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Info_Remote_Host
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ class InfoRemoteHost
+ def initialize
+ @rc=SiSU_Env::GetInit.new.sisu_yaml.rc
+ end
+ def remote_host #see InfoRemote remote_host_base_general
+ r=[]
+ r=if (defined? @rc['remote'] \
+ and @rc['remote'].is_a?(Array))
+ r_array=@rc['remote']
+ r_array.each_with_index do |renv,i|
+ r[i]={}
+ if defined? renv['user'] \
+ and defined? renv['host']
+ end
+ r[i][:user]=renv['user']
+ r[i][:host]=renv['host']
+ r[i][:path]=if defined? renv['path']
+ renv['path']
+ else ''
+ end
+ r[i][:name]="#{r[i][:user]}@#{r[i][:host]}:#{r[i][:path]}"
+ end
+ r
+ elsif (defined? @rc['remote'] \
+ and @rc['remote'].is_a?(Hash) \
+ and defined? @rc['remote']['user'] \
+ and defined? @rc['remote']['host'])
+ r[0]={}
+ r[0][:user]=@rc['remote']['user']
+ r[0][:host]=@rc['remote']['host']
+ r[0][:path]=if defined? @rc['remote']['path']
+ @rc['remote']['path']
+ else ''
+ end
+ r[0][:name]="#{r[0][:user]}@#{r[0][:host]}:#{r[0][:path]}"
+ r
+ else
+ r[0]={}
+ r[0][:name]='.'
+ r[0][:user]=''
+ r[0][:host]=''
+ r[0][:path]=''
+ #puts "no remote host or user"
+ r
+ end
+ end
+ def rhost
+ def r1
+ (defined? SiSU_Env::InfoRemoteHost.new.remote_host[0][:name]) \
+ ? (SiSU_Env::InfoRemoteHost.new.remote_host[0][:name])
+ : nil
+ end
+ def r2
+ (defined? SiSU_Env::InfoRemoteHost.new.remote_host[1][:name]) \
+ ? (SiSU_Env::InfoRemoteHost.new.remote_host[1][:name])
+ : nil
+ end
+ def r3
+ (defined? SiSU_Env::InfoRemoteHost.new.remote_host[2][:name]) \
+ ? (SiSU_Env::InfoRemoteHost.new.remote_host[2][:name])
+ : nil
+ end
+ def r4
+ (defined? SiSU_Env::InfoRemoteHost.new.remote_host[3][:name]) \
+ ? (SiSU_Env::InfoRemoteHost.new.remote_host[3][:name])
+ : nil
+ end
+ def r5
+ (defined? SiSU_Env::InfoRemoteHost.new.remote_host[4][:name]) \
+ ? (SiSU_Env::InfoRemoteHost.new.remote_host[4][:name])
+ : nil
+ end
+ def r6
+ (defined? SiSU_Env::InfoRemoteHost.new.remote_host[5][:name]) \
+ ? (@ls + SiSU_Env::InfoRemoteHost.new.remote_host[5][:name])
+ : nil
+ end
+ self
+ end
+ end
+end
+module SiSU_Info_Remote
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ require_relative 'se_filemap' # se_filemap.rb
+ begin
+ require 'fileutils'
+ include FileUtils::Verbose
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('fileutils NOT FOUND (LoadError)')
+ end
+ class InfoRemote < SiSU_File_Map::FileMap # se_filemap.rb
+ @@flag_remote=false
+ begin
+ require 'socket'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('socket NOT FOUND (LoadError)')
+ end
+ def initialize(opt)
+ super(opt) #
+ @opt=opt
+ @rc=GetInit.new.sisu_yaml.rc
+ end
+ def remote_host_base_general
+ SiSU_Env::InfoRemoteHost.new.remote_host
+ end
+ def remote_host_base
+ remote_host_base_general.each do |remote_conn|
+ @@flag_remote=true if remote_conn[:name] =~/\S+?@\S+/
+ end
+ remote_host_base_general
+ end
+ def scp #sort out later using ruby libraries #not ideal, first time each file is sent, -r must be called separately for subdir to be built
+ def document
+ self.remote_host_base.each do |remote_conn|
+ local_gen=@source_path
+ remote_gen=case @opt.cmd
+ when /u/
+ remote_conn[:name] + '/' \
+ + @env.path.base_markup_dir_stub + '/.' #creates remote directory tree, this is not the usual function of u
+ when /[abhHNopwxXy]/
+ remote_conn[:name] + '/' \
+ + @env.path.base_markup_dir_stub + '/' \
+ + @fnb + '/.'
+ else
+ remote_conn[:name] + '/' \
+ + @env.path.base_markup_dir_stub \
+ + '/.'
+ end
+ local_epub=@source_path_epub
+ local_src=@source_path_src
+ local_pod=@source_path_pod
+ remote_epub=
+ remote_conn[:name] + '/' + @env.path.stub_epub + '/.'
+ remote_src=
+ remote_conn[:name] + '/' + @env.path.stub_src + '/.'
+ remote_pod=
+ remote_conn[:name] + '/' + @env.path.stub_pod + '/.'
+ src_txt=@opt.fnc
+ src_pod=@opt.fncb.gsub(/(\.ss[mt])(?:\.sst)?$/,'\1.txz')
+ if (local_gen =~/\S/ \
+ and local_gen !~/\/\//) \
+ and (remote_gen =~/\S/ \
+ and remote_gen !~/\/\//) \
+ and @@flag_remote==true \
+ and @opt.cmd !~/U/
+ SiSU_Env::SystemCall.new(local_gen,remote_gen).scp
+ if FileTest.file?("#{local_src}/#{src_txt}")
+ SiSU_Env::SystemCall.new("#{local_src}/#{src_txt}",remote_src).scp
+ end
+ if FileTest.file?("#{local_pod}/#{src_pod}")
+ SiSU_Env::SystemCall.new("#{local_src}/#{src_pod}",remote_pod).scp
+ end
+ if FileTest.file?("#{local_epub}/#{@opt.fnb}.epub")
+ SiSU_Env::SystemCall.new(
+ "#{local_epub}/#{@opt.fnb}.epub",
+ remote_epub,@opt.cmd
+ ).scp
+ end
+ elsif @opt.cmd =~/U/
+ puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
+ puts "#{local_gen} -> #{remote_gen}"
+ if FileTest.file?("#{local_src}/#{src_doc}")
+ puts "#{local_src}/#{src_doc}* -> #{remote_src}"
+ end
+ if FileTest.file?("#{local_pod}/#{src_doc}.txz")
+ puts "#{local_pod}/#{src_doc}* -> #{remote_pod}"
+ end
+ else
+ puts 'suspect scp request, ignored'
+ puts "#{local_gen} -> #{remote_gen} remote flag: #{@@flag_remote}"
+ puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
+ end
+ end
+ end
+ def site_base #base site
+ self.remote_host_base.each do |remote_conn|
+ local=@source_path
+ remote="#{remote_conn[:name]}/#{@env.path.base_markup_dir_stub}/."
+ if defined? @rc['permission_set']['remote_base_site'] \
+ and @rc['permission_set']['remote_base_site'] \
+ and @@flag_remote==true \
+ and @opt.cmd !~/U/
+ puts "begin scp_base: #{local} -> #{remote}"
+ SiSU_Env::SystemCall.new("#{local}/#{@env.path.style}/",remote).scp
+ elsif @opt.cmd =~/U/
+ puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
+ puts "begin scp_base: #{local} -> #{remote}"
+ puts "#{local}/#{@env.path.style}/ -> #{remote}"
+ else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
+ end
+ end
+ end
+ def site_base_all #base site
+ self.remote_host_base.each do |remote_conn|
+ local=@source_path
+ remote=
+ remote_conn[:name] + '/' \
+ + @env.path.base_markup_dir_stub + '/.'
+ if defined? @rc['permission_set']['remote_base_site'] \
+ and @rc['permission_set']['remote_base_site'] \
+ and @@flag_remote==true \
+ and @opt.cmd !~/U/
+ puts "begin scp_base_all: #{local} -> #{remote}"
+ SiSU_Env::SystemCall.new("#{local}/_sisu/image_sys/",remote).scp
+ SiSU_Env::SystemCall.new("#{local}/_sisu/image/",remote).scp
+ SiSU_Env::SystemCall.new("#{local}/#{@env.path.style}/",remote).scp
+ elsif @opt.cmd =~/U/
+ puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
+ puts "scp_base_all: #{local} -> #{remote}"
+ puts "#{local}/_sisu/image_sys/ -> #{remote}"
+ puts "#{local}/_sisu/image/ -> #{remote}"
+ puts "#{local}/#{@env.path.style}/ -> #{remote}"
+ else
+ puts "permission not granted #{__FILE__} #{__LINE__}" \
+ if @opt.cmd =~/M/
+ end
+ end
+ end
+ self
+ end
+ def rsync
+ def document
+ f=(@opt.act[:ao][:set]==:on) \
+ ? SiSU_Env::FileOp.new(@md)
+ : nil
+ if f
+ self.remote_host_base.each do |remote_conn|
+ local_gen=@source_path
+ #local_gen_image="#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}/_sisu/image"
+ #local_gen_image_external="#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}/_sisu/image_external"
+ remote_gen=
+ remote_conn[:name] + '/' \
+ + @env.path.base_markup_dir_stub + '/.'
+ remote_rel=
+ remote_conn[:name] + '/' \
+ + f.output_path.stub.rcp
+ @opt.fnc
+ if (local_gen =~/\S/ \
+ and local_gen !~/\/\//) \
+ and (remote_gen =~/\S/ \
+ and remote_gen !~/\/\//) \
+ and @@flag_remote==true \
+ and @opt.cmd !~/U/
+# SiSU_Env::SystemCall.new("#{local_src}/#{src_txt}",remote_src,@opt.cmd).rsync
+ #delete_extra_files='--delete' # '--delete-after'
+ inp=[]
+ if (@opt.act[:html][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.html_scroll.dir)
+ inp \
+ << f.output_path.html_seg.rel \
+ << f.place_file.html_scroll.rel
+ end
+ if (@opt.act[:concordance][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.html_concordance.dir)
+ inp << f.place_file.html_concordance.rel
+ end
+ if (@opt.act[:epub][:set]==:on \
+ || @opt.cmd =~/^-R[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.epub.dir)
+ inp << f.place_file.epub.rel
+ end
+ if (@opt.act[:odt][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.odt.dir)
+ inp << f.place_file.odt.rel
+ end
+ if (@opt.act[:xhtml][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.xhtml.dir)
+ inp << f.place_file.xhtml.rel
+ end
+ if (@opt.act[:xml_sax][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.xml_sax.dir)
+ inp << f.place_file.xml_sax.rel
+ end
+ if (@opt.act[:xml_dom][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.xml_dom.dir)
+ inp << f.place_file.xml_dom.rel
+ end
+ if (@opt.act[:xml_scaffold_structure_sisu][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.xml_scaffold_structure_sisu.dir)
+ inp << f.place_file.xml_scaffold_structure_sisu.rel
+ end
+ if (@opt.act[:xml_scaffold_structure_collapse][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.xml_scaffold_structure_collapse.dir)
+ inp << f.place_file.xml_scaffold_structure_collapse.rel
+ end
+ if (@opt.act[:txt][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.txt.dir)
+ inp << f.place_file.txt.rel
+ end
+ if (@opt.act[:manpage][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*i[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.manpage.dir)
+ inp << f.place_file.manpage.rel
+ end
+ if (@opt.act[:texinfo][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*I[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.info.dir)
+ inp << f.place_file.info.rel
+ end
+ if (@opt.act[:hash_digests][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.hash_digest.dir)
+ inp << f.place_file.hash_digest.rel
+ end
+ if (@opt.act[:share_source][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.src.dir)
+ inp << f.place_file.src.rel
+ end
+ if (@opt.act[:sisupod][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.sisupod.dir)
+ inp << f.place_file.sisupod.rel
+ end
+ if (@opt.act[:pdf][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/)
+ inp <<=(@opt.dir_structure_by == :filename) \
+ ? (f.output_path.pdf.rel + '/*.pdf')
+ : (f.output_path.pdf.rel + '/' + @opt.fnb + '*.pdf')
+ end
+ if (@opt.act[:sqlite_discrete][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.sqlite_discrete.dir)
+ inp << f.place_file.sqlite_discrete.rel
+ end
+ if (@opt.act[:qrcode][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.qrcode_md.dir)
+ inp \
+ << f.place_file.qrcode_md.rel \
+ << f.place_file.qrcode_title.rel
+ end
+ if (@opt.act[:manifest][:set]==:on \
+ || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
+ && FileTest.file?(f.place_file.manifest.dir)
+ inp << f.place_file.manifest.rel
+ end
+ local_gen=if inp.length > 0
+ inp.join(' ')
+ else ''
+ end
+ local_css,images,images_system='','',''
+ images=images_skin=images_system=local_css=''
+ if @opt.cmd =~/[hwbxX]/ \
+ && (defined? @md.ec[:image]) \
+ && (@md.ec[:image].length > 0)
+ images=
+ f.place_file.images.rel + '/' \
+ + @md.ec[:image].join(" #{f.output_path.images.rel}/")
+ end
+ if @opt.cmd =~/[yhwbxX]/ \
+ && (defined? @md.ec[:image]) \
+ && (@md.ec[:image].length > 0)
+ local_css=f.output_path.css.rel
+ images_system='_sisu/image_sys'
+ end
+ begin
+ ##create file structure without copying files?:
+ ##rsync -av -f"+ */" -f"- *" f.output_path.base.dir remote:./path/.
+ #local_dirs=%{-f"+ */" -f"- *" #{f.output_path.base.dir}/*}
+ #SiSU_Env::SystemCall.new(local_dirs,remote_gen,@opt.cmd).rsync
+ local=local_gen + ' ' + images + ' ' + images_skin + ' ' + images_system + ' ' + local_css
+ SiSU_Env::SystemCall.new(local,remote_rel,@opt.cmd).
+ rsync('--relative',f.output_path.base.dir)
+ rescue
+ p __LINE__.to_s + ':' + __FILE__
+ local_dirs=%{--include='*/' --exclude='*' #{f.output_path.base.dir}}
+ SiSU_Env::SystemCall.new(local_dirs,remote_gen,@opt.cmd).rsync
+ end
+ elsif @opt.cmd =~/U/
+ puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
+ puts "#{local_gen} -> #{remote_gen}"
+ if FileTest.file?("#{local_src}/#{src_doc}") \
+ or FileTest.file?("#{local_src}/#{src_doc}.txz")
+ puts "#{local_src}/#{src_doc}* -> #{remote_src}"
+ end
+ else
+ puts 'suspect rsync request, ignored'
+ puts "#{local_gen} -> #{remote_gen} remote flag: #{@@flag_remote}"
+ puts "permission not granted #{__FILE__} #{__LINE__}" \
+ if @opt.cmd =~/M/
+ end
+ end
+ end
+ end
+ def site_harvest
+ self.remote_host_base.each do |remote_conn|
+ local=@source_path_harvest
+ l_rel="#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}"
+ lng='en'
+ if @env.output_dir_structure.by? == :language
+ ldest=lng + '/manifest'
+ files=
+ ldest + '/authors.html' + ' ' \
+ + ldest + '/topics.html'
+ elsif @env.output_dir_structure.by? == :filetype
+ ldest="manifest"
+ files=
+ ldest + '/authors.' + lng + '.html' + ' ' \
+ + ldest + '/topics.' + lng + '.html'
+ elsif @env.output_dir_structure.by? == :filename
+ files=
+ l_rel + '/authors.' + lng + '.html' + ' ' \
+ + l_rel + '/topics.' + lng + '.html'
+ end
+ remote="#{remote_conn[:name]}/#{@opt.base_stub}"
+ if @opt.act[:harvest][:set] \
+ && @opt.act[:rsync][:set]
+ (@env.output_dir_structure.by? == :filename) \
+ ? (SiSU_Env::SystemCall.new(files,remote).rsync)
+ : (SiSU_Env::SystemCall.new(ldest,remote).
+ rsync('--relative',l_rel))
+ elsif @opt.cmd =~/U/
+ puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
+ puts "rsync_harvest: #{local} -> #{remote}"
+ else
+ puts "permission not granted #{__FILE__} #{__LINE__}" \
+ if @opt.cmd =~/M/
+ end
+ end
+ end
+ def site_base #base site
+ ldest='_sisu/*'
+ l_rel="#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}"
+ image_sys="#{@env.path.webserv}/_sisu/image_sys"
+ self.remote_host_base.each do |remote_conn|
+ remote="#{remote_conn[:name]}/#{@env.path.base_markup_dir_stub}"
+ remote_conf="#{remote_conn[:name]}/_sisu"
+ SiSU_Env::SystemCall.new(image_sys,remote_conf).rsync
+ SiSU_Env::SystemCall.new(ldest,remote).rsync('--relative',l_rel)
+ end
+ end
+ def site_base_sync
+ self.remote_host_base.each do |remote_conn|
+ local=@source_path
+ remote="#{remote_conn[:name]}/#{@env.path.base_markup_dir_stub}/."
+ if defined? @rc['permission_set']['remote_base_site'] \
+ and @rc['permission_set']['remote_base_site'] \
+ and @@flag_remote==true \
+ and @opt.cmd !~/U/
+ delete_extra_files='--delete' # '--delete-after'
+ puts "begin rsync_base_sync: #{local} -> #{remote}"
+ SiSU_Env::SystemCall.new("#{local}/_sisu/image_sys/",remote).
+ rsync(delete_extra_files)
+ SiSU_Env::SystemCall.new("#{local}/_sisu/image/",remote).
+ rsync(delete_extra_files)
+ SiSU_Env::SystemCall.new("#{local}/#{@env.path.style}/",remote).
+ rsync(delete_extra_files)
+ elsif @opt.cmd =~/U/
+ puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
+ puts "rsync_base_sync: #{local} -> #{remote}"
+ puts "#{local}/_sisu/image_sys/ -> #{remote}"
+ puts "#{local}/_sisu/image/ -> #{remote}"
+ puts "#{local}/#{@env.path.style}/ -> #{remote}"
+ else
+ puts "permission not granted #{__FILE__} #{__LINE__}" \
+ if @opt.cmd =~/M/
+ end
+ end
+ end
+ self
+ end
+ def rsync_sitemaps #sitemap directory
+ self.remote_host_base.each do |remote_conn|
+ local=
+ @source_path + '/sitemapindex.xml'
+ remote="#{remote_conn[:name]}/#{@env.path.base_markup_dir_stub}/."
+ if @@flag_remote
+ delete_extra_files='--delete' # '--delete-after'
+ SiSU_Env::SystemCall.new(local,remote).rsync(delete_extra_files)
+ elsif @opt.cmd =~/U/
+ puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
+ puts "rsync_sitemaps: #{local} -> #{remote}"
+ else
+ puts "permission not granted #{__FILE__} #{__LINE__}" \
+ if @opt.cmd =~/M/
+ end
+ end
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/se_standardise_lang.rb b/lib/sisu/v5/se_standardise_lang.rb
new file mode 100644
index 0000000..62b3a31
--- /dev/null
+++ b/lib/sisu/v5/se_standardise_lang.rb
@@ -0,0 +1,182 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_standardise_lang.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+@@lang_info=nil
+module SiSU_Standardise_Lang
+ class StandardiseLanguage
+ require_relative 'i18n' # i18n.rb
+ def initialize(l='')
+ @language=(l.nil? || l.empty?) \
+ ? SiSU_Env::InfoEnv.new.language_default_set
+ : l
+ @r=%{(?:#{Px[:lng_lst_rgx]})}
+ @lang_info=SiSU_i18n::Languages.new
+ end
+ def lang_lst # from i18n
+ @@lang_info ||=@lang_info.language.list
+ end
+ def lang(l='') # from i18n
+ if l =~/^#{@r}$/
+ @lang_info.language.list[l]
+ elsif @language =~/^#{@r}$/
+ @lang_info.language.list[@language]
+ else nil
+ end
+ end
+ def language
+ lng={}
+ case @language
+ when /^am$|Amharic/i then d,c,l=false,lang_lst['am'][:c], lang_lst['am'][:n]
+ when /^bg$|Bulgarian/i then d,c,l=false,lang_lst['bg'][:c], lang_lst['bg'][:n]
+ when /^bn$|Bengali/i then d,c,l=false,lang_lst['bn'][:c], lang_lst['bn'][:n]
+ when /^br$|Breton/i then d,c,l=false,lang_lst['br'][:c], lang_lst['br'][:n]
+ when /^ca$|Catalan/i then d,c,l=false,lang_lst['ca'][:c], lang_lst['ca'][:n]
+ when /^cs$|Czech/i then d,c,l=false,lang_lst['cs'][:c], lang_lst['cs'][:n]
+ when /^cy$|Welsh/i then d,c,l=false,lang_lst['cy'][:c], lang_lst['cy'][:n]
+ when /^da$|Danish|Dansk/i then d,c,l=false,lang_lst['da'][:c], lang_lst['da'][:n]
+ when /^de$|German/i then d,c,l=false,lang_lst['de'][:c], lang_lst['de'][:n]
+ when /^el$|Greek/i then d,c,l=false,lang_lst['el'][:c], lang_lst['el'][:n]
+ when /^en$|English/i then d,c,l=false,lang_lst['en'][:c], lang_lst['en'][:n]
+ when /^eo$|Esperanto/i then d,c,l=false,lang_lst['eo'][:c], lang_lst['eo'][:n]
+ when /^es$|Spanish|Espanol/i then d,c,l=false,lang_lst['es'][:c], lang_lst['es'][:n]
+ when /^et$|Estonian/i then d,c,l=false,lang_lst['et'][:c], lang_lst['et'][:n]
+ when /^eu$|Basque/i then d,c,l=false,lang_lst['eu'][:c], lang_lst['eu'][:n]
+ when /^fi$|Finnish|Finsk|Suomi/i then d,c,l=false,lang_lst['fi'][:c], lang_lst['fi'][:n]
+ when /^fr$|French|Francais/i then d,c,l=false,lang_lst['fr'][:c], lang_lst['fr'][:n]
+ when /^ga$|Irish/i then d,c,l=false,lang_lst['ga'][:c], lang_lst['ga'][:n]
+ when /^gl$|Galician/i then d,c,l=false,lang_lst['gl'][:c], lang_lst['gl'][:n]
+ when /^he$|Hebrew/i then d,c,l=false,lang_lst['he'][:c], lang_lst['he'][:n]
+ when /^hi$|Hindi/i then d,c,l=false,lang_lst['hi'][:c], lang_lst['hi'][:n]
+ when /^hr$|Croatian/i then d,c,l=false,lang_lst['hr'][:c], lang_lst['hr'][:n]
+ when /^hy$|Armenian/i then d,c,l=false,lang_lst['hy'][:c], lang_lst['hy'][:n]
+ when /^ia$|Interlingua/i then d,c,l=false,lang_lst['ia'][:c], lang_lst['ia'][:n]
+ when /^is$|Icelandic/i then d,c,l=false,lang_lst['is'][:c], lang_lst['is'][:n]
+ when /^it$|Italian/i then d,c,l=false,lang_lst['it'][:c], lang_lst['it'][:n]
+ when /^la$|Latin/i then d,c,l=false,lang_lst['la'][:c], lang_lst['la'][:n]
+ when /^lo$|Lao/i then d,c,l=false,lang_lst['lo'][:c], lang_lst['lo'][:n]
+ when /^lt$|Lithuanian/i then d,c,l=false,lang_lst['lt'][:c], lang_lst['lt'][:n]
+ when /^lv$|Latvian/i then d,c,l=false,lang_lst['lv'][:c], lang_lst['lv'][:n]
+ when /^ml$|Malayalam/i then d,c,l=false,lang_lst['ml'][:c], lang_lst['ml'][:n]
+ when /^mr$|Marathi/i then d,c,l=false,lang_lst['mr'][:c], lang_lst['mr'][:n]
+ when /^nl$|Dutch/i then d,c,l=false,lang_lst['nl'][:c], lang_lst['nl'][:n]
+ when /^no$|Norwegian|Norsk/i then d,c,l=false,lang_lst['no'][:c], lang_lst['no'][:n]
+ when /^nn$|Norwegian Nynorsk/i then d,c,l=false,lang_lst['nn'][:c], lang_lst['nn'][:n]
+ when /^oc$|Occitan/i then d,c,l=false,lang_lst['oc'][:c], lang_lst['oc'][:n]
+ when /^pl$|Polish/i then d,c,l=false,lang_lst['pl'][:c], lang_lst['pl'][:n]
+ when /^pt$|Portuguese/i then d,c,l=false,lang_lst['pt'][:c], lang_lst['pt'][:n]
+ when /^pt_BR$|Portuguese Brazil/i then d,c,l=false,lang_lst['pt_BR'][:c], lang_lst['pt_BR'][:n]
+ when /^ro$|Romanian/i then d,c,l=false,lang_lst['ro'][:c], lang_lst['ro'][:n]
+ when /^ru$|Russian/i then d,c,l=false,lang_lst['ru'][:c], lang_lst['ru'][:n]
+ when /^sa$|Sanskrit/i then d,c,l=false,lang_lst['sa'][:c], lang_lst['sa'][:n]
+ when /^se$|Sami/i then d,c,l=false,lang_lst['se'][:c], lang_lst['se'][:n]
+ when /^sk$|Slovak/i then d,c,l=false,lang_lst['sk'][:c], lang_lst['sk'][:n]
+ when /^sl$|Slovenian/i then d,c,l=false,lang_lst['sl'][:c], lang_lst['sl'][:n]
+ when /^sq$|Albanian/i then d,c,l=false,lang_lst['sq'][:c], lang_lst['sq'][:n]
+ when /^sr$|Serbian/i then d,c,l=false,lang_lst['sr'][:c], lang_lst['sr'][:n]
+ when /^sv$|Swedish|Svensk/i then d,c,l=false,lang_lst['sv'][:c], lang_lst['sv'][:n]
+ when /^ta$|Tamil/i then d,c,l=false,lang_lst['ta'][:c], lang_lst['ta'][:n]
+ when /^te$|Telugu/i then d,c,l=false,lang_lst['te'][:c], lang_lst['te'][:n]
+ when /^th$|Thai/i then d,c,l=false,lang_lst['th'][:c], lang_lst['th'][:n]
+ when /^tk$|Turkmen/i then d,c,l=false,lang_lst['tk'][:c], lang_lst['tk'][:n]
+ when /^tr$|Turkish/i then d,c,l=false,lang_lst['tr'][:c], lang_lst['tr'][:n]
+ when /^uk$|Ukranian/i then d,c,l=false,lang_lst['uk'][:c], lang_lst['uk'][:n]
+ when /^ur$|Urdu/i then d,c,l=false,lang_lst['ur'][:c], lang_lst['ur'][:n]
+ when /^us|American$|/i then d,c,l=false,lang_lst['en'][:c], lang_lst['en'][:n]
+ when /^vi$|Vietnamese/i then d,c,l=false,lang_lst['vi'][:c], lang_lst['vi'][:n]
+ else d,c,l=true, lang_lst['en'][:c], lang_lst['en'][:n] #default
+ end
+ lng[:d],lng[:c],lng[:n]=d,c,l
+ lng
+ end
+ def name
+ language[:n].downcase
+ end
+ def title
+ language[:n]
+ end
+ def code
+ language[:c]
+ end
+ def tex_name
+ language[:xlp]
+ end
+ def file_to_language(file) # used, fix and remove
+ m=/.+?\~(\w{2,3})\.(?:-|ssm\.)?sst$/
+ @language=if file =~m ; file[m,1]
+ else ''
+ end
+ language
+ end
+ def codes
+ # Language List po4a
+ # <http://www.debian.org/international/l10n/po/>
+ # Px[:lng_lst] see constants.rb
+ # see polyglossia for subset
+ # <http://mirrors.ctan.org/macros/xetex/latex/polyglossia/polyglossia.pdf>
+ # also note ISO_639-2
+ # <http://en.wikipedia.org/wiki/ISO_639-2>
+ # <http://en.wikipedia.org/wiki/List_of_ISO_639-2_codes>
+ Px[:lng_lst] # constants.rb
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/se_version.rb b/lib/sisu/v5/se_version.rb
new file mode 100644
index 0000000..8f21c3f
--- /dev/null
+++ b/lib/sisu/v5/se_version.rb
@@ -0,0 +1,158 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/se_version.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Info_Version
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ require_relative 'se_info_env' # se_info_env.rb
+ begin
+ require 'singleton'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('singleton NOT FOUND (LoadError)')
+ end
+ class InfoVersion < SiSU_Info_Env::InfoEnv # se_info_env.rb
+ include Singleton
+ begin
+ require 'rbconfig'
+ require 'yaml'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('rbconfig or yaml NOT FOUND (LoadError)')
+ end
+ @@lib_path=nil
+ def get_version
+ @version={}
+ @pwd=ENV['PWD']
+ lib_path=
+ @@lib_path \
+ ? @@lib_path
+ : `echo $RUBYLIB`.split(':')
+ @@lib_path ||=lib_path
+ if File.exist?(SiSU_is[:version_info_path])
+ @version=YAML::load(File::open(SiSU_is[:version_info_path]))
+ end
+ @version[:install_method]=if SiSU_is[:run_from]==:gem_install
+ spec = Gem::Specification.find_by_name("sisu")
+ gem_root = spec.gem_dir
+ (File.dirname(__FILE__.gsub(/\/lib\/sisu\/#{SiSU_is[:version_dir]}/,'')) == gem_root) \
+ ? ' (ruby gem install)' : ''
+ else ''
+ end
+ @version
+ end
+ def rbversion
+ %x{ruby -v}.strip
+ end
+ end
+end
+module SiSU_Info_About
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ begin
+ require 'singleton'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('singleton NOT FOUND (LoadError)')
+ end
+ class InfoAbout
+ def initialize(color='')
+ @color=color
+ end
+ def sisu_version
+ version=SiSU_Env::InfoVersion.instance.get_version
+ rb_ver=SiSU_Env::InfoVersion.instance.rbversion
+ if version[:version]
+ opt_cmd=if defined? @color.cmd \
+ and @color.cmd =~/[ck]/
+ @color.cmd
+ else '-v'
+ end
+ SiSU_Screen::Ansi.new(
+ opt_cmd,
+ version[:project],
+ version[:version],
+ version[:date_stamp],
+ version[:date],
+ version[:install_method],
+ rb_ver
+ ).version
+ else puts 'SiSU (version information not available)'
+ end
+ end
+ def sisu_about
+ puts <<-WOK
+ sisu: documents; markup, structuring, publishing in multiple standard formats, & search
+ most (not all) useful commands (are made in a directory containing a sisu markup file &) take the form:
+ sisu [action(s)] [filename(s)]
+ where filename refers to a valid sisu marked up file, e.g.:
+ cd /usr/share/doc/sisu/markup-samples/sisu_manual
+ sisu --html --verbose sisu_commands.sst
+ sisu --txt --html --epub --odt --pdf --sqlite --manpage --texinfo --concordance --qrcode --verbose sisu.ssm
+ cd -
+ See output produced, or see man pages: man sisu
+ <http://www.sisudoc.org/> <http://www.jus.uio.no/sisu/>
+ WOK
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v5/sysenv.rb b/lib/sisu/v5/sysenv.rb
index 43270ea..0d67733 100644
--- a/lib/sisu/v5/sysenv.rb
+++ b/lib/sisu/v5/sysenv.rb
@@ -61,7514 +61,98 @@
=end
@@cX=nil
-@@current_document=Dir.pwd #nil #''
-@@lang_info=nil
module SiSU_Env
- require_relative 'constants' # constants.rb
- require_relative 'utils' # utils.rb
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ require_relative 'se_date' # se_date.rb
+ require_relative 'se_info_system' # se_info_system.rb
+ require_relative 'se_load' # se_load.rb
+ require_relative 'se_get_init' # se_get_init.rb
+ require_relative 'se_envcall' # se_envcall.rb
+ require_relative 'se_programs' # se_programs.rb
+ require_relative 'se_standardise_lang' # se_standardise_lang.rb
+ require_relative 'se_info_env' # se_info_env.rb
+ require_relative 'se_processing' # se_processing.rb
+ require_relative 'se_filemap' # se_filemap.rb
+ require_relative 'se_file_op' # se_file_op.rb
+ require_relative 'se_cleanoutput' # se_cleanoutput.rb
+ require_relative 'se_remotes' # se_remotes.rb
+ require_relative 'se_version' # se_version.rb
+ require_relative 'se_db' # se_db.rb
+ require_relative 'se_css' # se_css.rb
+ require_relative 'se_clear' # se_clear.rb
+ require_relative 'se_createsite' # se_createsite.rb
+ require_relative 'se_info_port' # se_info_port.rb
begin
require 'singleton'
require 'fileutils'
include FileUtils::Verbose
rescue LoadError
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('singleton or fileutils NOT FOUND (LoadError)')
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('singleton or fileutils NOT FOUND (LoadError)')
end
@@noyaml=false
- class InfoDate
- begin
- require 'date'
- rescue LoadError
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('date NOT FOUND (LoadError)')
- end
- attr_accessor :dt,:t
- def initialize
- @dt,@t=Date.today.to_s,Time.now
- end
- def week
- w=@t.strftime('%W')
- "#{@t.year}w#{w}"
- end
- def month
- "#{@t.year}#{@t.month}"
- end
- def year
- @t.year
- end
- def weekonly
- @t.strftime('%W')
- end
- def monthonly
- @t.month
- end
- def year_static
- YEAR
- end
+ class InfoDate < SiSU_Info_Date::InfoDate # se_date.rb
end
- class InfoSystemGen
- begin
- require 'rbconfig'
- rescue LoadError
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('rbconfig NOT FOUND (LoadError)')
- end
- @@user, @@home, @@hostname, @@pwd, @@sisu_etc, @@host, @@arch, @@rbver, @@dir_arch, @@dir_sitearch, @@dir_bin, @@locale, @@rc,@@sisurc_path,@@ad=
- ENV['USER'],ENV['HOME'],ENV['HOSTNAME'],ENV['PWD'],Config::CONFIG['sysconfdir'] + '/sisu',Config::CONFIG['host'],Config::CONFIG['arch'],%x{ruby -v}.strip,Config::CONFIG['archdir'],Config::CONFIG['sitearchdir'],Config::CONFIG['bindir'],%x{locale charmap}.strip,nil, nil, {} # %x{ruby -v}.strip # Config::CONFIG['rb_ver']
- out=Config::CONFIG['localstatedir']
- etc=Config::CONFIG['sysconfdir'] + '/sisu'
- share=Config::CONFIG['datadir'] + '/sisu'
- data=Config::CONFIG['datadir'] + '/doc/sisu'
- m=/.+\/(?:src\/)?(\S+)/m # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
- @base_markup_dir_stub=SiSU_Utils::Path.new.base_markup_stub
- prcss_dir='_sisu_processing_' + '.' + SiSU_is[:version_dir]
- prcss_dir_tmp_root="/tmp/#{prcss_dir}"
- prcss_dir_stub="#{prcss_dir}/#{@base_markup_dir_stub}"
- if @@user
- tmp_processing="#{prcss_dir_tmp_root}/#{@@user}/#{@base_markup_dir_stub}"
- tmp_processing_individual="#{prcss_dir_tmp_root}/#{@@user}/#{@base_markup_dir_stub}"
- else #error
- tmp_processing=tmp_processing_individual="/tmp/#{prcss_dir_stub}"
- end
- processing_pth=tmp_processing_individual
- processing_dir=prcss_dir
- processing_git="#{Dir.pwd}/#{Gt[:grotto]}"
- #user=ENV['USER']
- port_pgsql=if defined? ENV['PGPORT'] \
- and not (ENV['PGPORT'].nil? \
- || ENV['PGPORT'].empty?) \
- and ENV['PGPORT']=~/^\d+$/
- ENV['PGPORT']
- else '5432'
- end
- IMAGES=:images
- SISU_ETC=:sisu_etc
- SISU_SHARE=:sisu_share
- SAMPLE_DATA_PATH=:sample_data_path
- IMAGE_STUB=:image_stub
- STYLESHEET_STUB=:stylesheet_stub
- IMAGE_LOCAL=:image_local
- WEBSERV_PATH=:webserv_path
- WEBSERV_MAN=:webserv_man
- WEBSERV_PHP=:webserv_php
- WEBSERV_CGI=:webserv_cgi
- WEBSERV_RSS=:webserv_rss
- WEBSERV_SQLITE=:webserv_sqlite
- OUTPUT_LOCAL=:output_local
- PROCESSING_DIR=:processing_dir
- PROCESSING_PATH=:processing_path
- PROCESSING_DIR_TMP_ROOT=:processing_dir_tmp_root
- PROCESSING_PATH_TMP_BASE=:processing_path_tmp_base
- PROCESSING_AO=:processing_ao
- PROCESSING_TUNE=:processing_tune
- PROCESSING_LATEX=:processing_latex
- PROCESSING_TEXINFO=:processing_texinfo
- PROCESSING_LOUT=:processing_lout
- PROCESSING_SQLITE=:processing_sqlite
- PROCESSING_POSTGRESQL=:processing_postgresql
- PROCESSING_ENCODING=:processing_encoding
- PROCESSING_GIT=:processing_git
- PAPERSIZE=:papersize
- #LANGUAGE=:language
- #LANGUAGE_CODE=:language_code
- MULTILINGUAL=:multilingual
- BUNDLE=:bundle
- CONCORD_MAX=:concord_max
- DIGEST=:digest
- WEBSERV_HOST_CGI=:webserv_host_cgi
- WEBSERV_PORT_CGI=:webserv_port_cgi
- POSTGRESQL_USER=:postgresql_user
- POSTGRESQL_PORT=:postgresql_port
- SQLITE_USER=:sqlite_user
- SQLITE_PATH=:sqlite_path
- SQLITE_PORT=:sqlite_port
- DEFAULT_DIR={
- IMAGES => '_sisu/image',
- SISU_ETC => etc,
- SISU_SHARE => share,
- SAMPLE_DATA_PATH => data,
- IMAGE_STUB => '_sisu/image',
- STYLESHEET_STUB => '_sisu/css',
- IMAGE_LOCAL => @@pwd + '/_sisu/image',
- WEBSERV_PATH => out + '/www',
- #WEBSERV_DIR => www, # uncomment for urls...
- #WEBSERV_IMAGE => out + '/www/_sisu/image',
- WEBSERV_MAN => out + '/www/man', #alter
- WEBSERV_PHP => out + '/www/php',
- WEBSERV_CGI => '/usr/lib/cgi-bin',
- WEBSERV_RSS => out + '/www/feed',
- WEBSERV_SQLITE => out + '/www/sqlite',
- OUTPUT_LOCAL => @@home + '/sisu_www',
- PROCESSING_DIR => processing_dir,
- PROCESSING_PATH => processing_pth,
- PROCESSING_DIR_TMP_ROOT => prcss_dir_tmp_root,
- PROCESSING_PATH_TMP_BASE => processing_pth,
- PROCESSING_AO => 'ao',
- PROCESSING_TUNE => 'tune',
- PROCESSING_LATEX => 'tex',
- PROCESSING_TEXINFO => 'texinfo',
- PROCESSING_SQLITE => 'sqlite',
- PROCESSING_POSTGRESQL=> 'postgresql',
- PROCESSING_ENCODING => 'encoding',
- PROCESSING_GIT => processing_git,
- #TEXINFO_STUB => 'texinfo',
- PAPERSIZE => 'A4', #A4, US_letter, book_b5, book_a5, US_legal
- #LANGUAGE => 'English',
- #LANGUAGE_CODE => 'en', #change, unecessary duplication though currently used
- MULTILINGUAL => false,
- BUNDLE => false,
- CONCORD_MAX => 260000,
- DIGEST => :sha256,
- WEBSERV_HOST_CGI => 'http://localhost',
- WEBSERV_PORT_CGI => 8081, #8111,8123,8081
- POSTGRESQL_USER => @@user, #'ralph', # change user !!!
- POSTGRESQL_PORT => port_pgsql,
- #POSGRESQL_LINKS_PATH => '',
- SQLITE_USER => @@user,
- SQLITE_PATH => @@user, #??
- SQLITE_PORT => '**',
- }
- @@default_dir=DEFAULT_DIR
- m=/.+\/(?:src\/)?(\S+)/m # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
- @@pwd=@pwd=SiSU_Utils::Path.new.base_markup
- attr_accessor :user,:home,:hostname,:pwd,:host,:arch,:rbver,:dir_arch,:dir_sitearch,:dir_bin,:locale,:webserv_path,:webserv_host_cgi,:webserv_port_cgi,:default_dir,:rc_path,:ad_path
- def initialize
- @user, @home, @hostname, @pwd, @sisu_etc, @host, @arch, @rbver, @dir_arch, @dir_sitearch, @dir_bin, @locale, @default_dir=
- @@user,@@home,@@hostname,@@pwd,@@sisu_etc,@@host,@@arch,@@rbver,@@dir_arch,@@dir_sitearch,@@dir_bin,@@locale,@@default_dir
- #note rbver is duplicated in InfoVersion
- end
+ class InfoSystemGen < SiSU_Info_Sys_Gen::InfoSystemGen # se_info_system.rb
end
- class InfoSystem < InfoSystemGen
- include Singleton
- def initialize
- super()
- end
+ class InfoSystem < SiSU_Info_Sys::InfoSystem # se_info_system.rb
end
- class Load
- def initialize(prog,mandatory=false)
- @prog,@mandatory=prog,mandatory
- end
- def prog
- load_prog=false
- $:.each do |reqpath|
- if FileTest.exist?("#{reqpath}/#{@prog}.rb")
- load_prog=true
- #SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).ok("#{reqpath}/#{@prog}.rb loaded")
- break
- #else SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).warn("#{reqpath}/#{@prog}.rb not found")
- end
- end
- if load_prog \
- and @prog=~/dbi/
- begin
- require 'dbi'
- rescue LoadError
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- error('dbi NOT FOUND (LoadError)')
- end
- end
- if load_prog
- begin
- require @prog
- rescue LoadError
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- error("#{@prog} NOT FOUND (LoadError)")
- end
- else
- @mandatory \
- ? (SiSU_Screen::Ansi.new(@prog,"*WARN* module required: #{@prog}").warn)
- : '' #(SiSU_Screen::Ansi.new(@prog,"*WARN* #{@prog} load requested").warn)
- end
- load_prog
- end
- def prog?
- load_prog=false
- $:.each do |reqpath|
- if FileTest.exist?("#{reqpath}/#{@prog}.rb"); load_prog=true
- break
- end
- end
- load_prog
- end
+ class Load < SiSU_Load::Load # se_load.rb
end
- class GetInit < InfoSystemGen
- @@noyaml=false
- @@rc,@@sisu_doc_makefile,@@sisurc_path,@@tx=nil,nil,nil,nil
- @@ad={ promo: nil, promo_list: nil, flag_promo: false }
- @@sdmd=nil
- attr_accessor :yaml
- def initialize
- super()
- @markup_dir_changed_=if @@sdmd==$sisu_document_markup_directory
- false
- else
- @@sdmd=$sisu_document_markup_directory
- true
- end
- end
- def tex
- @@tx ||=SiSU_Viz::TeX.new
- end
- def rc_path_options
- [
- "#{$sisu_document_markup_directory_base_fixed_path}/.sisu/#{SiSU_is[:version_dir]}",
- "#{$sisu_document_markup_directory_base_fixed_path}/.sisu",
- "#{$sisu_document_markup_directory_base_fixed_path}/_sisu/#{SiSU_is[:version_dir]}",
- "#{$sisu_document_markup_directory_base_fixed_path}/_sisu",
- "#{@@home}/.sisu/#{SiSU_is[:version_dir]}",
- "#{@@home}/.sisu",
- "#{@@sisu_etc}/#{SiSU_is[:version_dir]}",
- "#{@@sisu_etc}",
- ]
- end
- def sisu_document_make
- def makefile_name
- S_CONF[:header_make]
- end
- def makefile
- rc_path_options.each do |v|
- if FileTest.exist?("#{v}/#{makefile_name}")
- @sisu_make_path=v
- break
- end
- end
- @sisu_make_file_path=@sisu_make_path \
- ? "#{@sisu_make_path}/#{makefile_name}"
- : nil
- end
- def makefile_read
- if makefile
- sisu_doc_makefile=IO.read(makefile, mode: 'r:utf-8')
- @sisu_doc_makefile=sisu_doc_makefile.split(/\s*\n\s*\n/m)
- end
- @sisu_doc_makefile
- end
- self
- end
- def sisu_yaml
- def rc
- if @markup_dir_changed_
- rc_path_options.each do |v|
- if @@noyaml \
- or FileTest.exist?("#{v}/noyaml")
- STDERR.puts "WARNING - YAML loading switched off, to enable delete the file:\n\t#{v}/noyaml\n\n" unless @@noyaml
- @@noyaml=true
- break
- else
- f=S_CONF[:rc_yml]
- p_f="#{v}/#{f}"
- if FileTest.exist?(p_f)
- begin
- require 'yaml'
- rescue LoadError
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- error('yaml NOT FOUND (LoadError)')
- end
- @@sisurc_path=v
- @@rc=YAML::load(File::open(p_f))
- break
- end
- unless @@rc
- f='sisurc.yaml'
- p_f="#{v}/#{f}"
- if FileTest.exist?(p_f)
- begin
- require 'yaml'
- rescue LoadError
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- error('yaml NOT FOUND (LoadError)')
- end
- @@sisurc_path=v
- @@rc=YAML::load(File::open(p_f))
- break
- end
- end
- end
- end
- end
- @@rc
- end
- def rc_path
- rc
- @@sisurc_path
- end
- self
- end
- def ads #WORK AREA
- tell_no_yaml='WARNING - YAML loading switched off, to enable delete the file:'
- if @markup_dir_changed_
- @ad_path=[
- "#{$sisu_document_markup_directory_base_fixed_path}/.sisu/#{SiSU_is[:version_dir]}/skin/yml",
- "#{$sisu_document_markup_directory_base_fixed_path}/.sisu/skin/yml",
- "#{$sisu_document_markup_directory_base_fixed_path}/_sisu/#{SiSU_is[:version_dir]}/skin/yml",
- "#{$sisu_document_markup_directory_base_fixed_path}/_sisu/skin/yml",
- "#{@@home}/.sisu/#{SiSU_is[:version_dir]}/skin/yml",
- "#{@@home}/.sisu/skin/yml",
- "#{@@sisu_etc}/#{SiSU_is[:version_dir]}/skin/yml",
- "#{@@sisu_etc}/skin/yml",
- ]
- @ad_path.each do |v|
- if @@noyaml \
- or FileTest.exist?("#{v}/noyaml")
- puts tell_no_yaml + "\n\t#{v}/noyaml\n" unless @@noyaml
- @@noyaml=true
- break
- else
- if FileTest.exist?("#{v}/list.yml")
- unless @@ad[:promo_list]
- begin
- require 'yaml'
- rescue LoadError
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- error('yaml NOT FOUND (LoadError)')
- end
- @@ad[:promo_list] ||= YAML::load(File::open("#{v}/list.yml"))
- end
- @@ad[:flag_promo]=true
- break
- end
- @@ad[:flag_promo]=false
- end
- end
- @ad_path.each do |v|
- if @@noyaml \
- or FileTest.exist?("#{v}/noyaml")
- puts tell_no_yaml + "\n\t#{v}/noyaml\n" unless @@noyaml
- @@noyaml=true
- break
- else
- if FileTest.exist?("#{v}/promo.yml")
- unless @@ad[:promo]
- begin
- require 'yaml'
- rescue LoadError
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- error('yaml NOT FOUND (LoadError)')
- end
- @@ad[:promo] ||= YAML::load(File::open("#{v}/promo.yml"))
- end
- @@ad[:flag_promo]=true
- break
- end
- @@ad[:flag_promo]=false
- end
- end
- end
- @@ad
- end
+ class GetInit < SiSU_Get_Init::GetInit # se_get_init.rb
end
- class EnvCall
- @@rc,@@fns,@@fnn,@@fnb,@@fnt,@@flv,@@fnz=nil,nil,nil,nil,nil,nil,nil
- @@ad={}
- attr_accessor :rc,:fnn,:fnb,:fnt,:fnv,:fnz,:ad
- def initialize(fns='')
- @fns=fns
- @sys=InfoSystem.instance
- get_init=SiSU_Env::GetInit.new
- @rc=get_init.sisu_yaml.rc
- @ad=get_init.ads
- if @fns \
- and @fns != '' \
- and @fns !=@@fns
- @@fns,@@fnn,@@fnb,@@fnt,@@flv,@@fnz=@fns,nil,nil,nil,nil,nil
- end
- if @fns \
- and @fns != '' #watch
- m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm|ssi)$/
- @@fnn ||=@fns[m,1]
- @@fnb ||=@fns[m,2]
- @@fnt ||=@fns[m,3]
- @@flv ||=document_language_versions_found[:f]
- unless @@fns =~/\S+?\.txz/
- @@fnz ||=if @@fns =~/(?:\~\S{2,3})?\.(?:ssm\.sst|ssm)$/; @@fnb + '.ssm.txz'
- elsif @@fnb; @@fnb + '.sst.txz'
- else '' # e.g. termsheet
- end
- end
- end
- @fnn,@fnb,@fnt,@flv,@fnz=@@fnn,@@fnb,@@fnt,@@flv,@@fnz
- end
- def default_language?
- if @rc \
- && defined? @rc['language_default']
- if (@rc['language_default'].is_a?(String)) \
- && (@rc['language_default'] =~/#{Px[:lng_lst_rgx]}/)
- @rc['language_default']
- else 'en'
- end
- else 'en'
- end
- end
- def mono_multi_lingual?
- if @rc \
- && defined? @rc['lingual']
- if (@rc['lingual'].is_a?(String)) \
- && (@rc['lingual'] =~/mono(?:lingual)?/)
- :mono
- elsif (@rc['lingual'].is_a?(String)) \
- && (@rc['lingual'] =~/multi(?:lingual)?/)
- :multi
- else :multi
- end
- else :multi
- end
- end
- def output_dir_structure
- def by?
- output_structure=:filename #set default output structure
- if @rc \
- && defined? @rc['output_dir_structure_by']
- output_structure=if (@rc['output_dir_structure_by'] =~/dump/) \
- or ((defined? @rc['output_structure']['dump']) \
- && @rc['output_structure']['dump'] ==true)
- :dump
- elsif (@rc['output_dir_structure_by'] =~/redirect/) \
- or ((defined? @rc['output_structure']['redirect']) \
- && @rc['output_structure']['redirect'] ==true)
- :redirect
- elsif (@rc['output_dir_structure_by'] =~/language/) \
- or ((defined? @rc['output_structure']['by_language']) \
- && @rc['output_structure']['by_language'] ==true)
- :language
- elsif (@rc['output_dir_structure_by'] =~/filetype/) \
- or ((defined? @rc['output_structure']['by_filetype']) \
- && @rc['output_structure']['by_filetype'] ==true)
- :filetype
- elsif (@rc['output_dir_structure_by'] =~/filename/) \
- or ((defined? @rc['output_structure']['by_filename']) \
- && @rc['output_structure']['by_filename'] ==true)
- :filename
- else #set default
- :language
- end
- else #set default
- :language
- end
- end
- def dump?
- ((by?) ==:dump) \
- ? true
- : false
- end
- def redirect?
- ((by?) ==:redirect) \
- ? true
- : false
- end
- def by_language_code?
- ((by?) ==:language) \
- ? true
- : false
- end
- def by_filetype?
- ((by?) ==:filetype) \
- ? true
- : false
- end
- def by_filename?
- ((by?) ==:filename) \
- ? true
- : false
- end
- def multilingual?
- by_language_code?
- end
- self
- end
- def document_language_versions_found #REVISIT
- @fn={}
- filename=(@fns =~/\.ssm\.sst$/) \
- ? @fns.gsub(/\.ssm\.sst$/,'.ssm')
- : @fns
- if filename.is_a?(String) \
- and not filename.empty?
- if output_dir_structure.by_language_code?
- m=/((.+?)(?:\~\w{2,3})?)\.(sst|ssm)$/
- @fn[:b],@fn[:m],@fn[:t]=filename[m,1],filename[m,2],filename[m,3]
- else m=/(.+?)\.(sst|ssm)$/
- @fn[:b]=@fn[:m]=filename[m,1]
- @fn[:t]=filename[m,2]
- end
- end
- lng_base=SiSU_Env::InfoEnv.new.language_default_set
- lang=SiSU_Env::StandardiseLanguage.new
- langs=lang.codes
- x=[]
- if FileTest.file?("#{@fn[:m]}.#{@fn[:t]}")
- n=@fn[:m].gsub(/^.+?\//,'')
- n =n + '.' + @fn[:t]
- x << { f: "#{@fn[:m]}.#{@fn[:t]}", l: lng_base, n: n }
- end
- langs.each do |l|
- lng=SiSU_Env::StandardiseLanguage.new(l)
- if FileTest.file?("#{@fn[:m]}~#{lng.code}.#{@fn[:t]}")
- x << { f: "#{@fn[:m]}~#{lng.code}.#{@fn[:t]}", l: lng.code }
- elsif FileTest.file?("#{@fn[:m]}~#{lng.name}.#{@fn[:t]}")
- x << { f: "#{@fn[:m]}~#{lng.name}.#{@fn[:t]}", l: lng.code }
- end
- if FileTest.file?("#{lng.code}/#{@fn[:m]}~#{lng.code}.#{@fn[:t]}")
- if FileTest.file?("#{lng.code}/#{@fn[:m]}~#{lng.code}.#{@fn[:t]}")
- x << { f: "#{lng.code}/#{@fn[:m]}~#{lng.code}.#{@fn[:t]}", l: lng.code }
- elsif FileTest.file?("#{lng.code}/#{@fn[:m]}~#{lng.name}.#{@fn[:t]}")
- x << { f: "#{lng.code}/#{@fn[:m]}~#{lng.name}.#{@fn[:t]}", l: lng.code }
- end
- end
- if FileTest.file?("#{lng.code}/#{@fn[:m]}.#{@fn[:t]}")
- if FileTest.file?("#{lng.code}/#{@fn[:m]}.#{@fn[:t]}")
- x << { f: "#{lng.code}/#{@fn[:m]}.#{@fn[:t]}", l: lng.code }
- elsif FileTest.file?("#{lng.code}/#{@fn[:m]}.#{@fn[:t]}")
- x << { f: "#{lng.code}/#{@fn[:m]}.#{@fn[:t]}", l: lng.code }
- end
- end
- end
- @fn[:f]=x
- @fn
- end
- def published_manifests?(output_base)
- @fn={}
- @m=[]
- unless (@fns.nil? \
- or @fns.empty?)
- if output_dir_structure.by_language_code?
- m=/((.+?)(?:\~\w{2,3})?)\.((?:-|ssm\.)?sst$)/
- @fn[:b],@fn[:m],@fn[:t]=@fns[m,1],@fns[m,2],@fns[m,3]
- else m=/(.+?)\.((?:-|ssm\.)?sst$)/
- @fn[:b]=@fn[:m]=@fns[m,1]
- @fn[:t]=@fns[m,2]
- end
- end
- lang=SiSU_Env::StandardiseLanguage.new
- langs=lang.codes
- x=[]
- if FileTest.file?("#{@fn[:m]}.#{@fn[:t]}"); x << "#{@fn[:m]}.#{@fn[:t]}"
- end
- dir=SiSU_Env::InfoEnv.new(@fns)
- @m << { m: 'sisu_manifest.html', l: 'English' } #fix later, default language
- langs.each do |l|
- lng=SiSU_Env::StandardiseLanguage.new(l)
- fns_c="#{@fn[:m]}~#{lng.code}.#{@fn[:t]}"
- fns_l="#{@fn[:m]}~#{lng.name}.#{@fn[:t]}"
- if FileTest.file?(fns_c)
- fn_set_lang=SiSU_Env::StandardiseLanguage.new.
- file_to_language(fns_c) #reconsider file_to_language
- lng=fn_set_lang[:n]
- fn=SiSU_Env::EnvCall.new(fns_c).lang(fn_set_lang[:c])
- @m << { m: fn[:manifest], l: lng }
- elsif FileTest.file?(fns_l)
- fn_set_lang=SiSU_Env::StandardiseLanguage.new.
- file_to_language(fns_l) #reconsider file_to_language
- @fnl=dir.i18n.lang_filename(fn_set_lang[:c])
- fn=SiSU_Env::EnvCall.new(fns_l).lang(fn_set_lang[:c])
- @m << { m: fn[:manifest], l: lng }
- end
- end
- @m=@m.uniq
- end
- def filename(code,name,suffix)
- "#{name}#{suffix}"
- end
- def lang(code)
- {
- html: filename(code,'','.html'),
- book_index: filename(code,'book_index','.html'),
- concordance: filename(code,'concordance','.html'),
- sax: filename(code,'sax','.xml'),
- dom: filename(code,'dom','.xml'),
- docbook: filename(code,'docbook','.xml'),
- xhtml: filename(code,'scroll','.xhtml'),
- pdf_l: filename(code,'','.pdf'),
- pdf_p: filename(code,'','.pdf'),
- pdf_l_a4: filename(code,"a4",'.pdf'),
- pdf_p_a4: filename(code,"a4",'.pdf'),
- pdf_l_a5: filename(code,"a5",'.pdf'),
- pdf_p_a5: filename(code,"a5",'.pdf'),
- pdf_l_b5: filename(code,"b5",'.pdf'),
- pdf_p_b5: filename(code,"b5",'.pdf'),
- pdf_l_letter: filename(code,"letter",'.pdf'),
- pdf_p_letter: filename(code,"letter",'.pdf'),
- pdf_l_legal: filename(code,"legal",'.pdf'),
- pdf_p_legal: filename(code,"legal",'.pdf'),
- toc: filename(code,'toc','.html'),
- doc: filename(code,fnb,'.html'),
- index: filename(code,'index','.html'),
- po: filename(code,@fns,'.po'),
- pot: filename(code,@fns,'.pot'),
- odf: filename(code,'','.odt'),
- epub: filename(code,'','.epub'),
- plain: filename(code,'','.txt'),
- qrcode: filename(code,'','.jpg'),
- manpage: filename(code,'','.1'), #fix, section number
- wiki: filename(code,'wiki','.txt'),
- digest: filename(code,'digest','.txt'),
- metadata: filename(code,'metadata','.html'), #chk
- manifest: filename(code,'manifest','.html'),
- oai_pmh: filename(code,'oai_pmh','.xml'),
- sitemap: filename(code,'sitemap','.xml'),
- sitemap_touch: filename(code,"sitemap_#{fnb}",'.xml'),
- sxs: filename(code,fnb,'.sxs.xml'),
- sxd: filename(code,fnb,'.sxd.xml'),
- sxn: filename(code,fnb,'.sxn.xml'),
- sisupod: filename(nil,@fnz,''),
- book_idx_html: filename(code,'book_index','.html'),
- book_idx_epub: filename(code,'book_index','.xhtml'),
- epub_concord: filename(code,'concordance','.xhtml'),
- }
- end
+ class EnvCall < SiSU_Env_Call::EnvCall # se_envcall.rb
end
- class SystemCall
- @@locale_flag=false
- def initialize(input='',output='',opt_or_cmd='')
- @input,@output=input,output
- (opt_or_cmd.is_a?(SiSU_Commandline::Options)) \
- ? (@cmd,@opt=opt_or_cmd.cmd,opt_or_cmd)
- : (@cmd,@opt=opt_or_cmd,nil) #cmd.is_a?(String)
- @prog=SiSU_Env::InfoProgram.new
- @sys=InfoSystem.instance
- end
- def program_found?(program)
- found=`which #{program}` #`whereis #{program}`
- (found =~/bin\/#{program}\b/) ? true : false
- end
- def locale #locales utf8 or other
- unless @@locale_flag
- @@locale_flag=true
- end
- @sys.locale
- end
- def file_encoding(filename,cmd='') #file encoding
- program='file'
- fnsp=SiSU_Env::InfoEnv.new(filename).source_file_with_path
- if program_found?(program)
- encoding=%x{file -L #{fnsp}}.strip
- encoding=encoding.gsub(/#{fnsp}:(\s+|$)/,'')
- encoding=if encoding \
- and not encoding.empty?
- encoding
- else 'UTF-8 assumed, encoding undetermined'
- end
- puts encoding if cmd =~/[VM]/
- encoding
- else encoding='UTF-8 assumed, file encoding check program unavailable'
- end
- end
- def wc #word count
- program='wc'
- if program_found?(program) \
- and locale !~/utf-?8/i
- true
- else
- program_ref="(not available)" unless program_found?(program)
- program_ref="(UTF-8)" if locale =~/utf-?8/i
- false
- end
- end
- def rcs #rcs for document markup data
- program='rcs'
- program_ref="\n\t\tdocument version information requested"
- if program_found?(program); true
- else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- warn("#{program} is not installed #{program_ref}")
- false
- end
- end
- def cvs #cvs for document markup data
- program='cvs'
- program_ref="\n\t\tdocument version information requested"
- if program_found?(program); true
- else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- warn("#{program} is not installed #{program_ref}")
- false
- end
- end
- def zip #zip
- program='zip'
- program_ref="\n\t\tused to in the making of number of file formats, odf, epub"
- if program_found?(program); true
- else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- mark("*WARN* #{program} is not installed #{program_ref}")
- false
- end
- end
- def openssl #openssl for digests
- program='openssl'
- program_ref="\n\t\tused to generate requested source document identification digest"
- if program_found?(program); true
- else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- warn("#{program} is not installed #{program_ref}")
- false
- end
- end
- def md5(filename) #md5 dgst
- program='openssl'
- program_ref="\n\t\tmd5 digest requested"
- if program_found?(program)
- pwd=Dir.pwd
- Dir.chdir(File.dirname(filename))
- dgst=%x{openssl dgst -md5 #{File.basename(filename)}}.strip #use file name without file path
- Dir.chdir(pwd)
- dgst.scan(/\S+/)
- else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- warn("#{program} is not installed #{program_ref}")
- false
- end
- end
- def sha256(filename) #sha dgst
- program='openssl'
- program_ref="\n\t\tsha digest requested"
- if program_found?(program)
- pwd=Dir.pwd
- Dir.chdir(File.dirname(filename))
- dgst=%x{openssl dgst -sha256 #{File.basename(filename)}}.strip #use file name without file path
- Dir.chdir(pwd)
- dgst.scan(/\S+/)
- else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- warn("#{program} is not installed #{program_ref}")
- false
- end
- end
- def sha512(filename) #sha dgst
- program='openssl'
- program_ref="\n\t\tsha digest requested"
- if program_found?(program)
- pwd=Dir.pwd
- Dir.chdir(File.dirname(filename))
- dgst=%x{openssl dgst -sha512 #{File.basename(filename)}}.strip #use file name without file path
- Dir.chdir(pwd)
- dgst.scan(/\S+/)
- else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- warn("#{program} is not installed #{program_ref}")
- false
- end
- end
- def psql #psql
- program='psql'
- program_ref="\n\t\tpsql requested"
- if program_found?(program); true
- else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- warn("#{program} is not installed #{program_ref}")
- false
- end
- end
- def create_pg_db(dbname_stub=nil) #createdb
- unless dbname_stub
- @pwd ||=Dir.pwd
- m=/.+\/(?:src\/)?(\S+)/im # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
- dbname_stub=@pwd[m,1]
- end
- program='createdb'
- db_name="#{Db[:name_prefix]}#{dbname_stub}"
- program_ref="\n\t\tcreatedb dbname #{db_name} #for postgresql database creation"
- (program_found?(program)) \
- ? system("#{program} #{dbname_name}")
- : (STDERR.puts "\t*WARN* #{program} is not available #{program_ref}")
- end
- def relaxng(cmd='') #trang - convert between different schema languages for XML
- program='trang'
- program_ref="\n\t\tsee <http://www.thaiopensource.com/relaxng/trang.html>"
- (program_found?(program)) \
- ? system("#{program} #{@input} #{@output}")
- : (STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" if cmd =~/V/)
- end
- def qrencode #qrcode - for generating QR code
- program='qrencode'
- program_ref="\n\t\tsee <http://megaui.net/fukuchi/works/qrencode/index.en.html>"
- found=(program_found?(program)) ? true : false
- found \
- ? (system(%{
- echo "#{@input}" | #{program} -s 3 -o #{@output}
- }))
- : (STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" if @cmd =~/V/)
- #found
- end
- def imagemagick #imagemagick is a image manipulation program
- program='identify'
- #program_ref="\n\t\tsee <http://www.imagemagick.org/>"
- found=(program_found?(program)) ? true : false
- #STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" unless found
- found
- end
- def graphicksmagick #graphicsmagick is a image manipulation program
- program='gm'
- #program_ref="\n\t\tsee <http://www.graphicsmagick.org/>"
- found=(program_found?(program)) ? true : false
- #STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}" unless found
- found
- end
- def well_formed? #tidy - check for well formed xml xhtml etc.
- program=@prog.tidy
- program_ref="\n\t\tsee <http://tidy.sourceforge.net/>"
- (program_found?(program)) \
- ? system("#{@prog.tidy} -xml #{@input} > #{@output}")
- : (STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}")
- end
- def tex2pdf_engine
- progs=['xetex','xelatex','pdflatex','pdfetex','pdftex']
- @pdfetex_flag=false
- @cmd ||=''
- @texpdf=nil
- progs.each do |program|
- if program_found?(program)
- @texpdf=program if program =~/xetex|xelatex|pdftex|pdflatex/
- @pdfetex_flag=true
- break
- end
- end
- if @pdfetex_flag==false
- @texpdf=progs.join(', ')
- end
- @texpdf
- end
- def latex2pdf(md,papersize='a4') #convert from latex to pdf
- tell=if @cmd =~/[MV]/
- ''
- elsif @cmd =~/[v]/
- %q{2>&1 | grep -v ' WARNING '}
- else %q{2>&1 | grep -v '$'}
- end
- mode='batchmode' #mode='nonstopmode'
- texpdf=tex2pdf_engine
- if @pdfetex_flag
- texpdf_cmd=case texpdf
- when /xetex/
- %{#{texpdf} -interaction=#{mode} -fmt=xelatex -papersize="#{papersize}" #{@input} #{tell}\n}
- when /xelatex/
- %{#{texpdf} -interaction=#{mode} -papersize="#{papersize}" #{@input} #{tell}\n}
- when /pdftex/
- "#{texpdf} -interaction=#{mode} -fmt=pdflatex #{@input} #{tell}\n"
- when /pdflatex/
- "#{texpdf} -interaction=#{mode} #{@input} #{tell}\n"
- end
- system(texpdf_cmd)
- else STDERR.puts "\t*WARN* none of the following programs are installed: #{@texpdf}"
- end
- end
- def makeinfo #texinfo
- program='makeinfo'
- options='' #'--force' #''
- program_ref="\n\t\tsee http://www.gnu.org/software/texinfo/"
- (program_found?(program)) \
- ? system("#{program} #{options} #{@input}\n")
- : (STDERR.puts "\t*WARN* #{program} is not installed #{program_ref}")
- end
- def scp
- puts "scp -Cr #{@input} #{@output}" if @cmd =~/[vVM]/
- puts "scp disabled"
- end
- def rsync(action='',chdir=nil)
- program='rsync'
- if program_found?(program)
- vb=if @cmd =~/q/; 'q'
- elsif @cmd =~/v/; 'v'
- else ''
- end
- cX=SiSU_Screen::Ansi.new(@cmd).cX
- msg=(@cmd =~/q/) ? '' : %{ && echo " #{cX.grey}OK: #{@input} -> #{@output}#{cX.off}"}
- amp=(@opt \
- && @opt.files.length > 1) \
- ? ''
- : ((@cmd =~/[vVM]/) ? '' : '&')
- rsync_cmd="rsync -az#{vb} #{action} #{@input} #{@output}"
- puts rsync_cmd if @cmd =~/[vVM]/
- dir_change=dir_return=nil
- if not chdir.nil? \
- && chdir != Dir.pwd
- dir_change=Dir.chdir(chdir)
- dir_return=Dir.pwd
- end
- dir_change if dir_change
- system("
- #{rsync_cmd} #{msg} #{amp}
- ")
- dir_return if dir_return
- else STDERR.puts "\t*WARN* #{program} not found"
- end
- end
- def rm
- if @cmd =~/^-Z[mMvVq]*$/; FileUtils::rm_rf(@input)
- elsif @cmd =~/V/; FileUtils::rm(@input)
- elsif @cmd !~/q/; FileUtils::rm(@input)
- elsif @cmd =~/q/; FileUtils::rm(@input)
- else STDERR.puts "\t*WARN* operation ignored"
- end
- end
+ class SystemCall < SiSU_Sys_Call::SystemCall # se_programs.rb
end
- class StandardiseLanguage
- require_relative 'i18n' # i18n.rb
- def initialize(l='')
- @language=(l.nil? || l.empty?) \
- ? SiSU_Env::InfoEnv.new.language_default_set
- : l
- @r=%{(?:#{Px[:lng_lst_rgx]})}
- @lang_info=SiSU_i18n::Languages.new
- end
- def lang_lst # from i18n
- @@lang_info ||=@lang_info.language.list
- end
- def lang(l='') # from i18n
- if l =~/^#{@r}$/
- @lang_info.language.list[l]
- elsif @language =~/^#{@r}$/
- @lang_info.language.list[@language]
- else nil
- end
- end
- def language
- lng={}
- case @language
- when /^am$|Amharic/i then d,c,l=false,lang_lst['am'][:c], lang_lst['am'][:n]
- when /^bg$|Bulgarian/i then d,c,l=false,lang_lst['bg'][:c], lang_lst['bg'][:n]
- when /^bn$|Bengali/i then d,c,l=false,lang_lst['bn'][:c], lang_lst['bn'][:n]
- when /^br$|Breton/i then d,c,l=false,lang_lst['br'][:c], lang_lst['br'][:n]
- when /^ca$|Catalan/i then d,c,l=false,lang_lst['ca'][:c], lang_lst['ca'][:n]
- when /^cs$|Czech/i then d,c,l=false,lang_lst['cs'][:c], lang_lst['cs'][:n]
- when /^cy$|Welsh/i then d,c,l=false,lang_lst['cy'][:c], lang_lst['cy'][:n]
- when /^da$|Danish|Dansk/i then d,c,l=false,lang_lst['da'][:c], lang_lst['da'][:n]
- when /^de$|German/i then d,c,l=false,lang_lst['de'][:c], lang_lst['de'][:n]
- when /^el$|Greek/i then d,c,l=false,lang_lst['el'][:c], lang_lst['el'][:n]
- when /^en$|English/i then d,c,l=false,lang_lst['en'][:c], lang_lst['en'][:n]
- when /^eo$|Esperanto/i then d,c,l=false,lang_lst['eo'][:c], lang_lst['eo'][:n]
- when /^es$|Spanish|Espanol/i then d,c,l=false,lang_lst['es'][:c], lang_lst['es'][:n]
- when /^et$|Estonian/i then d,c,l=false,lang_lst['et'][:c], lang_lst['et'][:n]
- when /^eu$|Basque/i then d,c,l=false,lang_lst['eu'][:c], lang_lst['eu'][:n]
- when /^fi$|Finnish|Finsk|Suomi/i then d,c,l=false,lang_lst['fi'][:c], lang_lst['fi'][:n]
- when /^fr$|French|Francais/i then d,c,l=false,lang_lst['fr'][:c], lang_lst['fr'][:n]
- when /^ga$|Irish/i then d,c,l=false,lang_lst['ga'][:c], lang_lst['ga'][:n]
- when /^gl$|Galician/i then d,c,l=false,lang_lst['gl'][:c], lang_lst['gl'][:n]
- when /^he$|Hebrew/i then d,c,l=false,lang_lst['he'][:c], lang_lst['he'][:n]
- when /^hi$|Hindi/i then d,c,l=false,lang_lst['hi'][:c], lang_lst['hi'][:n]
- when /^hr$|Croatian/i then d,c,l=false,lang_lst['hr'][:c], lang_lst['hr'][:n]
- when /^hy$|Armenian/i then d,c,l=false,lang_lst['hy'][:c], lang_lst['hy'][:n]
- when /^ia$|Interlingua/i then d,c,l=false,lang_lst['ia'][:c], lang_lst['ia'][:n]
- when /^is$|Icelandic/i then d,c,l=false,lang_lst['is'][:c], lang_lst['is'][:n]
- when /^it$|Italian/i then d,c,l=false,lang_lst['it'][:c], lang_lst['it'][:n]
- when /^la$|Latin/i then d,c,l=false,lang_lst['la'][:c], lang_lst['la'][:n]
- when /^lo$|Lao/i then d,c,l=false,lang_lst['lo'][:c], lang_lst['lo'][:n]
- when /^lt$|Lithuanian/i then d,c,l=false,lang_lst['lt'][:c], lang_lst['lt'][:n]
- when /^lv$|Latvian/i then d,c,l=false,lang_lst['lv'][:c], lang_lst['lv'][:n]
- when /^ml$|Malayalam/i then d,c,l=false,lang_lst['ml'][:c], lang_lst['ml'][:n]
- when /^mr$|Marathi/i then d,c,l=false,lang_lst['mr'][:c], lang_lst['mr'][:n]
- when /^nl$|Dutch/i then d,c,l=false,lang_lst['nl'][:c], lang_lst['nl'][:n]
- when /^no$|Norwegian|Norsk/i then d,c,l=false,lang_lst['no'][:c], lang_lst['no'][:n]
- when /^nn$|Norwegian Nynorsk/i then d,c,l=false,lang_lst['nn'][:c], lang_lst['nn'][:n]
- when /^oc$|Occitan/i then d,c,l=false,lang_lst['oc'][:c], lang_lst['oc'][:n]
- when /^pl$|Polish/i then d,c,l=false,lang_lst['pl'][:c], lang_lst['pl'][:n]
- when /^pt$|Portuguese/i then d,c,l=false,lang_lst['pt'][:c], lang_lst['pt'][:n]
- when /^pt_BR$|Portuguese Brazil/i then d,c,l=false,lang_lst['pt_BR'][:c], lang_lst['pt_BR'][:n]
- when /^ro$|Romanian/i then d,c,l=false,lang_lst['ro'][:c], lang_lst['ro'][:n]
- when /^ru$|Russian/i then d,c,l=false,lang_lst['ru'][:c], lang_lst['ru'][:n]
- when /^sa$|Sanskrit/i then d,c,l=false,lang_lst['sa'][:c], lang_lst['sa'][:n]
- when /^se$|Sami/i then d,c,l=false,lang_lst['se'][:c], lang_lst['se'][:n]
- when /^sk$|Slovak/i then d,c,l=false,lang_lst['sk'][:c], lang_lst['sk'][:n]
- when /^sl$|Slovenian/i then d,c,l=false,lang_lst['sl'][:c], lang_lst['sl'][:n]
- when /^sq$|Albanian/i then d,c,l=false,lang_lst['sq'][:c], lang_lst['sq'][:n]
- when /^sr$|Serbian/i then d,c,l=false,lang_lst['sr'][:c], lang_lst['sr'][:n]
- when /^sv$|Swedish|Svensk/i then d,c,l=false,lang_lst['sv'][:c], lang_lst['sv'][:n]
- when /^ta$|Tamil/i then d,c,l=false,lang_lst['ta'][:c], lang_lst['ta'][:n]
- when /^te$|Telugu/i then d,c,l=false,lang_lst['te'][:c], lang_lst['te'][:n]
- when /^th$|Thai/i then d,c,l=false,lang_lst['th'][:c], lang_lst['th'][:n]
- when /^tk$|Turkmen/i then d,c,l=false,lang_lst['tk'][:c], lang_lst['tk'][:n]
- when /^tr$|Turkish/i then d,c,l=false,lang_lst['tr'][:c], lang_lst['tr'][:n]
- when /^uk$|Ukranian/i then d,c,l=false,lang_lst['uk'][:c], lang_lst['uk'][:n]
- when /^ur$|Urdu/i then d,c,l=false,lang_lst['ur'][:c], lang_lst['ur'][:n]
- when /^us|American$|/i then d,c,l=false,lang_lst['en'][:c], lang_lst['en'][:n]
- when /^vi$|Vietnamese/i then d,c,l=false,lang_lst['vi'][:c], lang_lst['vi'][:n]
- else d,c,l=true, lang_lst['en'][:c], lang_lst['en'][:n] #default
- end
- lng[:d],lng[:c],lng[:n]=d,c,l
- lng
- end
- def name
- language[:n].downcase
- end
- def title
- language[:n]
- end
- def code
- language[:c]
- end
- def tex_name
- language[:xlp]
- end
- def file_to_language(file) # used, fix and remove
- m=/.+?\~(\w{2,3})\.(?:-|ssm\.)?sst$/
- @language=if file =~m ; file[m,1]
- else ''
- end
- language
- end
- def codes
- # Language List po4a
- # <http://www.debian.org/international/l10n/po/>
- # Px[:lng_lst] see constants.rb
- # see polyglossia for subset
- # <http://mirrors.ctan.org/macros/xetex/latex/polyglossia/polyglossia.pdf>
- # also note ISO_639-2
- # <http://en.wikipedia.org/wiki/ISO_639-2>
- # <http://en.wikipedia.org/wiki/List_of_ISO_639-2_codes>
- Px[:lng_lst] # constants.rb
- end
+ class StandardiseLanguage < SiSU_Standardise_Lang::StandardiseLanguage # se_standardise_lang.rb
end
- class InfoEnv < EnvCall
- begin
- require 'pathname'
- require 'fileutils'
- include FileUtils
- rescue LoadError
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('pathname or fileutils NOT FOUND (LoadError)')
- end
- attr_accessor :filename,:sys,:home,:hostname,:user,:env,:rc,:www,:fnb,:fnn,:fnt,:flv,:webserv_path,:base_markup_dir_stub,:stub_src,:webserv_host_cgi,:webserv_port_cgi,:processing,:processing_git,:etc,:yamlrc_dir
- @@image_flag,@@local_image=true,true #warning on @@image_flag
- @@fb,@@man_path=nil,nil
- def initialize(fns='',md=nil)
- super() #you may not want to re-execute this static info so frequently!
- @init=SiSU_Env::GetInit.new
- @fns,@md=fns,md
- @env=SiSU_Env::EnvCall.new(fns) if fns
- fnb=if @md \
- and defined? @md.fnb
- @md.fnb
- elsif defined? @env.fnb \
- and @env.fnb
- @env.fnb
- elsif @fns.is_a?(String) \
- and not @fns.empty?
- m=/(.+)?\.(?:(?:-|ssm\.)?sst|ssm)$/m
- @fns[m,1] if not @fns.empty?
- end
- if fnb; @@fb ||=fnb
- end
- @sys=InfoSystem.instance
- @fnb ||=@@fb #clean up this... used primarily for zap which is not passed normal parameters
- @fixed_websev_root='' # @home
- @pwd=@@pwd=Dir.pwd
- @base_markup_dir_stub=SiSU_Utils::Path.new.base_markup_stub
- @stub_src= @base_markup_dir_stub + '/src'
- @stub_pod= @base_markup_dir_stub + '/pod'
- @stub_epub= @base_markup_dir_stub + '/epub'
- pt=Pathname.new(Dir.pwd)
- stub=if output_dir_structure.by_language_code?
- r=Px[:lng_lst_rgx]
- stub=if Dir.pwd =~/.+?\/([^\/]+)(?:\/(#{r})$)/
- lng=pt.split[-1].to_s
- lng_part='/' + lng
- base=pt.split[0].split[-1].to_s
- else
- lng_part='/' + language_default_set
- base=pt.split[-1].to_s
- end
- base + lng_part
- elsif output_dir_structure.by_filetype?
- pt.split[-1].to_s
- elsif output_dir_structure.by_filename?
- ''
- else
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- warn('set output type, by: language, filetype or filename')
- end
- @stub_set_manifest=stub + '/manifest'
- end
- def user
- @sys.user
- end
- def hostname
- @sys.hostname
- end
- def host
- @sys.host
- end
- def arch
- @sys.arch
- end
- def rbver
- @sys.rbver
- end
- def locale
- @sys.locale
- end
- def concord_max
- ((defined? @rc['processing']['concord_max']) \
- && @rc['processing']['concord_max']) \
- ? @rc['processing']['concord_max']
- : (defaults[:concord_max])
- end
- def language_default_set #set directory (default) language
- ((defined? @rc['default']['language']) \
- && @rc['default']['language'] =~/\S+/) \
- ? @rc['default']['language']
- : 'en'
- end
- def markup_emphasis
- if defined? @rc['default']['emphasis'] \
- and @rc['default']['emphasis'] \
- and @rc['default']['emphasis']=~/bold/
- 'bold'
- elsif defined? @rc['default']['emphasis'] \
- and @rc['default']['emphasis'] \
- and @rc['default']['emphasis']=~/italic/
- 'italics'
- elsif defined? @rc['default']['emphasis'] \
- and @rc['default']['emphasis'] \
- and @rc['default']['emphasis']=~/underscore/
- 'underscore'
- else 'bold'
- end
- end
- def plaintext_wrap
- ((defined? @rc['default']['text_wrap']) \
- && (@rc['default']['text_wrap']) \
- && (@rc['default']['text_wrap'].to_s=~/\d\d+/) \
- && (@rc['default']['text_wrap'].to_i > 19) \
- && (@rc['default']['text_wrap'].to_i < 201)) \
- ? @rc['default']['text_wrap'].to_i
- : 78
- end
- def current_document
- @@current_document||=Dir.pwd
- @@current_document
- end
- def base_markup_dir_stub
- @base_markup_dir_stub
- end
- def stub_md_harvest #watch
- @stub_set_manifest
- end
- def stub_src
- @stub_src
- end
- def stub_pod
- @stub_pod
- end
- def sisupod_v4(opt)
- #processing_path.processing
- # sisupod
- # doc/
- # manifest.txt
- # en/content.sst [file content]
- # fr/content.sst
- # _sisu
- # sisu_document_make
- # image@ (ln -s ../../image)
- # audio@ (ln -s ../../audio)
- # video@ (ln -s ../../video)
- # image/ [all images for specific document gathered here]
- # audio/
- # video/
- spp="#{processing_path.processing}/#{Gt[:sisupod]}"
- sppc="#{spp}/doc/_sisu"
- lng_dirs=[]
- if FileTest.directory?(spp) \
- or FileTest.file?(spp)
- FileUtils::rm_rf(spp)
- end
- paths=[]
- flv=SiSU_Env::EnvCall.new(opt.fns).
- document_language_versions_found
- flv[:f].each {|l| lng_dirs << l[:l] }
- lng_dirs.uniq.each do |lng|
- paths << "#{spp}/doc/#{lng}"
- end
- paths \
- << "#{spp}/image"
- #<< "#{spp}/audio" \
- #<< "#{spp}/video" \
- paths.each do |x|
- unless FileTest.directory?(x)
- FileUtils::mkdir_p(x)
- end
- end
- if FileTest.directory?(sppc)
- pwd=Dir.pwd
- Dir.chdir(sppc)
- FileUtils::ln_s('../../image', 'image')
- #FileUtils::ln_s('../../audio', 'audio')
- #FileUtils::ln_s('../../video', 'video')
- Dir.chdir(pwd)
- end
- end
- def sisupod_v3(opt)
- #processing_path.processing
- # sisupod
- # doc/
- # manifest.txt
- # en/content.sst [file content]
- # fr/content.sst
- # _sisu
- # skin/
- # doc [relevant skin if any other than default]
- # image@ (ln -s ../../image)
- # audio@ (ln -s ../../audio)
- # video@ (ln -s ../../video)
- # image/ [all images for specific document gathered here]
- # audio/
- # video/
- spp="#{processing_path.processing}/#{Gt[:sisupod]}"
- sppc="#{spp}/doc/_sisu"
- lng_dirs=[]
- if FileTest.directory?(spp) \
- or FileTest.file?(spp)
- FileUtils::rm_rf(spp)
- end
- paths=[]
- flv=SiSU_Env::EnvCall.new(opt.fns).
- document_language_versions_found
- flv[:f].each {|l| lng_dirs << l[:l] }
- lng_dirs.uniq.each do |lng|
- paths << "#{spp}/doc/#{lng}"
- end
- paths \
- << "#{spp}/image" \
- << "#{sppc}/skin/doc" \
- << "#{sppc}/skin/dir" \
- << "#{sppc}/skin/site"
- #<< "#{spp}/audio" \
- #<< "#{spp}/video" \
- paths.each do |x|
- unless FileTest.directory?(x)
- FileUtils::mkdir_p(x)
- end
- end
- if FileTest.directory?(sppc)
- pwd=Dir.pwd
- Dir.chdir(sppc)
- FileUtils::ln_s('../../image', 'image')
- #FileUtils::ln_s('../../audio', 'audio')
- #FileUtils::ln_s('../../video', 'video')
- Dir.chdir(pwd)
- end
- end
- def sisupod_v2
- #processing_path.processing
- # sisupod
- # content.sst [file content]
- # filename.sst [link to content.sst]
- # _sisu
- # skin/
- # doc [relevant skin if any other than default]
- # image [all images for specific document gathered here]
- sisupod_processing_path="#{processing_path.processing}/#{Gt[:sisupod]}"
- if FileTest.directory?(sisupod_processing_path) \
- or FileTest.file?(sisupod_processing_path)
- FileUtils::rm_rf(sisupod_processing_path)
- end
- paths=[]
- paths=[
- "#{processing_path.processing}/#{Gt[:sisupod]}/_sisu/skin/doc",
- "#{processing_path.processing}/#{Gt[:sisupod]}/_sisu/skin/dir",
- "#{processing_path.processing}/#{Gt[:sisupod]}/_sisu/skin/site",
- "#{processing_path.processing}/#{Gt[:sisupod]}/_sisu/image"
- ]
- paths.each {|x| FileUtils::mkdir_p(x) unless FileTest.directory?(x) }
- end
- def defaults #multiple default directories
- @default_dir ||=@sys.default_dir #DEFAULT_DIR
- end
- def html_seg_title_banner?
- ((defined? @rc['html']['seg_title_banner']) \
- && @rc['html']['seg_title_banner']==true) \
- ? @rc['html']['seg_title_banner']
- : false
- end
- def html_quick_ref?
- ((defined? @rc['html']['quick_ref']) \
- && @rc['html']['quick_ref']==true) \
- ? @rc['html']['quick_ref']
- : false
- end
- def html_minitoc?
- if defined? @rc['html']['minitoc'] \
- and @rc['html']['minitoc'].is_a?(String)
- @rc['html']['minitoc']
- else false
- end
- end
- def manifest_minitoc?
- if defined? @rc['manifest']['minitoc'] \
- and @rc['manifest']['minitoc'].is_a?(String)
- @rc['manifest']['minitoc']
- else false
- end
- end
- def build
- def omit_list
- @off_list ||=if defined? @rc['omit_list'] \
- and @rc['omit_list'].is_a?(String)
- @rc['omit_list']
- elsif defined? @rc['omit']['list'] \
- and @rc['omit']['list'].is_a?(String)
- @rc['omit']['list']
- else
- nil
- end
- end
- def listed?(test) #fix
- listed=if omit_list
- x=(omit_list.scan(/\b#{test}\b/)).join
- test==x \
- ? true
- : false
- else
- false
- end
- listed
- end
- def ocn?
- if (defined? @rc['omit']['ocn'] \
- and not @rc['omit']['ocn'].nil?) \
- or listed?('ocn')
- :off
- else
- :na
- end
- end
- def toc?
- if (defined? @rc['omit']['toc'] \
- and not @rc['omit']['toc'].nil?) \
- or listed?('toc')
- :off
- else
- :na
- end
- end
- def manifest?
- if (defined? @rc['omit']['manifest'] \
- and not @rc['omit']['manifest'].nil?) \
- or listed?('manifest')
- :off
- else
- :na
- end
- end
- def links_to_manifest?
- if (defined? @rc['omit']['links_to_manifest'] \
- and not @rc['omit']['links_to_manifest'].nil?) \
- or (listed?('links_to_manifest') \
- || listed?('manifest_links'))
- :off
- else
- :na
- end
- end
- def metadata?
- if (defined? @rc['omit']['metadata'] \
- and not @rc['omit']['metadata'].nil?) \
- or listed?('metadata')
- :off
- else
- :na
- end
- end
- def minitoc?
- if (defined? @rc['omit']['minitoc'] \
- and not @rc['omit']['minitoc'].nil?) \
- or (listed?('minitoc'))
- :off
- else
- :na
- end
- end
- def manifest_minitoc?
- if (defined? @rc['omit']['manifest_minitoc'] \
- and not @rc['omit']['manifest_minitoc'].nil?) \
- or listed?('manifest_minitoc')
- :off
- else
- :na
- end
- end
- def html_minitoc?
- if (defined? @rc['omit']['html_minitoc'] \
- and not @rc['omit']['html_minitoc'].nil?) \
- or (listed?('html_minitoc') \
- || listed?('minitoc'))
- :off
- else
- :na
- end
- end
- def html_navigation?
- if (defined? @rc['omit']['html_navigation'] \
- and not @rc['omit']['html_navigation'].nil?) \
- or listed?('html_navigation')
- :off
- else
- :na
- end
- end
- def html_navigation_bar?
- if (defined? @rc['omit']['html_navigation_bar'] \
- and not @rc['omit']['html_navigation_bar'].nil?) \
- or listed?('html_navigation_bar')
- :off
- else
- :na
- end
- end
- def segsubtoc?
- if (defined? @rc['omit']['segsubtoc'] \
- and not @rc['omit']['segsubtoc'].nil?) \
- or listed?('segsubtoc')
- :off
- else
- :na
- end
- end
- def html_right_pane?
- if (defined? @rc['omit']['html_right_pane'] \
- and not @rc['omit']['html_right_pane'].nil?) \
- or listed?('html_right_pane')
- :off
- else
- :na
- end
- end
- def html_top_band?
- if (defined? @rc['omit']['html_top_band'] \
- and not @rc['omit']['html_top_band'].nil?) \
- or listed?('html_top_band')
- :off
- else
- :na
- end
- end
- def search_form? #decide later, as is configured here (in sisurc) and can be turned off on command line
- if (defined? @rc['omit']['search_form'] \
- and not @rc['omit']['search_form'].nil?) \
- or listed?('search_form')
- :off
- else
- :na
- end
- end
- def html_search_form? #decide later, as is configured here (in sisurc) and can be turned off on command line
- if (defined? @rc['omit']['html_search_form'] \
- and not @rc['omit']['html_search_form'].nil?) \
- or listed?('html_search_form')
- :off
- else
- :na
- end
- end
- self
- end
- def odt_ocn?
- ((defined? @rc['odt']['ocn']) \
- && @rc['odt']['ocn']==false) \
- ? @rc['odt']['ocn']
- : true
- end
- def xml_docbook_ocn?
- ((defined? @rc['xml_docbook']['ocn']) \
- && @rc['xml_docbook']['ocn']==false) \
- ? @rc['xml_docbook']['ocn']
- : true
- end
- def xml_fictionbook_ocn?
- ((defined? @rc['xml_fictionbook']['ocn']) \
- && @rc['xml_fictionbook']['ocn']==false) \
- ? @rc['xml_fictionbook']['ocn']
- : true
- end
- def xml_scaffold_ocn?
- ((defined? @rc['xml_scaffold']['ocn']) \
- && @rc['xml_scaffold']['ocn']==false) \
- ? @rc['xml_scaffold']['ocn']
- : true
- end
- def plaintext_ocn?
- ((defined? @rc['plaintext']['ocn']) \
- && @rc['plaintext']['ocn']==false) \
- ? @rc['plaintext']['ocn']
- : true
- end
- def textile_ocn?
- ((defined? @rc['textile']['ocn']) \
- && @rc['textile']['ocn']==true) \
- ? @rc['textile']['ocn']
- : false
- end
- def asciidoc_ocn?
- ((defined? @rc['asciidoc']['ocn']) \
- && @rc['asciidoc']['ocn']==true) \
- ? @rc['asciidoc']['ocn']
- : false
- end
- def markdown_ocn?
- ((defined? @rc['markdown']['ocn']) \
- && @rc['markdown']['ocn']==true) \
- ? @rc['markdown']['ocn']
- : false
- end
- def rst_ocn?
- ((defined? @rc['rst']['ocn']) \
- && @rc['rst']['ocn']==true) \
- ? @rc['rst']['ocn']
- : false
- end
- def widget #needs (md) #move
- @rc=SiSU_Env::GetInit.new.sisu_yaml.rc
- @ad=SiSU_Env::GetInit.new.ads
- @vz=SiSU_Viz::Defaults.new
- @flag={
- ad: false,
- md: false,
- sk: false,
- rc: false
- }
- def promo?
- @flag[:ad]=if @md.flag_promo && @ad[:flag_promo]
- @flag[:md]=true
- true
- elsif defined? @vz.widget_promo \
- and not @vz.widget_promo.nil? \
- and @vz.widget_promo.is_a?(Array) \
- and @vz.widget_promo.length > 0
- @flag[:sk]=true
- true
- elsif defined? @rc['html']['promo'] \
- and not @rc['html']['promo'].nil? \
- and @rc['html']['promo'].length > 0
- @flag[:rc]=true
- true
- else false
- end
- @flag
- end
- def search?
- searches=['sisu']
- flag=false
- if defined? @rc['search']
- searches.each do |type|
- flag=if defined? @rc['search'][type] \
- and defined? @rc['search'][type]['action'] \
- and @rc['search'][type]['flag']==true \
- and @rc['search'][type]['action'] =~/https?:\/\//
- flag=if promo?[:ad]
- false
- elsif defined? @vz.widget_search \
- and @vz.widget_search==true
- true
- elsif defined? @rc['search'][type]['flag'] \
- and @rc['search'][type]['flag']==true
- true
- else false
- end
- else false
- end
- end
- else false
- end
- flag
- end
- def search_fixed?
- searches=['sisu','hyperestraier']
- flag=if defined? @rc['search']
- searches.each do |type|
- if defined? @rc['search'][type] \
- and defined? @rc['search'][type]['action'] \
- and @rc['search'][type]['action'] =~/https?:\/\// \
- and defined? @rc['search'][type]['db'] \
- and @rc['search'][type]['db'] =~/\S+/
- flag=if promo?[:ad]
- false
- elsif defined? @vz.widget_search \
- and @vz.widget_search==true
- true
- elsif defined? @rc['search'][type]['flag'] \
- and @rc['search'][type]['flag']==true
- true
- else false
- end
- else false
- end
- end
- else false
- end
- end
- def search_form(type='sisusearch',action=nil,db=nil,table=false)
- rc=SiSU_Env::GetInit.new.sisu_yaml.rc
- create_form_sisu=if action \
- and db \
- and action =~/https?:\/\// \
- and db =~/\S+/
- true
- elsif widget.search?
- db=if rc['search']['sisu']['flag']==true \
- and rc['search']['sisu']['db']=~/\S+/
- (rc['search']['sisu']['db']=~/^#{Db[:name_prefix]}\S+/) \
- ? rc['search']['sisu']['db']
- : "#{Db[:name_prefix]}#{rc['search']['sisu']['db']}"
- else nil
- end
- action=rc['search']['sisu']['action']
- true
- elsif defined? rc['search']['sisu']['flag'] \
- and defined? rc['search']['sisu']['action'] \
- and rc['search']['sisu']['flag']==true \
- and rc['search']['sisu']['action'] =~/https?:\/\//
- true
- else false
- end
- if table
- table_open='<td align="center" bgcolor="#ffffff">'
- table_close='</td>'
- else
- table_open=''
- table_close='<br />'
- end
- form=if create_form_sisu \
- and type=~/sisusearch/ \
- and defined? rc['search']['sisu'] \
- and defined? rc['search']['sisu']['action']
- <<WOK
-<!-- SiSU Search -->
-#{table_open}
-<a name="search"></a>
-<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
-<font size="2">
-<input type="text" name="s1" size="24" maxlength="255" />
-<input type="hidden" name="db" value="#{db}" />
-<input type="hidden" name="ltd" value="1000" />
-<input type="hidden" name="off" value="0" />
-<input type="hidden" name="doc" value="#{@md.fnb}" /><br />
-<input type="submit" name="search" value="search doc" />
-<input type="submit" name="search" value="search db" />
-</font></form>
-#{table_close}
-<!-- SiSU Search -->
-WOK
- else ''
- end
- form
- end
- def search_form_static(action=nil,db=nil)
- rc=SiSU_Env::GetInit.new.sisu_yaml.rc
- create_form=if rc['search']['sisu']['flag']==true \
- and action \
- and db \
- and action =~/https?:\/\// \
- and db =~/\S+/
- true
- elsif widget.search_fixed?
- db=if rc['search']['sisu']['flag']==true \
- and rc['search']['sisu']['db']=~/\S+/
- (rc['search']['sisu']['db']=~/^#{Db[:name_prefix]}\S+/) \
- ? rc['search']['sisu']['db']
- : "#{Db[:name_prefix]}#{rc['search']['sisu']['db']}"
- else nil
- end
- action=rc['search']['sisu']['action']
- true
- else false
- end
- if create_form
- %{<td align="center" bgcolor="#ffffff">
-<!-- SiSU Search -->
-<a name="search"></a>
-<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
-<font size="2">
-<input type="text" name="s1" size="24" maxlength="255" />
-<br />
-<input type="hidden" name="db" value="#{db}" />
-<input type="hidden" name="ltd" value="1000" />
-<input type="hidden" name="off" value="0" />
-<input type="hidden" name="doc" value="#{@md.fnb}" />
-<input type="submit" name="search" value="search doc" />
-<input type="submit" name="search" value="search db" />
-</font>
-</form>
-<!-- SiSU Search -->
-</td> }
- else ''
- end
- end
- def search_action #check
- if search?
- else ''
- end
- end
- self
- end
- def widget_static
- @rc=SiSU_Env::GetInit.new.sisu_yaml.rc
- @vz=SiSU_Viz::Defaults.new
- @flag={ ad: false, md: false, sk: false, rc: false }
- def search?
- flag=if defined? @rc['search'] \
- and defined? @rc['search']['sisu'] \
- and defined? @rc['search']['sisu']['action'] \
- and @rc['search']['sisu']['action'] =~/https?:\/\// \
- and defined? @rc['search']['sisu']['db'] \
- and @rc['search']['sisu']['db'] =~/\S+/
- flag=if defined? @vz.widget_search \
- and @vz.widget_search==true
- true
- elsif defined? @rc['search']['sisu']['flag'] \
- and @rc['search']['sisu']['flag']==true
- true
- else
- false
- end
- else
- false
- end
- end
- def search_fixed?
- flag=if defined? @rc['search'] \
- and defined? @rc['search']['sisu'] \
- and defined? @rc['search']['sisu']['action'] \
- and @rc['search']['sisu']['action'] =~/https?:\/\// \
- and defined? @rc['search']['sisu']['db'] \
- and @rc['search']['sisu']['db'] =~/\S+/ \
- and defined? @rc['search']['sisu']['db'] \
- and @rc['search']['sisu']['db'] =~/\S+/
- flag=if defined? @vz.widget_search \
- and @vz.widget_search==true
- true
- elsif defined? @rc['search']['sisu']['flag'] \
- and @rc['search']['sisu']['flag']==true
- true
- else
- false
- end
- else
- false
- end
- end
- def search_form(action=nil,db=nil)
- rc=SiSU_Env::GetInit.new.sisu_yaml.rc
- create_form=if defined? rc['search']['sisu']['flag'] \
- and rc['search']['sisu']['flag']==true \
- and action \
- and db \
- and action =~/https?:\/\// \
- and db =~/\S+/
- true
- elsif widget_static.search? \
- and rc['search']['sisu']['flag']==true
- db=if rc['search']['sisu']['db']=~/\S+/
- (rc['search']['sisu']['db']=~/^#{Db[:name_prefix]}\S+/) \
- ? rc['search']['sisu']['db']
- : "#{Db[:name_prefix]}#{rc['search']['sisu']['db']}"
- else nil
- end
- action=rc['search']['sisu']['action']
- true
- else false
- end
- if create_form \
- and @fnb \
- and @fnb=~/\S+/
- %{<!-- SiSU Search -->
-<a name="search"></a>
-<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
-<font size="2">
-<input type="text" name="s1" size="24" maxlength="255" />
-<br />
-<input type="hidden" name="db" value="#{db}" />
-<input type="hidden" name="doc" value="#{@fnb}" />
-<input type="submit" name="search" value="search doc" />
-<input type="submit" name="search" value="search db" />
-</font>
-</form>
-<!-- SiSU Search --> }
- elsif create_form
- %{<!-- SiSU Search -->
-<a name="search"></a>
-<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
-<font size="2">
-<input type="text" name="s1" size="24" maxlength="255" />
-<br />
-<input type="hidden" name="db" value="#{db}" />
-<input type="submit" name="search" value="search db" />
-</font>
-</form>
-<!-- SiSU Search --> }
- else ''
- end
- end
- def search_action #check
- if search?
- else ''
- end
- end
- self
- end
- def source_file_path
- file=@fns.gsub(/\.ssm(?:\.sst)?/,'.ssm.sst')
- unless file =~/\.ssm\.sst$/; "#{Dir.pwd}"
- else "#{processing_path.composite_file}"
- end
- end
- def source_file_with_path
- file=@fns.gsub(/\.ssm(?:\.sst)?/,'.ssm.sst')
- "#{source_file_path}/#{file}"
- end
- def texpdf_hyperlinks(cli)
- @cli=cli
- @hyplnks=if cli != :na
- cli
- elsif (defined? @rc['default']['pdf_hyperlinks']) \
- && (@rc['default']['pdf_hyperlinks']=~/color/)
- :color
- elsif (defined? @rc['default']['pdf_hyperlinks']) \
- && (@rc['default']['pdf_hyperlinks'] \
- =~/(?:no-color|color-off|mono(?:chrome)?)/)
- :mono
- else :na
- end
- def landscape
- if @cli != :na
- @cli
- elsif (defined? @rc['default']['pdf_hyperlinks_landscape']) \
- && (@rc['default']['pdf_hyperlinks_landscape']=~/color/)
- :color
- elsif (defined? @rc['default']['pdf_hyperlinks_landscape']) \
- && (@rc['default']['pdf_hyperlinks_landscape'] \
- =~/(?:no-color|color-off|mono(?:chrome)?)/)
- :mono
- elsif @hyplnks != :na
- @hyplnks
- else :na
- end
- end
- def portrait
- if @cli != :na
- @cli
- elsif (defined? @rc['default']['pdf_hyperlinks_portrait']) \
- && (@rc['default']['pdf_hyperlinks_portrait']=~/color/)
- :color
- elsif (defined? @rc['default']['pdf_hyperlinks_portrait']) \
- && (@rc['default']['pdf_hyperlinks_portrait'] \
- =~/(?:no-color|color-off|mono(?:chrome)?)/)
- :mono
- elsif @hyplnks != :na
- @hyprlnks
- else :na
- end
- end
- self
- end
- def font
- def size(pt=nil)
- if pt && pt != :na
- pt
- elsif defined? @rc['default']['fontsize'] \
- && @rc['default']['fontsize']=~/\d{1,2}/
- @rc['default']['fontsize']
- else :na
- end
- end
- def texpdf
- # you may wish to check selected font against available fonts:
- # fc-list :outline -f "%{family}\n"
- # fc-list :lang=ja
- def main
- (defined? @rc['default']['texpdf_fontface']) \
- && (@rc['default']['texpdf_fontface']=~/\S{3,}/) \
- ? @rc['default']['texpdf_fontface']
- : 'Liberation Sans'
- end
- def sans # not used
- (defined? @rc['default']['texpdf_fontface_sans']) \
- && (@rc['default']['texpdf_fontface_sans']=~/\S{3,}/) \
- ? @rc['default']['texpdf_fontface_sans']
- : 'Liberation Sans'
- end
- def serif # not used
- (defined? @rc['default']['texpdf_fontface_serif']) \
- && (@rc['default']['texpdf_font_serif']=~/\S{3,}/) \
- ? @rc['default']['texpdf_fontface_serif']
- : 'Liberation Serif'
- end
- def mono
- (defined? @rc['default']['texpdf_fontface_mono']) \
- && (@rc['default']['texpdf_fontface_mono']=~/\S{3,}/) \
- ? @rc['default']['texpdf_fontface_mono']
- : 'Liberation Mono'
- end
- def cjk
- (defined? @rc['default']['texpdf_fontface_cjk']) \
- && (@rc['default']['texpdf_fontface_cjk']=~/\S{3,}/) \
- ? @rc['default']['texpdf_fontface_cjk']
- : 'IPAGothic' # 'IPAGothic' # 'IPAMincho' # 'TakaoMincho' # 'VL Gothic'
- end
- def cjk_zh
- (defined? @rc['default']['texpdf_fontface_cjk_zh']) \
- && (@rc['default']['texpdf_fontface_cjk_zh']=~/\S{3,}/) \
- ? @rc['default']['texpdf_fontface_cjk_zh']
- : 'IPAGothic'
- end
- def cjk_ja
- (defined? @rc['default']['texpdf_fontface_cjk_ja']) \
- && (@rc['default']['texpdf_fontface_cjk_ja']=~/\S{3,}/) \
- ? @rc['default']['texpdf_fontface_cjk_ja']
- : 'IPAGothic'
- end
- def cjk_ko
- (defined? @rc['default']['texpdf_fontface_cjk_ko']) \
- && (@rc['default']['texpdf_fontface_cjk_ko']=~/\S{3,}/) \
- ? @rc['default']['texpdf_fontface_cjk_ko']
- : 'IPAGothic'
- end
- def size(pt=nil)
- if pt && pt != :na
- pt
- elsif (defined? @rc['default']['texpdf_fontsize']) \
- && (@rc['default']['texpdf_fontsize']=~/\d{1,2}/)
- @rc['default']['texpdf_fontsize']
- elsif (defined? @rc['default']['fontsize']) \
- && (@rc['default']['fontsize']=~/\d{1,2}/)
- @rc['default']['fontsize']
- else
- :na
- end
- end
- self
- end
- self
- end
- def path_rel_links
- def html_scroll_2
- if @env.output_dir_structure.by_language_code?
- '../../'
- elsif @env.output_dir_structure.by_filetype?
- '../'
- else
- '../'
- end
- end
- def html_seg_2
- if @env.output_dir_structure.by_language_code?
- '../../../'
- elsif @env.output_dir_structure.by_filetype?
- '../../'
- else
- '../'
- end
- end
- def html_scroll_1
- if @env.output_dir_structure.by_language_code?
- '../'
- elsif @env.output_dir_structure.by_filetype?
- '../'
- else
- './'
- end
- end
- def html_seg_1
- if @env.output_dir_structure.by_language_code?
- '../../'
- elsif @env.output_dir_structure.by_filetype?
- '../../'
- else
- './'
- end
- end
- self
- end
- def read_source_file_array(fns)
- (fns !~/\.ssm.sst$/) \
- ? (IO.readlines(fns, mode: 'r:utf-8', cr_newline: true))
- : (IO.readlines(
- "#{processing_path.composite_file}/#{fns}",
- mode: 'r:utf-8',
- cr_newline: true
- ))
- end
- def read_source_file(fns)
- read_source_file_array(fns)
- end
- def read_source_file_string(fns)
- (fns !~/\.ssm.sst$/) \
- ? (IO.read(fns, mode: 'r:utf-8', cr_newline: true))
- : (IO.read(
- "#{processing_path.composite_file}/#{fns}",
- mode: 'r:utf-8',
- cr_newline: true
- ))
- end
- def source_file_processing_array(fns)
- read_source_file_string(fns).split(/\s*\n\s*\n/m)
- end
- def path #dir
- def home
- @sys.home
- end
- def sisurc_path
- GetInit.new.sisu_yaml.rc_path
- end
- def pwd
- @sys.pwd
- end
- def base_markup_dir_stub
- @base_markup_dir_stub
- end
- def stub_epub
- @stub_epub
- end
- def stub_src
- @stub_src
- end
- def stub_pod
- @stub_pod
- end
- def etc
- defaults[:sisu_etc] #live/dynamic
- end
- def arch
- @sys.dir_arch
- end
- def sitearch
- @sys.dir_sitearch
- end
- def bin
- @sys.dir_bin
- end
- def share #shared data repository source directory
- #SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).
- # mark(defaults[:sisu_share])
- defaults[:sisu_share]
- end
- def style
- if @md \
- && ((@md.opt.opt_act[:dump][:bool] \
- && @md.opt.opt_act[:dump][:inst]) \
- || (@md.opt.opt_act[:redirect][:bool] \
- && @md.opt.opt_act[:redirect][:inst]))
- 'css'
- else
- defaults[:stylesheet_stub]
- end
- end
- def sample_data #sample data repository source directory
- defaults[:sample_data_path]
- end
- def rc
- @init.rc_path
- end
- def yamlrc
- GetInit.new.sisu_yaml.rc_path
- end
- def man #check use
- (defined? @rc['webserv']['man']) \
- ? "#{webserv}/#{@rc['webserv']['man']}"
- : defaults[:webserv_man]
- end
- def webserv_path #testing, check need, remove
- webserv
- end
- def webserv #separation required for webrick which cannot use path.output (different requirements as no file is passed)
- man_path=if @@man_path.nil?
- man_path=if defined? @rc['webserv']['path'] \
- and @rc['webserv']['path'] =~/\S\S+/
- pwd=Dir.pwd
- Dir.chdir(SiSU_Utils::Path.new.base_markup)
- man_path=@@man_path=File.expand_path(@rc['webserv']['path'])
- Dir.chdir(pwd)
- man_path
- else defaults[:webserv_path]
- end
- else @@man_path
- end
- man_path_head=man_path.gsub(/(\S+)\/[^\/\s]+$/,'\1')
- unless FileTest.directory?(man_path)
- FileUtils::mkdir_p(man_path) if File.writable?("#{man_path_head}/.")
- end
- @webserv_path=if defined? man_path \
- and File.writable?("#{man_path}/.")
- man_path #web server path as configured in rc file
- elsif FileTest.directory?(defaults[:webserv_path]) \
- and File.writable?("#{defaults[:webserv_path]}/.") #web server path default
- defaults[:webserv_path]
- else #create default directory under home and place output there
- unless FileTest.directory?(defaults[:output_local])
- FileUtils::mkdir_p(defaults[:output_local])
- end
- defaults[:output_local]
- end
- end
- def webserv_stub_ensure
- FileUtils::mkdir_p(path.webserv) unless FileTest.directory?(path.webserv)
- FileUtils::mkdir_p("#{path.webserv}/#{@base_markup_dir_stub}") \
- unless FileTest.directory?("#{path.webserv}/#{@base_markup_dir_stub}")
- end
- def webserv_map_pwd #dir
- "#{path.webserv}/#{base_markup_dir_stub}"
- end
- def webserv_dir #fixed/hard path to /www web/presentation directory, on Debian /var/www subdirectories are created within it, depending on markup directory stub-name (last segment of markup directory name)
- defaults[:webserv_dir]
- end
- def webserv_image #web/presentation directory, subdirectories are created within it, depending on markup directory stub-name (last segment of markup directory name)
- images=if defined? @rc['webserv']['images']
- @rc['webserv']['images']
- else defaults[:images]
- end
- "#{path.webserv}/#{images}"
- end
- def output #web/webserv output directory... subdirectory into which further subdirectories are made based on file names
- r=Px[:lng_lst_rgx]
- u=/.+?\/([^\/]+)(?:\/(?:#{r})$|$)/
- base_stub=@sys.pwd.gsub(u,'\1')
- if Dir.pwd =~/\/#{Gt[:sisupod]}\/[^\/]+\/#{Gt[:pod]}\/#{Gt[:doc]}/
- "#{path.webserv}/#{Gt[:doc]}"
- else
- "#{path.webserv}/#{base_stub}"
- end
- end
- def feed
- (defined? @rc['webserv']['feed']) \
- ? ("#{public_output}/#{@rc['webserv']['feed']}")
- : (defaults[:webserv_feed])
- end
- def feed_home
- "#{public_output}/#{@rc['webserv']['feed_home']}"
- end
- def scripts #used previously only to include tla version info
- if defined? @rc['project']['path']
- "#{home}/#{@rc['project']['path']}"
- end
- end
- def cgi
- (defined? @rc['webserv']['cgi']) \
- ? "#{@rc['webserv']['cgi']}"
- : (defaults[:webserv_cgi])
- end
- def php
- (defined? @rc['webserv']['php']) \
- ? "#{public_output}/#{@rc['webserv']['php']}"
- : (defaults[:webserv_php])
- end
- #% programs
- def output_tell
- url.webserv_map_pwd
- end
- def image_source #image repository source directory
- if defined? @rc['image']['path'] \
- and defined? @rc['image']['public']
- pth="#{@rc['image']['path']}"
- "#{pth}/#{@rc['image']['public']}"
- else
- "#{share}/image"
- end
- end
- def image_source_sisu_includes
- "#{share}/image"
- end
- def image_source_include #image repository source directory
- if defined? @rc['image']['path'] \
- and defined? @rc['image']['public'] \
- and FileTest.directory?(
- "#{@rc['image']['path']}/#{@rc['image']['public']}"
- )==true
- "#{@rc['image']['path']}/#{@rc['image']['public']}"
- elsif FileTest.directory?("#{@@pwd}/#{defaults[:image_stub]}")==true
- "#{@@pwd}/#{defaults[:image_stub]}"
- elsif FileTest.directory?(
- "#{SiSU_Utils::Path.new.base_markup}/#{defaults[:image_stub]}"
- )==true
- "#{SiSU_Utils::Path.new.base_markup}/#{defaults[:image_stub]}"
- else
- "#{share}/image"
- end
- end
- def image_external
- "#{processing}/external_document/image"
- end
- def image_source_include_local
- if FileTest.directory?(defaults[:image_local])
- defaults[:image_local]
- end
- end
- def image_source_include_remote
- if FileTest.directory?(image_external); image_external
- end
- end
- self
- end
- def processing_path
- def encoding
- pth="#{processing}/#{defaults[:processing_encoding]}"
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def processing_base_tmp
- defaults[:processing_path_tmp_base]
- end
- def tmp_root_dir
- defaults[:processing_dir_tmp_root]
- end
- def root_dir
- proposed_path_base=if defined? @rc['processing']['path'] \
- and not @rc['processing']['path'].nil? \
- and not @rc['processing']['path'].empty?
- x=if @rc['processing']['path'] =~/^(?:~|home)$/
- home #fix
- else @rc['processing']['path']
- end
- else nil
- end
- proposed_dir=if defined? @rc['processing']['dir'] \
- and not @rc['processing']['dir'].nil? \
- and not @rc['processing']['dir'].empty?
- @rc['processing']['dir']
- else defaults[:processing_dir]
- end
- v=SiSU_Env::InfoVersion.instance.get_version
- v_dev=(DEVELOPER[:maintenance]==:true) \
- ? "_#{v[:version]}"
- : ''
- path=if proposed_path_base \
- and FileTest.directory?(proposed_path_base) \
- and File.writable?("#{proposed_path_base}/.")
- x=proposed_dir \
- ? "#{proposed_path_base}/#{proposed_dir}"
- : "#{proposed_path_base}/#{defaults[:processing_dir]}"
- else defaults[:processing_dir_tmp_root]
- end
- path = path + v_dev
- end
- def usr_dir?
- case root_dir
- when /^\/home/ then false
- else true
- end
- end
- def stub_dir
- (usr_dir?) \
- ? ("#{root_dir}/#{user}/#{base_markup_dir_stub}")
- : ("#{root_dir}/#{base_markup_dir_stub}") # see defaults[:processing_path]
- end
- def stub_dir_orig # ends up with lang, if lang dir
- (usr_dir?) \
- ? ("#{root_dir}/#{user}/#{base_markup_dir_stub}")
- : ("#{root_dir}/#{base_markup_dir_stub}") # see defaults[:processing_path]
- end
- def processing_sisupod(opt=nil) #processing directory, used/needed for sisu work files, has sub-directories (ao,tex etc)
- @opt=opt
- def paths
- processing_path_usr="#{root_dir}/#{user}"
- processing_path_fnb=processing_path_usr \
- + '/' + Gt[:pods] \
- + '/' + @opt.fng
- processing_path_sisupod=processing_path_fnb \
- + '/' + Gt[:sisupod]
- {
- fnb: processing_path_fnb,
- sisupod: processing_path_sisupod,
- }
- end
- def make
- unless FileTest.directory?(root_dir)
- FileUtils::mkdir_p(root_dir)
- File.chmod(0777,root_dir)
- end
- if usr_dir?
- processing_path_usr="#{root_dir}/#{user}"
- FileUtils::mkdir_p(processing_path_usr) \
- unless FileTest.directory?(processing_path_usr)
- File.chmod(0700,processing_path_usr)
- end
- sisupod_processing_path=paths[:sisupod]
- FileUtils::mkdir_p(sisupod_processing_path) \
- unless FileTest.directory?(sisupod_processing_path)
- sisupod_processing_path_lng=if defined? @opt.lng
- sisupod_processing_path \
- + '/' + Gt[:doc] \
- + '/' + @opt.lng
- else
- sisupod_processing_path \
- + '/' + Gt[:doc]
- end
- unless FileTest.directory?(sisupod_processing_path_lng)
- #puts "a processing directory (#{sisupod_processing_path_lng}) is being created for use by sisu"
- FileUtils::mkdir_p(sisupod_processing_path_lng)
- File.chmod(0700,sisupod_processing_path_lng)
- end
- sisupod_processing_path
- end
- self
- end
- def processing #processing directory, used/needed for sisu work files, has sub-directories (ao,tex etc)
- unless FileTest.directory?(root_dir)
- FileUtils::mkdir_p(root_dir)
- File.chmod(0777,root_dir)
- end
- if usr_dir?
- processing_path_usr="#{root_dir}/#{user}"
- FileUtils::mkdir_p(processing_path_usr) \
- unless FileTest.directory?(processing_path_usr)
- File.chmod(0700,processing_path_usr)
- end
- FileUtils::mkdir_p(stub_dir) \
- unless FileTest.directory?(stub_dir)
- File.chmod(0700,stub_dir)
- path_processing=[
- stub_dir,
- defaults[:processing_path],
- defaults[:processing_path_home]
- ]
- processing=nil
- path_processing.each do |v| #
- processing=v
- unless FileTest.directory?(processing)
- FileUtils::mkdir_p(processing)
- File.chmod(0700,processing)
- end
- break
- end
- processing
- end
- def ao
- pth=if defined? @rc['processing']['dal'] \
- and @rc['processing']['dal'].is_a?(String)
- "#{processing}/#{@rc['processing']['dal']}"
- else "#{processing}/#{defaults[:processing_ao]}"
- end
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def tune
- pth=if defined? @rc['processing']['tune'] \
- and @rc['processing']['tune'].is_a?(String)
- "#{processing}/#{@rc['processing']['tune']}"
- else "#{processing}/#{defaults[:processing_tune]}"
- end
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def composite_file
- pth=processing_path.ao #"#{processing}/composite"
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def git
- pth=if defined? @rc['git']['dir'] \
- and @rc['git']['dir'].is_a?(String)
- (@rc['git']['dir'] =~/^(?:~|home)$/) \
- ? home + '/' + Gt[:git]
- : @rc['git']['dir'] + '/' + Gt[:git]
- else defaults[:processing_git]
- end
- unless FileTest.directory?(pth)
- FileUtils::mkdir_p(pth)
- File.chmod(0700,pth)
- end
- pth
- end
- def odf_pth
- pth="#{processing}/odf/#{@fns}"
- pth
- end
- def odf
- odt
- end
- def odt
- pth=odf_pth + '/odt'
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def odf
- pth="#{processing}/odf"
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def odt_bld
- FileUtils::rm_rf(processing_path.odt)
- FileUtils::mkdir_p(processing_path.odt) \
- unless FileTest.directory?(processing_path.odt)
- FileUtils::mkdir_p("#{processing_path.odt}/Configurations2") \
- unless FileTest.directory?("#{processing_path.odt}/Configurations2")
- FileUtils::mkdir_p("#{processing_path.odt}/META-INF") \
- unless FileTest.directory?("#{processing_path.odt}/META-INF")
- FileUtils::mkdir_p("#{processing_path.odt}/Pictures") \
- unless FileTest.directory?("#{processing_path.odt}/Pictures")
- FileUtils::mkdir_p("#{processing_path.odt}/Thumbnails") \
- unless FileTest.directory?("#{processing_path.odt}/Thumbnails")
- processing_path.odt
- end
- def epub
- "#{processing}/epub/#{@fnb}"
- end
- def epub_bld #(md)
- FileUtils::rm_rf(processing_path.epub) \
- if FileTest.directory?(processing_path.epub)
- FileUtils::mkdir_p(processing_path.epub) \
- unless FileTest.directory?(processing_path.epub)
- FileUtils::mkdir_p("#{processing_path.epub}/META-INF") \
- unless FileTest.directory?("#{processing_path.epub}/META-INF")
- FileUtils::mkdir_p("#{processing_path.epub}/#{Ep[:d_oebps]}/image") \
- unless FileTest.directory?("#{processing_path.epub}/#{Ep[:d_oebps]}/image")
- FileUtils::mkdir_p("#{processing_path.epub}/#{Ep[:d_oebps]}/css") \
- unless FileTest.directory?("#{processing_path.epub}/#{Ep[:d_oebps]}/css")
- processing_path.epub
- end
- def epub_cp_images(md)
- pth="#{processing_path.epub}/#{Ep[:d_oebps]}/image"
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- src="#{path.share}/image"
- images=%W[bullet_09.png arrow_next_red.png arrow_prev_red.png arrow_up_red.png]
- images.each do |i| #move to avoid repeated tests
- if FileTest.file?("#{src}/#{i}")
- FileUtils::cp("#{src}/#{i}","#{pth}/#{i}") \
- unless FileTest.file?("#{pth}/#{i}")
- else STDERR.puts %{\t*WARN* did not find image - "#{i}" [#{__FILE__}:#{__LINE__}]}
- end
- end
- pth
- end
- def tex
- pth=if defined? @rc['processing']['latex'] \
- and @rc['processing']['latex'].is_a?(String)
- "#{processing}/#{@rc['processing']['latex']}"
- else "#{processing}/#{defaults[:processing_latex]}"
- end
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def texi
- pth=if defined? @rc['processing']['texinfo'] \
- and @rc['processing']['texinfo'].is_a?(String)
- "#{processing}/#{@rc['processing']['texinfo']}"
- else "#{processing}/#{defaults[:processing_texinfo]}"
- end
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def texinfo #texinfo webserv, check
- "#{processing}/#{defaults[:processing_texinfo]}"
- end
- def manpage
- "#{path.output}/man"
- end
- def lout
- pth=if defined? @rc['processing']['lout'] \
- and @rc['processing']['lout'].is_a?(String)
- "#{processing}/#{@rc['processing']['lout']}"
- else "#{processing}/#{defaults[:processing_lout]}"
- end
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def sql
- pth="#{processing}/sql"
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def sqlite
- pth=if defined? @rc['processing']['sqlite'] \
- and @rc['processing']['sqlite'].is_a?(String)
- "#{processing}/#{@rc['processing']['sqlite']}"
- else "#{processing}/#{defaults[:processing_sqlite]}"
- end
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- def postgresql
- pth=if defined? @rc['processing']['postgresql'] \
- and @rc['processing']['postgresql'].is_a?(String)
- "#{processing}/#{@rc['processing']['postgresql']}"
- else "#{processing}/#{defaults[:processing_postgresql]}"
- end
- FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
- pth
- end
- self
- end
- def url
- def hostname
- "http://#{@sys.hostname}"
- end
- def dir_url
- "file://#{path.webserv}/#{base_markup_dir_stub}"
- end
- def localhost
- "http://localhost/#{base_markup_dir_stub}"
- end
- def local
- "http://#{hostname}/#{@base_markup_dir_stub}"
- end
- def root
- if defined? @rc['webserv']['url_root'] \
- and @rc['webserv']['url_root'] =~/https?:\/\//
- "#{@rc['webserv']['url_root']}/#{@base_markup_dir_stub}"
- elsif defined? @rc['webserv']['url_root'] \
- and @rc['webserv']['url_root'] =~/localhost/
- "http://localhost/#{@base_markup_dir_stub}"
- else "file://#{path.output}"
- end
- end
- def remote
- root
- end
- def txt
- "#{root}/txt"
- end
- def html
- "#{root}/html"
- end
- def epub
- "#{root}/epub"
- end
- def odt
- "#{root}/odt"
- end
- def pdf
- "#{root}/pdf"
- end
- def src_txt
- "#{root}/src"
- end
- def src_pod
- "#{root}/pod"
- end
- def pot
- "#{root}/po4a/pot"
- end
- def po
- "#{root}/po4a/po"
- end
- def webserv_host_base(opt=nil)
- if defined? @rc['webserv']['host']
- case @rc['webserv']['host']
- when /https?:\/\// then @rc['webserv']['host']
- when /\S+/ then "http://#{@rc['webserv']['host']}"
- else defaults[:webserv_host_cgi]
- end
- else defaults[:webserv_host_cgi]
- end
- end
- def webserv_cgi(opt=nil) #web url for local webserv (localhost, or hostname)
- http=if defined? @rc['webserv_cgi']['host'] \
- and @rc['webserv_cgi']['host'].is_a?(String)
- http=((@rc['webserv_cgi']['host'] =~ /https?:\/\//) ? '' : 'http://') #check https? missing
- if port.webserv_port_cgi
- http + @rc['webserv_cgi']['host'] + ':' \
- + port.webserv_port_cgi + '/' \
- + @base_markup_dir_stub
- else
- http + @rc['webserv_cgi']['host'] + '/' \
- + @base_markup_dir_stub
- end
- else
- http=((webserv_host_base=~/https?:\/\//) ? '' : 'http://')
- if port.webserv_port_cgi(opt)
- http + webserv_host_base + ':' \
- + port.webserv_port_cgi(opt) + '/'\
- + @base_markup_dir_stub
- else
- http + webserv_host_base + '/' \
- + @base_markup_dir_stub
- end
- end
- http=http.strip
- end
- def webserv_base_cgi(opt=nil) #web url for local webserv (localhost, or hostname)
- http=if opt.mod.inspect =~/--webserv-(?:cgi|db|search)[=-]["']?(\S+)["']+/
- m=$1
- (m=~/http\/\/:/) ? m : %{http://#{m}}
- elsif defined? @rc['webserv_cgi']['host'] \
- and @rc['webserv_cgi']['host'].is_a?(String)
- http=((@rc['webserv_cgi']['host'] =~ /https?:\/\//) ? '' : 'http://')
- if port.webserv_port_cgi(opt)
- http + @rc['webserv_cgi']['host'] + ':' \
- + port.webserv_port_cgi(opt)
- else
- http + @rc['webserv_cgi']['host']
- end
- else
- http=((webserv_host_base=~/https?:\/\//) ? '' : 'http://')
- if port.webserv_port_cgi(opt)
- http + webserv_host_base + ':' \
- + port.webserv_port_cgi(opt)
- else "#{http}#{webserv_host_base}"
- end
- end
- http=http.strip
- #%q{http://#{ENV['HTTP_HOST']}}
- end
- def webrick #must have a port #REMOVE
- if defined? @rc['webserv_cgi']['host'] \
- and @rc['webserv_cgi']['host'].is_a?(String)
- http=if @rc['webserv_cgi']['host'] =~/http:\/\//
- 'http://'
- elsif @rc['webserv_cgi']['host'] =~/https:\/\//
- 'https://'
- else defaults
- end
- "#{http}#{@rc['webserv_cgi']['host']}"
- elsif webserv_host_base \
- and webserv_host_base.is_a?(String)
- http + webserv_host_base
- else
- http + 'localhost'
- end
- end
- def webserv #web url for local webserv (localhost, or hostname)
- if defined? @rc['webserv']['url_root'] \
- and @rc['webserv']['url_root'] =~/http/
- # needed for alternative output dir structures, fixes manifest url links, check may cause problems elsewhere
- @rc['webserv']['url_root']
- elsif path.webserv_dir \
- and path.webserv =~ /#{path.webserv_dir}/ #revisit
- path.webserv + '/' \
- + @base_markup_dir_stub.
- gsub(/#{path.webserv_dir}/,
- "#{url.hostname}/#{@base_markup_dir_stub}")
- elsif defined? @rc['webserv']['webrick_url'] \
- and @rc['webserv']['webrick_url']==false
- 'file://' + path.webserv
- elsif port.webserv_port_cgi =~/\S+/
- url.hostname + ':' + port.webserv_port_cgi
- else
- url.hostname
- end
- end
- def webserv_base #web url for local webserv (localhost, or hostname)
- if path.webserv_dir \
- and path.webserv =~ /#{path.webserv_dir}/ #revisit
- path.webserv + '/' \
- + @base_markup_dir_stub.
- gsub(/#{path.webserv_dir}/,
- "#{url.hostname}")
- elsif defined? @rc['webserv']['webrick_url'] \
- and @rc['webserv']['webrick_url']==false
- "file://#{path.webserv}"
- else "#{url.webrick_base}"
- end
- end
- def webserv_files_from_db(opt=nil) #sort this out, messy
- if opt.mod.inspect =~/--webserv-output[=-]["']?(\S+)["']+/
- m=$1
- (m=~/(?:http|file\/)\/\/:/) ? m : %{http://#{m}}
- else
- show_output_on=if defined? @rc['webserv_cgi']['show_output_on']
- @rc['webserv_cgi']['show_output_on']
- elsif defined? @rc['webserv_cgi']['file_links']
- @rc['webserv_cgi']['file_links']
- else ''
- end
- m=case show_output_on
- when /webserv_cgi/ then url.webserv_base_cgi(opt)
- when /webserv/ then @rc['webserv']['url_root']
- when /https?:\/\// then @rc['webserv_cgi']['file_links']
- when /\S+/ then 'http://' + @rc['webserv_cgi']['file_links']
- else webserv_base_cgi(opt)
- end
- end
- #%q{http://#{ENV['HTTP_HOST']}/cgi-bin}
- end
- def cgi_sample_search_form_name(opt=nil)
- if opt.mod.inspect \
- =~/--(?:cgi-)?search-form-name[=-]["']?(\S+?\.cgi)/
- $1
- elsif not opt.mod.inspect =~/--db[=-]["']?sqlite/ \
- and defined? @rc['search'] \
- and defined? @rc['search']['sisu'] \
- and defined? @rc['search']['sisu']['action'] \
- and @rc['search']['sisu']['action'] =~/https?:\/\/\S+?\.cgi/
- /(?:https?:\/\/\S+?)\/([^\/]+?\.cgi)$/.
- match(@rc['search']['sisu']['action'])[1]
- else
- (opt.mod.inspect =~/--db[=-]["']?sqlite/) \
- ? "#{Db[:name_prefix_db]}sqlite.cgi" \
- : "#{Db[:name_prefix_db]}pg.cgi"
- end
- end
- def sample_search_form_title(organised_by=:language)
- title=if defined? @rc['search']['sisu']['title'] \
- and @rc['search']['sisu']['title'] =~/\S+/
- @rc['search']['sisu']['title']
- else %{SiSU (generated sample) search form}
- end
- title=title + " (content organised by #{organised_by})"
- end
- def output_tell #BROKEN Revisit 2011-02
- output_type=if defined? @rc['show_output_on'] \
- and @rc['show_output_on'] \
- =~/^(?:filesystem|webserv|(?:local|remote)(?:_webserv)?|webrick)/
- @rc['show_output_on']
- else 'filesystem'
- end
- case output_type
- when /^filesystem(?:_url)?/ then url.dir_url
- when /^remote(?:_webserv)?/ then url.remote
- when /^(?:webserv|local_webserv)/ then url.local
- when /^local(:\d+)/ then url.hostname + $1 + '/' + base_markup_dir_stub
- when /^localhost(:\d+)/ then url.localhost + $1 + '/' + base_markup_dir_stub
- when /^localhost/ then url.localhost
- when /^webrick/ then url.webrick
- when /^path/ then url.webserv_map_pwd
- else url.webserv_map_pwd
- end
- end
- def images
- "#{Xx[:html_relative2]}/_sisu/image"
- end
- #def images
- # '../_sisu/image'
- #end
- def images_local
- if FileTest.directory?(path.image_source_include)
- path.image_source_include
- else
- if @@local_image==true
- cmd=@cmd ? @cmd : ''
- SiSU_Screen::Ansi.new(
- cmd,
- "WARNING - no local image directory or images:",
- defaults[:image_local]
- ).warn unless cmd =~/q/
- @@local_image=false
- end
- url.images
- end
- end
- def images_external
- if FileTest.directory?(image_external)
- if @@image_flag
- images=Dir.glob("#{image_external}/*.{png,jpg,gif}")
- pth="#{path.webserv}/#{@base_markup_dir_stub}"
- FileUtils::mkdir_p("#{pth}/_sisu/image_external") \
- unless FileTest.directory?("#{pth}/_sisu/image_external")
- images.each { |i| File.install(i,"#{pth}/#{i}") } \
- unless images.length > 0
- @@image_flag=false
- end
- "#{Xx[:html_relative2]}/_sisu/image_external"
- else
- if @@local_image==true
- SiSU_Screen::Ansi.new(
- @cmd,
- 'WARNING - image directory for external images or no such images:',
- :image_external
- ).warn unless @cmd =~/q/
- @@local_image=false
- end
- url.images_external
- end
- end
- def images_epub
- './image'
- end
- self
- end
- def port
- def webrick_port
- if @md \
- and @md.opt.cmd.inspect=~/-F/ \
- and @md.opt.mod.inspect=~/port=(\d+)/
- $1
- else
- if defined? @rc['webserv_cgi']['port']
- if @rc['webserv_cgi']['port'].nil? \
- and (defined? @md.opt.mod \
- and not @md.opt.mod.nil? \
- and @md.opt.mod.inspect=~/webrick/)
- defaults[:webserv_port_cgi]
- elsif not @rc['webserv_cgi']['port'].nil?
- @rc['webserv_cgi']['port']
- else defaults[:webserv_port_cgi]
- end
- else defaults[:webserv_port_cgi]
- end
- end
- end
- def webserv_port_cgi(opt=nil)
- port=if opt \
- and opt.cmd.inspect=~/-F/ \
- and opt.mod.inspect=~/port=(\d+)/
- $1
- else
- port=if defined? @rc['webserv_cgi']['port']
- if @rc['webserv_cgi']['port'].nil? \
- and (defined? opt.mod \
- and not opt.mod.nil? \
- and opt.mod.inspect=~/webrick/)
- defaults[:webserv_port_cgi]
- elsif not @rc['webserv_cgi']['port'].nil?
- @rc['webserv_cgi']['port']
- else nil
- end
- else
- if (defined? opt.mod \
- and not opt.mod.nil? \
- and opt.mod.inspect=~/webrick/)
- defaults[:webserv_port_cgi]
- else nil
- end
- end
- end
- end
- self
- end
- def digest_conf?
- if defined? @rc['default']['digest'] \
- and @rc['default']['digest'] != nil
- case @rc['default']['digest']
- when /^sha(?:5|512)?$/ then :sha512
- when /^sha(?:2|256)?$/ then :sha256
- when /^md5$/ then :md5
- else :sha256
- end
- else :sha256
- end
- end
- def digest(opt=nil)
- @opt=opt
- def type
- if @opt
- case @opt.act[:hash_digest_algo]
- when :sha512 then :sha512
- when :sha256 then :sha256
- when :md5 then :md5
- else digest_conf?
- end
- else digest_conf?
- end
- end
- def length
- case digest(@opt).type
- when :sha512 then 128
- when :sha256 then 64
- when :md5 then 32
- else 64
- end
- end
- def pattern
- "[0-9a-f]{#{digest(@opt).length}}" #/[0-9a-f]{#{digest.length}}/
- end
- self
- end
- def program
- def text_editor
- if defined? @rc['program_select']['editor'] \
- and @rc['program_select']['editor'] =~/\S\S+/
- @rc['program_select']['editor']
- elsif defined? @rc['program_select']['text_editor'] \
- and @rc['program_select']['text_editor'] =~/\S\S+/
- @rc['program_select']['text_editor']
- else 'editor' #'gvim -c :R -c :S'
- end
- end
- def pdf_viewer
- ((defined? @rc['program_select']['pdf_viewer']) \
- && @rc['program_select']['pdf_viewer'] =~/\S\S+/) \
- ? @rc['program_select']['pdf_viewer']
- : 'pdf-viewer' #'evince'
- end
- def web_browser
- if defined? @rc['program_select']['www_browser'] \
- and @rc['program_select']['www_browser'] =~/\S\S+/
- @rc['program_select']['www_browser']
- elsif defined? @rc['program_select']['web_browser'] \
- and @rc['program_select']['web_browser'] =~/\S\S+/
- @rc['program_select']['web_browser']
- else 'x-www-browser' #'firefox' 'iceweasel' 'kazehakase' 'galeon'
- end
- end
- def www_browser
- web_browser
- end
- def console_web_browser
- if defined? @rc['program_select']['console_www_browser'] \
- and @rc['program_select']['console_www_browser'] =~/\S\S+/
- @rc['program_select']['console_www_browser']
- elsif defined? @rc['program_select']['console_web_browser'] \
- and @rc['program_select']['console_web_browser'] =~/\S\S+/
- @rc['program_select']['console_web_browser']
- else 'console-www-browser' #'lynx' 'links' 'links2' 'elinks' 'w3m'
- end
- end
- def console_www_browser
- web_browser
- end
- def epub_viewer
- ((defined? @rc['program_select']['epub_viewer']) \
- && @rc['program_select']['epub_viewer'] =~/\S\S+/) \
- ? @rc['program_select']['epub_viewer']
- : 'ebook-viewer' #'calibre' 'fbreader'
- end
- def xml_viewer
- ((defined? @rc['program_select']['xml_viewer']) \
- && @rc['program_select']['xml_viewer'] =~/\S\S+/) \
- ? @rc['program_select']['xml_viewer']
- : text_editor
- end
- def docbook_viewer
- ((defined? @rc['program_select']['xml_viewer']) \
- && @rc['program_select']['xml_viewer'] =~/\S\S+/) \
- ? @rc['program_select']['xml_viewer']
- : text_editor
- end
- def fictionbook_viewer
- ((defined? @rc['program_select']['xml_viewer']) \
- && @rc['program_select']['xml_viewer'] =~/\S\S+/) \
- ? @rc['program_select']['xml_viewer']
- : text_editor
- end
- def xml_editor
- xml_viewer
- end
- def odf_viewer
- ((defined? @rc['program_select']['odf_viewer']) \
- && @rc['program_select']['odf_viewer'] =~/\S\S+/) \
- ? @rc['program_select']['odf_viewer']
- : 'lowriter' #'odf-viewer','oowriter'
- end
- def manpage_viewer
- 'man'
- end
- def manpage_generator
- ((defined? @rc['program_select']['man']) \
- && @rc['program_select']['man'] =~/\S\S+/) \
- ? @rc['program_select']['man']
- : 'nroff -man' #'nroff -man' #'groff -man -Tascii'
- end
- def texinfo
- ((defined? @rc['program_select']['info_viewer']) \
- && @rc['program_select']['info_viewer'] =~/\S\S+/) \
- ? @rc['program_select']['info_viewer']
- : 'pinfo -f' #'pinfo -f' 'info' 'tkinfo'
- end
- def file_encoding
- is=(defined? @rc['program_set']['file_encoding']) \
- ? @rc['program_set']['encoding'] : ''
- (is.nil? || is==true) ? 'encoding' : is
- end
- def wc #wordcount
- is=(defined? @rc['program_set']['wc']) \
- ? @rc['program_set']['wc'] : ''
- (is.nil? || is==true) ? 'wc' : is
- end
- def tidy
- is=(defined? @rc['program_set']['tidy']) \
- ? @rc['program_set']['tidy'] : nil
- (is.nil? || is==true) ? 'tidy' : is
- end
- def rmagick
- is=(defined? @rc['program_set']['rmagick']) \
- ? @rc['program_set']['rmagick'] : nil
- (is.nil? || is==true) ? 'rmagick' : is
- end
- def rexml #should be part of ruby 1.8 but apparently not always
- is=(defined? @rc['program_set']['rexml']) ? \
- @rc['program_set']['rexml'] : ''
- (is.nil? || is==true) ? 'rexml' : is
- end
- def pdflatex
- is=(defined? @rc['program_set']['pdflatex']) ? \
- @rc['program_set']['pdflatex'] : ''
- (is.nil? || is==true) ? 'pdflatex' : is
- end
- def postgresql
- is=(defined? @rc['program_set']['postgresql']) ? \
- @rc['program_set']['postgresql'] : ''
- (is.nil? || is==true) ? 'postgresql' : is
- end
- def sqlite
- is=(defined? @rc['program_set']['sqlite']) ? \
- @rc['program_set']['sqlite'] : ''
- (is.nil? || is==true) ? 'sqlite' : is
- end
- self
- end
- def i18n
- def language # language settings
- m=/.+\/\S+?\~(\S+)/
- pwd=Dir.pwd
- conf=(defined? @rc['default']['language']) \
- ? @rc['default']['language'] : nil
- l=if pwd=~ m then pwd[m,1] #2 directory: by visible directory name
- elsif conf then @rc['default']['language'] #3 config: from sisurc.yaml
- else defaults[:language] #4 sisu: program default
- end #1 document: param gets
- SiSU_Env::StandardiseLanguage.new(l)
- end
- #def multilingual
- # x=(defined? @rc['output_structure']['multilingual'] \
- # && @rc['output_structure']['multilingual'] ==true) \
- # ? true : false
- #end
- #def bundle
- # x=(defined? @rc['output_structure']['bundle'] \
- # && @rc['output_structure']['bundle'] ==true) \
- # ? true : false
- #end
- def lang_filename(l)
- @lang={}
- x=if output_dir_structure.by_language_code?
- (( defined? @rc['default']['language_file']) \
- && @rc['default']['language_file'] != nil) \
- ? @rc['default']['language_file']
- : 1
- else 0
- end
- if (l != defaults[:language_code]) \
- or (language.code != defaults[:language_code]) #watch
- if x==1 then @lang[:pre],@lang[:mid],@lang[:post]="#{l}.",'',''
- elsif x==2 then @lang[:pre],@lang[:mid],@lang[:post]='',".#{l}",''
- elsif x==3 then @lang[:pre],@lang[:mid],@lang[:post]='','',".#{l}"
- else @lang[:pre],@lang[:mid],@lang[:post]='','',''
- end
- else @lang[:pre],@lang[:mid],@lang[:post]='','',''
- end
- @lang
- end
- self
- end
- def file_encoding
- is=''
- if defined? @rc['program_set']['file_encoding']
- is=@rc['program_set']['encoding']
- end
- if is.nil? \
- or is==true
- is='encoding'
- end
- is
- end
- def papersize # paper settings, default overidden in param if set within document
- (defined? @rc['default']['papersize']) \
- ? @rc['default']['papersize'].downcase
- : (defaults[:papersize].downcase)
- end
- def odf_structure
- FileUtils::rm_rf(processing_path.processing_path.odf_pth)
- FileUtils::mkdir_p(processing_path.processing_path.odf_pth)
- system(
- "unzip -q #{path.share}/#{SiSU_is[:version_dir]}/odf/odt.zip -d #{processing_path.odf_pth}"
- )
- end
- def sisupod_gen(fns_pod)
- sisupod_gen_v3(fns_pod)
- end
- def sisupod_gen_v3(fns_pod)
- pwd=Dir.pwd
- sisupod_processing_path=
- processing_path.processing + '/' + Gt[:sisupod]
- if FileTest.directory?(sisupod_processing_path) \
- or FileTest.file?(sisupod_processing_path)
- FileUtils::rm_rf(sisupod_processing_path)
- end
- unless FileTest.directory?(sisupod_processing_path)
- FileUtils::mkdir_p(sisupod_processing_path)
- end
- f_pod=if FileTest.file?("#{Dir.pwd}/#{fns_pod}")
- "#{Dir.pwd}/#{fns_pod}"
- elsif FileTest.file?(fns_pod)
- fns_pod
- end
- if f_pod \
- && FileTest.file?(f_pod)
- (SiSU_Env::SystemCall.new.program_found?('tree')) \
- ? 'tree ' + processing_path.processing + '/' + Gt[:sisupod]
- : ''
- if FileTest.directory?(processing_path.processing)
- Dir.chdir(processing_path.processing)
- system(%{tar xJf #{f_pod}})
- Dir.chdir(pwd)
- end
- #system(tree) #enable if (/[vVM]/)
- else
- SiSU_Screen::Ansi.new(
- '',
- '*WARN* file not found: ' + fns_pod
- ).warn unless @cmd=~/q/
- end
- sisupod_processing_path
- end
- def sisupod_gen_v2(fns_pod)
- sisupod_processing_path=
- processing_path.processing + '/' + Gt[:sisupod]
- if FileTest.directory?(sisupod_processing_path) \
- or FileTest.file?(sisupod_processing_path)
- FileUtils::rm_rf(sisupod_processing_path)
- end
- unless FileTest.directory?(sisupod_processing_path)
- FileUtils::mkdir_p(sisupod_processing_path)
- end
- (FileTest.file?(fns_pod)) \
- ? system("unzip -q #{fns_pod} -d #{processing_path.processing}")
- : (SiSU_Screen::Ansi.new(
- '',
- "*WARN* file not found: #{fns_pod}"
- ).warn unless @cmd=~/q/)
- sisupod_processing_path
- end
+ class InfoEnv < SiSU_Info_Env::InfoEnv # se_info_env.rb
end
- class InfoProcessingFlag
- attr_accessor :color,:cf_0,:cf_1,:cf_2,:cf_3,:cf_4,:cf_5
- def initialize
- @rc=GetInit.new.sisu_yaml.rc
- end
- def color #processing flag shortcuts
- (defined? @rc['flag']['color']) \
- ? @rc['flag']['color']
- : false
- end
- def cf_0 #processing flag shortcuts
- if defined? @rc['flag']['default'] \
- and @rc['flag']['default'].is_a?(String)
- @rc['flag']['default']
- else '-NQhewpotbxXdyYv'
- end
- end
- def cf_1 #processing flag shortcuts
- if defined? @rc['flag']['i'] \
- and @rc['flag']['i'].is_a?(String)
- @rc['flag']['i']
- else '-Qhewpoty'
- end
- end
- def cf_2 #processing flag shortcuts
- if defined? @rc['flag']['ii'] \
- and @rc['flag']['ii'].is_a?(String)
- @rc['flag']['ii']
- else '-NQhewpotbxXdy'
- end
- end
- def cf_3 #processing flag shortcuts
- if defined? @rc['flag']['iii'] \
- and @rc['flag']['iii'].is_a?(String)
- @rc['flag']['iii']
- else '-NQhewpotbxXdyY'
- end
- end
- def cf_4 #processing flag shortcuts
- if defined? @rc['flag']['iv'] \
- and @rc['flag']['iv'].is_a?(String)
- @rc['flag']['iv']
- else '-NQhewpotbxXdDyY --update'
- end
- end
- def cf_5 #processing flag shortcuts
- if defined? @rc['flag']['v'] \
- and @rc['flag']['v'].is_a?(String)
- @rc['flag']['v']
- else '-NQhewpotbxXdDyYv --update'
- end
- end
+ class InfoProcessingFlag < SiSU_Info_Processing_Flag::InfoProcessingFlag # se_processing.rb
end
- class InfoSettings < InfoEnv
- def permission?(prog) #program defaults
- (defined? @rc['permission_set'][prog]) \
- ? @rc['permission_set'][prog]
- : false
- end
- def program?(prog) #program defaults
- (defined? @rc['program_set'][prog]) \
- ? @rc['program_set'][prog]
- : false
- end
+ class InfoSettings < SiSU_Info_Set::InfoSettings # se_programs.rb
end
- class FileMap < InfoEnv
- attr_accessor :local_sisu_source
- def initialize(opt='') #watch / REVIEW
- super()
- @opt=opt #,opt.fns,opt.cmd
- @env=(@opt.fns && !(@opt.fns.empty?) \
- ? (SiSU_Env::InfoEnv.new(@opt.fns))
- : (SiSU_Env::InfoEnv.new('dummy.sst')))
- ft=[]
- if @opt.act[:ao][:set]==:on
- @md=SiSU_Param::Parameters.new(@opt).get
- if @md \
- and defined? @md.fn \
- and @md.fn # used for by_language_code?
- if @md.opt.act[:html][:set]==:on #% --html, -h -H
- ft << @md.fn[:html]
- end
- if @md.opt.act[:concordance][:set]==:on #% --concordance, -w
- ft << @md.fn[:concordance]
- end
- if @md.opt.act[:manifest][:set]==:on #% --manifest, -y
- ft << @md.fn[:manifest]
- end
- if @md.opt.act[:txt][:set]==:on #% --txt, -t -a
- ft << @md.fn[:plain]
- end
- if @md.opt.act[:txt_textile][:set]==:on #% --textile
- ft << @md.fn[:txt_textile]
- end
- if @md.opt.act[:txt_asciidoc][:set]==:on #% --asciidoc
- ft << @md.fn[:txt_asciidoc]
- end
- if @md.opt.act[:txt_markdown][:set]==:on #% --markdown
- ft << @md.fn[:txt_markdown]
- end
- if @md.opt.act[:txt_rst][:set]==:on #% --rst, --rest
- ft << @md.fn[:txt_rst]
- end
- if @md.opt.act[:xhtml][:set]==:on #% --xhtml, -b xhtml
- ft << @md.fn[:xhtml]
- end
- if @md.opt.act[:epub][:set]==:on #% --epub, -e
- ft << @md.fn[:epub]
- end
- if @md.opt.act[:manpage][:set]==:on #% --manpage, -i
- ft << @md.fn[:manpage]
- end
- if @md.opt.act[:hash_digests][:set]==:on #% --hash-digests, -N digest tree
- ft << @md.fn[:digest]
- end
- if @md.opt.act[:odt][:set]==:on #% --odt, -o opendocument
- ft << @md.fn[:odf]
- end
- if @md.opt.act[:pdf][:set]==:on #% --pdf-l --pdf, -p latex/ texpdf
- ft << @md.fn[:pdf_l] << @md.fn[:pdf_p]
- end
- if @md.opt.act[:share_source][:set]==:on
- ft << @md.fns
- end
- if @md.opt.act[:sisupod][:set]==:on #% --sisupod, -S make sisupod
- ft << @md.fn[:sisupod]
- end
- if @md.opt.act[:xml_sax][:set]==:on #% --xml-sax, -x xml sax type
- ft << @md.fn[:sax]
- end
- if @md.opt.act[:xml_dom][:set]==:on #% --xml-dom, -X xml dom type
- ft << @md.fn[:dom]
- end
- if @md.opt.act[:xml_docbook_book][:set]==:on #% --xml-docbook-book
- ft << @md.fn[:xml_docbook_book]
- end
- if @md.opt.act[:xml_fictionbook][:set]==:on #% --xml-fictionbook
- ft << @md.fn[:xml_fictionbook]
- end
- if @md.opt.act[:xml_scaffold_structure_sisu][:set]==:on #% --xml-scaffold --xml-scaffold-sisu
- ft << @md.fn[:xml_scaffold_structure_sisu]
- end
- if @md.opt.act[:xml_scaffold_structure_collapse][:set]==:on #% --xml-scaffold-collapse
- ft << @md.fn[:xml_scaffold_structure_collapse]
- end
- @fnb=@md.fnb
- else # still needed where/when param is not parsed
- if @opt.act[:html][:set]==:on #% --html, -h -H
- ft << '.html' << '.html.??'
- end
- if @opt.act[:concordance][:set]==:on #% --concordance, -w
- ft << 'concordance.html' << '??.concordance.html' << 'concordance.??.html'
- end
- if @opt.act[:manifest][:set]==:on #% --manifest, -y
- ft << 'sisu_manifest.html' << '??.sisu_manifest.html' << 'sisu_manifest.??.html'
- end
- if @opt.act[:txt][:set]==:on #% --txt, -t -a
- ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt'
- end
- if @opt.act[:txt_textile][:set]==:on #% --textile
- ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt'
- end
- if @opt.act[:txt_asciidoc][:set]==:on #% --asciidoc
- ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt'
- end
- if @opt.act[:txt_markdown][:set]==:on #% --markdown
- ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt'
- end
- if @opt.act[:txt_rst][:set]==:on #% --rst, --rest
- ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt'
- end
- if @opt.act[:xhtml][:set]==:on #% --xhtml, -b xhtml
- ft << 'scroll.xhtml' << '??.scroll.xhtml' << 'scroll.??.xhtml'
- end
- if @opt.act[:epub][:set]==:on #% --epub, -e
- ft << @fnb << '.epub'
- end
- if @opt.act[:manpage][:set]==:on #% --manpage, -i
- ft << '.1' << '??.man.1' << 'man.??.1'
- end
- if @opt.act[:hash_digests][:set]==:on #% --hash-digests, -N digest tree
- ft << 'digest.txt' << '??.digest.txt' << 'digest.??.txt'
- end
- if @opt.act[:odt][:set]==:on #% --odt, -o opendocument
- ft << 'opendocument.odt' << '??.opendocument.odt' << 'opendocument.??.odt'
- end
- if @opt.act[:pdf][:set]==:on #% --pdf-l --pdf, -p latex/ texpdf
- ft << 'landscape.pdf' << 'portrait.pdf' << '.pdf'
- end
- if @opt.act[:share_source][:set]==:on
- ft << '.sst' << '.ssi' << '.ssm'
- end
- if @opt.act[:sisupod][:set]==:on #% --sisupod, -S make sisupod
- ft << '.zip'
- end
- if @opt.act[:xml_sax][:set]==:on #% --xml-sax, -x xml sax type
- ft << 'sax.xml' << '??.sax.xml' << 'sax.??.xml'
- end
- if @opt.act[:xml_dom][:set]==:on #% --xml-dom, -X xml dom type
- ft << 'dom.xml' << '??.dom.xml' << 'dom.??.xml'
- end
- if @opt.act[:xml_docbook_book][:set]==:on #% --xml-docbook-book
- ft << 'docbook.xml' << '??.docbook.xml' << 'docbook.??.xml'
- end
- if @opt.act[:xml_fictionbook][:set]==:on #% --xml-fictionbook
- ft << 'fictionbook.xml' << '??.fictionbook.xml' << 'fictionbook.??.xml'
- end
- if @opt.act[:xml_scaffold_structure_sisu][:set]==:on #% --xml-scaffold --xml-scaffold-sisu
- ft << 'scaffold.xml' << '??.scaffold.xml' << 'scaffold.??.xml'
- end
- if @opt.act[:xml_scaffold_structure_collapse][:set]==:on #% --xml-scaffold-collapse
- ft << 'scaffold.xml' << '??.scaffold.xml' << 'scaffold.??.xml'
- end
- end
- ft=ft.uniq
- filetypes=ft.join(',')
- @filetypes=if filetypes !~/..+/ then '' # -r called alone, copy all
- elsif @opt.cmd =~/u/ then '' # -u added, copy all, (used to create remote directory tree see output path), not the usual function of -u
- elsif filetypes =~/\S+?,\S+/ then '*{' + filetypes + '}' # more than one relevant file type
- else '*' + filetypes # one relevant file type
- end
- @source_path=(@fnb && !(@fnb.empty?) \
- ? "#{@env.path.output}/#{@fnb}"
- : @env.path.output)
- @source_path_epub=(@fnb && !(@fnb.empty?) \
- ? "#{@env.path.output}/epub"
- : @env.path.output_epub)
- @source_path_src=(@fnb && !(@fnb.empty?) \
- ? "#{@env.path.output}/src"
- : @env.path.output_src)
- @source_path_pod=(@fnb && !(@fnb.empty?) \
- ? "#{@env.path.output}/pod"
- : @env.path.output_pod)
- @source_path_harvest=(@fnb && !(@fnb.empty?) \
- ? "#{@env.path.output}/manifest"
- : @env.path.output_harvest)
- @local_sisu_source=(@filetypes =~/\S/) \
- ? "#{@source_path}/#{@filetypes}"
- : @source_path
- end
- if @opt.act[:rsync][:set]==:on
- end
- end
+ class FileMap < SiSU_File_Map::FileMap # se_filemap.rb
end
- class CleanOutput
- begin
- require 'fileutils'
- include FileUtils::Verbose
- rescue LoadError
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- error('fileutils NOT FOUND (LoadError)')
- end
- def initialize(opt)
- @opt=opt
- z=SiSU_Env::FileMap.new(opt)
- zap=z.local_sisu_source
- if opt.cmd =~ /h/i
- zap=Dir.glob(zap).join(' ')
- @zap=if opt.cmd !~ /w/
- zap.gsub(/#{@source_path}\/concordance.html/,'')
- else zap
- end
- end
- @env=SiSU_Env::InfoEnv.new
- end
- def zap
- def deletion(fn)
- if FileTest.file?(fn)==true
- File.delete(fn)
- tell=SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns, 'remove: ' + fn)
- tell.warn unless @opt.cmd =~/q/
- end
- end
- def remove_output
- if @opt.act[:maintenance][:set] == :on
- m=InfoFile.new(@opt.fnc)
- tell=SiSU_Screen::Ansi.new(
- @opt.cmd,@opt.fns,
- 'remove maintenance files from: ' + @env.processing_path.ao
- )
- tell.warn unless @opt.cmd =~/q/
- deletion(m.marshal.ao_content)
- deletion(m.marshal.ao_idx_sst_rel_html_seg)
- deletion(m.ao_idx_sst_rel)
- deletion(m.ao_idx_html)
- deletion(m.ao_idx_xhtml)
- deletion(m.ao_metadata)
- deletion(m.ao_map_nametags)
- deletion(m.ao_map_ocn_htmlseg)
- deletion(m.html_tune)
- end
- md=SiSU_Param::Parameters.new(@opt).get
- f=SiSU_Env::FileOp.new(md)
- deletion(f.place_file.html_segtoc.dir)
- deletion(f.place_file.html_scroll.dir)
- deletion(f.place_file.html_book_index.dir)
- deletion(f.place_file.html_concordance.dir)
- deletion(f.place_file.epub.dir)
- deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_letter}")
- deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_l_letter}")
- deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_a4}")
- deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_l_a4}")
- deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_a5}")
- deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_l_a5}")
- deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_b5}")
- deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_l_b5}")
- deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_legal}")
- deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_legal}")
- deletion(f.place_file.odt.dir)
- deletion(f.place_file.xhtml.dir)
- deletion(f.place_file.xml_sax.dir)
- deletion(f.place_file.xml_dom.dir)
- deletion(f.place_file.xml_scaffold_structure_sisu.dir)
- deletion(f.place_file.xml_scaffold_structure_collapse.dir)
- deletion(f.place_file.info.dir)
- deletion(f.place_file.manpage.dir)
- deletion(f.place_file.sqlite_discrete.dir)
- deletion(f.place_file.txt.dir)
- deletion(f.place_file.hash_digest.dir)
- deletion(f.place_file.manifest.dir)
- deletion(f.place_file.qrcode_md.dir)
- deletion(f.place_file.qrcode_title.dir)
- deletion(f.place_file.src.dir)
- deletion(f.place_file.sisupod.dir)
- end
- self
- end
+ class CleanOutput < SiSU_Clean_Output::CleanOutput # se_cleanoutput.rb
end
- class InfoRemoteHost
- def initialize
- @rc=GetInit.new.sisu_yaml.rc
- end
- def remote_host #see InfoRemote remote_host_base_general
- r=[]
- r=if (defined? @rc['remote'] \
- and @rc['remote'].is_a?(Array))
- r_array=@rc['remote']
- r_array.each_with_index do |renv,i|
- r[i]={}
- if defined? renv['user'] \
- and defined? renv['host']
- end
- r[i][:user]=renv['user']
- r[i][:host]=renv['host']
- r[i][:path]=if defined? renv['path']
- renv['path']
- else ''
- end
- r[i][:name]="#{r[i][:user]}@#{r[i][:host]}:#{r[i][:path]}"
- end
- r
- elsif (defined? @rc['remote'] \
- and @rc['remote'].is_a?(Hash) \
- and defined? @rc['remote']['user'] \
- and defined? @rc['remote']['host'])
- r[0]={}
- r[0][:user]=@rc['remote']['user']
- r[0][:host]=@rc['remote']['host']
- r[0][:path]=if defined? @rc['remote']['path']
- @rc['remote']['path']
- else ''
- end
- r[0][:name]="#{r[0][:user]}@#{r[0][:host]}:#{r[0][:path]}"
- r
- else
- r[0]={}
- r[0][:name]='.'
- r[0][:user]=''
- r[0][:host]=''
- r[0][:path]=''
- #puts "no remote host or user"
- r
- end
- end
- def rhost
- def r1
- (defined? SiSU_Env::InfoRemoteHost.new.remote_host[0][:name]) \
- ? (SiSU_Env::InfoRemoteHost.new.remote_host[0][:name])
- : nil
- end
- def r2
- (defined? SiSU_Env::InfoRemoteHost.new.remote_host[1][:name]) \
- ? (SiSU_Env::InfoRemoteHost.new.remote_host[1][:name])
- : nil
- end
- def r3
- (defined? SiSU_Env::InfoRemoteHost.new.remote_host[2][:name]) \
- ? (SiSU_Env::InfoRemoteHost.new.remote_host[2][:name])
- : nil
- end
- def r4
- (defined? SiSU_Env::InfoRemoteHost.new.remote_host[3][:name]) \
- ? (SiSU_Env::InfoRemoteHost.new.remote_host[3][:name])
- : nil
- end
- def r5
- (defined? SiSU_Env::InfoRemoteHost.new.remote_host[4][:name]) \
- ? (SiSU_Env::InfoRemoteHost.new.remote_host[4][:name])
- : nil
- end
- def r6
- (defined? SiSU_Env::InfoRemoteHost.new.remote_host[5][:name]) \
- ? (@ls + SiSU_Env::InfoRemoteHost.new.remote_host[5][:name])
- : nil
- end
- self
- end
+ class InfoRemoteHost < SiSU_Info_Remote_Host::InfoRemoteHost # se_remotes.rb
end
- class InfoRemote < FileMap
- @@flag_remote=false
- begin
- require 'socket'
- rescue LoadError
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- error('socket NOT FOUND (LoadError)')
- end
- def initialize(opt)
- super(opt) #
- @opt=opt
- @rc=GetInit.new.sisu_yaml.rc
- end
- def remote_host_base_general
- SiSU_Env::InfoRemoteHost.new.remote_host
- end
- def remote_host_base
- remote_host_base_general.each do |remote_conn|
- @@flag_remote=true if remote_conn[:name] =~/\S+?@\S+/
- end
- remote_host_base_general
- end
- def scp #sort out later using ruby libraries #not ideal, first time each file is sent, -r must be called separately for subdir to be built
- def document
- self.remote_host_base.each do |remote_conn|
- local_gen=@source_path
- remote_gen=case @opt.cmd
- when /u/
- remote_conn[:name] + '/' \
- + @env.path.base_markup_dir_stub + '/.' #creates remote directory tree, this is not the usual function of u
- when /[abhHNopwxXy]/
- remote_conn[:name] + '/' \
- + @env.path.base_markup_dir_stub + '/' \
- + @fnb + '/.'
- else
- remote_conn[:name] + '/' \
- + @env.path.base_markup_dir_stub \
- + '/.'
- end
- local_epub=@source_path_epub
- local_src=@source_path_src
- local_pod=@source_path_pod
- remote_epub=
- remote_conn[:name] + '/' + @env.path.stub_epub + '/.'
- remote_src=
- remote_conn[:name] + '/' + @env.path.stub_src + '/.'
- remote_pod=
- remote_conn[:name] + '/' + @env.path.stub_pod + '/.'
- src_txt=@opt.fnc
- src_pod=@opt.fncb.gsub(/(\.ss[mt])(?:\.sst)?$/,'\1.txz')
- if (local_gen =~/\S/ \
- and local_gen !~/\/\//) \
- and (remote_gen =~/\S/ \
- and remote_gen !~/\/\//) \
- and @@flag_remote==true \
- and @opt.cmd !~/U/
- SiSU_Env::SystemCall.new(local_gen,remote_gen).scp
- if FileTest.file?("#{local_src}/#{src_txt}")
- SiSU_Env::SystemCall.new("#{local_src}/#{src_txt}",remote_src).scp
- end
- if FileTest.file?("#{local_pod}/#{src_pod}")
- SiSU_Env::SystemCall.new("#{local_src}/#{src_pod}",remote_pod).scp
- end
- if FileTest.file?("#{local_epub}/#{@opt.fnb}.epub")
- SiSU_Env::SystemCall.new(
- "#{local_epub}/#{@opt.fnb}.epub",
- remote_epub,@opt.cmd
- ).scp
- end
- elsif @opt.cmd =~/U/
- puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- puts "#{local_gen} -> #{remote_gen}"
- if FileTest.file?("#{local_src}/#{src_doc}")
- puts "#{local_src}/#{src_doc}* -> #{remote_src}"
- end
- if FileTest.file?("#{local_pod}/#{src_doc}.txz")
- puts "#{local_pod}/#{src_doc}* -> #{remote_pod}"
- end
- else
- puts 'suspect scp request, ignored'
- puts "#{local_gen} -> #{remote_gen} remote flag: #{@@flag_remote}"
- puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- end
- end
- end
- def site_base #base site
- self.remote_host_base.each do |remote_conn|
- local=@source_path
- remote="#{remote_conn[:name]}/#{@env.path.base_markup_dir_stub}/."
- if defined? @rc['permission_set']['remote_base_site'] \
- and @rc['permission_set']['remote_base_site'] \
- and @@flag_remote==true \
- and @opt.cmd !~/U/
- puts "begin scp_base: #{local} -> #{remote}"
- SiSU_Env::SystemCall.new("#{local}/#{@env.path.style}/",remote).scp
- elsif @opt.cmd =~/U/
- puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- puts "begin scp_base: #{local} -> #{remote}"
- puts "#{local}/#{@env.path.style}/ -> #{remote}"
- else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- end
- end
- end
- def site_base_all #base site
- self.remote_host_base.each do |remote_conn|
- local=@source_path
- remote=
- remote_conn[:name] + '/' \
- + @env.path.base_markup_dir_stub + '/.'
- if defined? @rc['permission_set']['remote_base_site'] \
- and @rc['permission_set']['remote_base_site'] \
- and @@flag_remote==true \
- and @opt.cmd !~/U/
- puts "begin scp_base_all: #{local} -> #{remote}"
- SiSU_Env::SystemCall.new("#{local}/_sisu/image_sys/",remote).scp
- SiSU_Env::SystemCall.new("#{local}/_sisu/image/",remote).scp
- SiSU_Env::SystemCall.new("#{local}/#{@env.path.style}/",remote).scp
- elsif @opt.cmd =~/U/
- puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- puts "scp_base_all: #{local} -> #{remote}"
- puts "#{local}/_sisu/image_sys/ -> #{remote}"
- puts "#{local}/_sisu/image/ -> #{remote}"
- puts "#{local}/#{@env.path.style}/ -> #{remote}"
- else
- puts "permission not granted #{__FILE__} #{__LINE__}" \
- if @opt.cmd =~/M/
- end
- end
- end
- self
- end
- def rsync
- def document
- f=(@opt.act[:ao][:set]==:on) \
- ? SiSU_Env::FileOp.new(@md)
- : nil
- if f
- self.remote_host_base.each do |remote_conn|
- local_gen=@source_path
- #local_gen_image="#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}/_sisu/image"
- #local_gen_image_external="#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}/_sisu/image_external"
- remote_gen=
- remote_conn[:name] + '/' \
- + @env.path.base_markup_dir_stub + '/.'
- remote_rel=
- remote_conn[:name] + '/' \
- + f.output_path.stub.rcp
- @opt.fnc
- if (local_gen =~/\S/ \
- and local_gen !~/\/\//) \
- and (remote_gen =~/\S/ \
- and remote_gen !~/\/\//) \
- and @@flag_remote==true \
- and @opt.cmd !~/U/
-# SiSU_Env::SystemCall.new("#{local_src}/#{src_txt}",remote_src,@opt.cmd).rsync
- #delete_extra_files='--delete' # '--delete-after'
- inp=[]
- if (@opt.act[:html][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(f.place_file.html_scroll.dir)
- inp \
- << f.output_path.html_seg.rel \
- << f.place_file.html_scroll.rel
- end
- if (@opt.act[:concordance][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(f.place_file.html_concordance.dir)
- inp << f.place_file.html_concordance.rel
- end
- if (@opt.act[:epub][:set]==:on \
- || @opt.cmd =~/^-R[mqvVM]*$/) \
- && FileTest.file?(f.place_file.epub.dir)
- inp << f.place_file.epub.rel
- end
- if (@opt.act[:odt][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(f.place_file.odt.dir)
- inp << f.place_file.odt.rel
- end
- if (@opt.act[:xhtml][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(f.place_file.xhtml.dir)
- inp << f.place_file.xhtml.rel
- end
- if (@opt.act[:xml_sax][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(f.place_file.xml_sax.dir)
- inp << f.place_file.xml_sax.rel
- end
- if (@opt.act[:xml_dom][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(f.place_file.xml_dom.dir)
- inp << f.place_file.xml_dom.rel
- end
- if (@opt.act[:xml_scaffold_structure_sisu][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(f.place_file.xml_scaffold_structure_sisu.dir)
- inp << f.place_file.xml_scaffold_structure_sisu.rel
- end
- if (@opt.act[:xml_scaffold_structure_collapse][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(f.place_file.xml_scaffold_structure_collapse.dir)
- inp << f.place_file.xml_scaffold_structure_collapse.rel
- end
- if (@opt.act[:txt][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(f.place_file.txt.dir)
- inp << f.place_file.txt.rel
- end
- if (@opt.act[:manpage][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*i[mqvVM]*$/) \
- && FileTest.file?(f.place_file.manpage.dir)
- inp << f.place_file.manpage.rel
- end
- if (@opt.act[:texinfo][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*I[mqvVM]*$/) \
- && FileTest.file?(f.place_file.info.dir)
- inp << f.place_file.info.rel
- end
- if (@opt.act[:hash_digests][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(f.place_file.hash_digest.dir)
- inp << f.place_file.hash_digest.rel
- end
- if (@opt.act[:share_source][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(f.place_file.src.dir)
- inp << f.place_file.src.rel
- end
- if (@opt.act[:sisupod][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(f.place_file.sisupod.dir)
- inp << f.place_file.sisupod.rel
- end
- if (@opt.act[:pdf][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/)
- inp <<=(@opt.dir_structure_by == :filename) \
- ? (f.output_path.pdf.rel + '/*.pdf')
- : (f.output_path.pdf.rel + '/' + @opt.fnb + '*.pdf')
- end
- if (@opt.act[:sqlite_discrete][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(f.place_file.sqlite_discrete.dir)
- inp << f.place_file.sqlite_discrete.rel
- end
- if (@opt.act[:qrcode][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(f.place_file.qrcode_md.dir)
- inp \
- << f.place_file.qrcode_md.rel \
- << f.place_file.qrcode_title.rel
- end
- if (@opt.act[:manifest][:set]==:on \
- || @opt.cmd =~/^-[mqvVM]*R[mqvVM]*$/) \
- && FileTest.file?(f.place_file.manifest.dir)
- inp << f.place_file.manifest.rel
- end
- local_gen=if inp.length > 0
- inp.join(' ')
- else ''
- end
- local_css,images,images_system='','',''
- images=images_skin=images_system=local_css=''
- if @opt.cmd =~/[hwbxX]/ \
- && (defined? @md.ec[:image]) \
- && (@md.ec[:image].length > 0)
- images=
- f.place_file.images.rel + '/' \
- + @md.ec[:image].join(" #{f.output_path.images.rel}/")
- end
- if @opt.cmd =~/[yhwbxX]/ \
- && (defined? @md.ec[:image]) \
- && (@md.ec[:image].length > 0)
- local_css=f.output_path.css.rel
- images_system='_sisu/image_sys'
- end
- begin
- ##create file structure without copying files?:
- ##rsync -av -f"+ */" -f"- *" f.output_path.base.dir remote:./path/.
- #local_dirs=%{-f"+ */" -f"- *" #{f.output_path.base.dir}/*}
- #SiSU_Env::SystemCall.new(local_dirs,remote_gen,@opt.cmd).rsync
- local=local_gen + ' ' + images + ' ' + images_skin + ' ' + images_system + ' ' + local_css
- SiSU_Env::SystemCall.new(local,remote_rel,@opt.cmd).
- rsync('--relative',f.output_path.base.dir)
- rescue
- p __LINE__.to_s + ':' + __FILE__
- local_dirs=%{--include='*/' --exclude='*' #{f.output_path.base.dir}}
- SiSU_Env::SystemCall.new(local_dirs,remote_gen,@opt.cmd).rsync
- end
- elsif @opt.cmd =~/U/
- puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- puts "#{local_gen} -> #{remote_gen}"
- if FileTest.file?("#{local_src}/#{src_doc}") \
- or FileTest.file?("#{local_src}/#{src_doc}.txz")
- puts "#{local_src}/#{src_doc}* -> #{remote_src}"
- end
- else
- puts 'suspect rsync request, ignored'
- puts "#{local_gen} -> #{remote_gen} remote flag: #{@@flag_remote}"
- puts "permission not granted #{__FILE__} #{__LINE__}" \
- if @opt.cmd =~/M/
- end
- end
- end
- end
- def site_harvest
- self.remote_host_base.each do |remote_conn|
- local=@source_path_harvest
- l_rel="#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}"
- lng='en'
- if @env.output_dir_structure.by? == :language
- ldest=lng + '/manifest'
- files=
- ldest + '/authors.html' + ' ' \
- + ldest + '/topics.html'
- elsif @env.output_dir_structure.by? == :filetype
- ldest="manifest"
- files=
- ldest + '/authors.' + lng + '.html' + ' ' \
- + ldest + '/topics.' + lng + '.html'
- elsif @env.output_dir_structure.by? == :filename
- files=
- l_rel + '/authors.' + lng + '.html' + ' ' \
- + l_rel + '/topics.' + lng + '.html'
- end
- remote="#{remote_conn[:name]}/#{@opt.base_stub}"
- if @opt.act[:harvest][:set] \
- && @opt.act[:rsync][:set]
- (@env.output_dir_structure.by? == :filename) \
- ? (SiSU_Env::SystemCall.new(files,remote).rsync)
- : (SiSU_Env::SystemCall.new(ldest,remote).
- rsync('--relative',l_rel))
- elsif @opt.cmd =~/U/
- puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- puts "rsync_harvest: #{local} -> #{remote}"
- else
- puts "permission not granted #{__FILE__} #{__LINE__}" \
- if @opt.cmd =~/M/
- end
- end
- end
- def site_base #base site
- ldest='_sisu/*'
- l_rel="#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}"
- image_sys="#{@env.path.webserv}/_sisu/image_sys"
- self.remote_host_base.each do |remote_conn|
- remote="#{remote_conn[:name]}/#{@env.path.base_markup_dir_stub}"
- remote_conf="#{remote_conn[:name]}/_sisu"
- SiSU_Env::SystemCall.new(image_sys,remote_conf).rsync
- SiSU_Env::SystemCall.new(ldest,remote).rsync('--relative',l_rel)
- end
- end
- def site_base_sync
- self.remote_host_base.each do |remote_conn|
- local=@source_path
- remote="#{remote_conn[:name]}/#{@env.path.base_markup_dir_stub}/."
- if defined? @rc['permission_set']['remote_base_site'] \
- and @rc['permission_set']['remote_base_site'] \
- and @@flag_remote==true \
- and @opt.cmd !~/U/
- delete_extra_files='--delete' # '--delete-after'
- puts "begin rsync_base_sync: #{local} -> #{remote}"
- SiSU_Env::SystemCall.new("#{local}/_sisu/image_sys/",remote).
- rsync(delete_extra_files)
- SiSU_Env::SystemCall.new("#{local}/_sisu/image/",remote).
- rsync(delete_extra_files)
- SiSU_Env::SystemCall.new("#{local}/#{@env.path.style}/",remote).
- rsync(delete_extra_files)
- elsif @opt.cmd =~/U/
- puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- puts "rsync_base_sync: #{local} -> #{remote}"
- puts "#{local}/_sisu/image_sys/ -> #{remote}"
- puts "#{local}/_sisu/image/ -> #{remote}"
- puts "#{local}/#{@env.path.style}/ -> #{remote}"
- else
- puts "permission not granted #{__FILE__} #{__LINE__}" \
- if @opt.cmd =~/M/
- end
- end
- end
- self
- end
- def rsync_sitemaps #sitemap directory
- self.remote_host_base.each do |remote_conn|
- local=
- @source_path + '/sitemapindex.xml'
- remote="#{remote_conn[:name]}/#{@env.path.base_markup_dir_stub}/."
- if @@flag_remote
- delete_extra_files='--delete' # '--delete-after'
- SiSU_Env::SystemCall.new(local,remote).rsync(delete_extra_files)
- elsif @opt.cmd =~/U/
- puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- puts "rsync_sitemaps: #{local} -> #{remote}"
- else
- puts "permission not granted #{__FILE__} #{__LINE__}" \
- if @opt.cmd =~/M/
- end
- end
- end
+ class InfoRemote < SiSU_Info_Remote::InfoRemote # se_remotes.rb
end
- class InfoVersion <InfoEnv
- include Singleton
- begin
- require 'rbconfig'
- require 'yaml'
- rescue LoadError
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- error('rbconfig or yaml NOT FOUND (LoadError)')
- end
- @@lib_path=nil
- def get_version
- @version={}
- @pwd=ENV['PWD']
- lib_path=
- @@lib_path \
- ? @@lib_path
- : `echo $RUBYLIB`.split(':')
- @@lib_path ||=lib_path
- if File.exist?(SiSU_is[:version_info_path])
- @version=YAML::load(File::open(SiSU_is[:version_info_path])) #unless @@noyaml
- end
- @version[:install_method]=if SiSU_is[:run_from]==:gem_install
- spec = Gem::Specification.find_by_name("sisu")
- gem_root = spec.gem_dir
- (File.dirname(__FILE__.gsub(/\/lib\/sisu\/#{SiSU_is[:version_dir]}/,'')) == gem_root) \
- ? ' (ruby gem install)' : ''
- else ''
- end
- @version
- end
- def rbversion
- %x{ruby -v}.strip
- end
+ class InfoVersion < SiSU_Info_Version::InfoVersion # se_version.rb
end
- class InfoAbout
- def initialize(color='')
- @color=color
- end
- def sisu_version
- version=SiSU_Env::InfoVersion.instance.get_version
- rb_ver=SiSU_Env::InfoVersion.instance.rbversion
- if version[:version]
- opt_cmd=if defined? @color.cmd \
- and @color.cmd =~/[ck]/
- @color.cmd
- else '-v'
- end
- SiSU_Screen::Ansi.new(
- opt_cmd,
- version[:project],
- version[:version],
- version[:date_stamp],
- version[:date],
- version[:install_method],
- rb_ver
- ).version
- else puts 'SiSU (version information not available)'
- end
- end
- def sisu_about
- puts <<-WOK
- sisu: documents; markup, structuring, publishing in multiple standard formats, & search
- most (not all) useful commands (are made in a directory containing a sisu markup file &) take the form:
- sisu [action(s)] [filename(s)]
- where filename refers to a valid sisu marked up file, e.g.:
- cd /usr/share/doc/sisu/markup-samples/sisu_manual
- sisu --html --verbose sisu_commands.sst
- sisu --txt --html --epub --odt --pdf --sqlite --manpage --texinfo --concordance --qrcode --verbose sisu.ssm
- cd -
- See output produced, or see man pages: man sisu
- <http://www.sisudoc.org/> <http://www.jus.uio.no/sisu/>
- WOK
- end
+ class InfoAbout < SiSU_Info_About::InfoAbout # se_version.rb
end
- class InfoFile <InfoEnv #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
- 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
+ class InfoFile < SiSU_Info_File::InfoFile # se_file_op.rb
end
- class ProcessingSettings
- def initialize(md)
- @md=md
- end
- def cnf_rc #sisurc.yml
- @rc=SiSU_Env::GetInit.new.sisu_yaml.rc
- end
- def env_rc #env rc (including sisurc.yml)
- @env_rc ||=SiSU_Env::InfoEnv.new(@md.fns)
- end
- def doc_rc #document rc, make instructions
- (defined? @md.make) \
- ? @md.make
- : nil
- end
- def cmd_rc_act #command-line rc
- @cmd_rc_act=@md.opt.opt_act
- end
- def build
- def ocn?
- if cmd_rc_act[:ocn][:set]==:on
- true
- elsif cmd_rc_act[:ocn][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.ocn? \
- and doc_rc.toc? ==:off
- false
- elsif env_rc.build.ocn? ==:off
- false
- else
- true
- end
- end
- def plaintext_ocn?
- if cmd_rc_act[:txt_ocn][:set]==:on \
- or cmd_rc_act[:ocn][:set]==:on
- true
- elsif cmd_rc_act[:txt_ocn][:set]==:off \
- or cmd_rc_act[:ocn][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.ocn? \
- and doc_rc.toc? ==:off
- false
- elsif env_rc.build.ocn? ==:off
- false
- else
- true
- end
- end
- def odt_ocn?
- if cmd_rc_act[:odt_ocn][:set]==:on \
- or cmd_rc_act[:ocn][:set]==:on
- true
- elsif cmd_rc_act[:odt_ocn][:set]==:off \
- or cmd_rc_act[:ocn][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.ocn? \
- and doc_rc.toc? ==:off
- false
- elsif env_rc.build.ocn? ==:off
- false
- else
- true
- end
- end
- def html_strict?
- if cmd_rc_act[:html_strict][:set]==:on
- true
- elsif cmd_rc_act[:html_strict][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.html_strict? \
- and doc_rc.html_strict? ==:on
- true
- else
- false
- end
- end
- def toc?
- if cmd_rc_act[:toc][:set]==:on
- true
- elsif cmd_rc_act[:toc][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.toc? \
- and doc_rc.toc? ==:off
- false
- elsif env_rc.build.toc? ==:off
- false
- else
- true
- end
- end
- def manifest?
- if cmd_rc_act[:manifest][:set]==:on
- true
- elsif cmd_rc_act[:manifest][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.manifest? \
- and doc_rc.manifest? ==:off
- false
- elsif env_rc.build.manifest? ==:off
- false
- else
- true
- end
- end
- def links_to_manifest?
- if cmd_rc_act[:links_to_manifest][:set]==:on
- true
- elsif cmd_rc_act[:links_to_manifest][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.links_to_manifest? \
- and doc_rc.links_to_manifest? ==:off
- false
- elsif env_rc.build.links_to_manifest? ==:off
- false
- else
- true
- end
- end
- def metadata?
- if cmd_rc_act[:metadata][:set]==:on
- true
- elsif cmd_rc_act[:metadata][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.metadata? \
- and doc_rc.metadata? ==:off
- false
- elsif env_rc.build.metadata? ==:off
- false
- else
- true
- end
- end
- def minitoc?
- if html_top_band? == false #one form of navigation necessary
- true
- elsif cmd_rc_act[:minitoc][:set]==:on
- true
- elsif cmd_rc_act[:minitoc][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.minitoc? \
- and doc_rc.minitoc? ==:off
- false
- elsif env_rc.build.minitoc? ==:off
- false
- else
- true
- end
- end
- def manifest_minitoc?
- if html_top_band? == false #one form of navigation necessary
- true
- elsif cmd_rc_act[:manifest_minitoc][:set]==:on \
- || cmd_rc_act[:minitoc][:set]==:on
- true
- elsif cmd_rc_act[:manifest_minitoc][:set]==:off \
- || cmd_rc_act[:minitoc][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.manifest_minitoc? \
- and (doc_rc.manifest_minitoc? ==:off \
- || doc_rc.minitoc? ==:off)
- false
- elsif env_rc.build.manifest_minitoc? ==:off \
- || env_rc.build.minitoc? ==:off
- false
- elsif minitoc? == false
- false
- else
- true
- end
- end
- def html_minitoc?
- if html_top_band? == false #one form of navigation necessary
- true
- elsif cmd_rc_act[:html_minitoc][:set]==:on \
- || cmd_rc_act[:minitoc][:set]==:on
- true
- elsif cmd_rc_act[:html_minitoc][:set]==:off \
- || cmd_rc_act[:minitoc][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.html_minitoc? \
- and (doc_rc.html_minitoc? ==:off \
- || doc_rc.minitoc? ==:off)
- false
- elsif env_rc.build.html_minitoc? ==:off \
- || env_rc.build.minitoc? ==:off
- false
- elsif minitoc? == false
- false
- else
- true
- end
- end
- def html_top_band?
- if cmd_rc_act[:html_top_band][:set]==:on
- true
- elsif cmd_rc_act[:html_top_band][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.html_top_band? \
- and doc_rc.html_top_band? ==:off
- false
- elsif env_rc.build.html_top_band? ==:off
- false
- else
- true
- end
- end
- def html_navigation?
- if cmd_rc_act[:html_navigation][:set]==:on
- true
- elsif cmd_rc_act[:html_navigation][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.html_navigation? \
- and doc_rc.html_navigation? ==:off
- false
- elsif env_rc.build.html_navigation? ==:off
- false
- else
- true
- end
- end
- def html_navigation_bar?
- if cmd_rc_act[:html_navigation_bar][:set]==:on
- true
- elsif cmd_rc_act[:html_navigation_bar][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.html_navigation_bar? \
- and doc_rc.html_navigation_bar? ==:off
- false
- elsif env_rc.build.html_navigation_bar? ==:off
- false
- else
- true
- end
- end
- def search_form?
- if cmd_rc_act[:search_form][:set]==:on
- true
- elsif cmd_rc_act[:search_form][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.html_search_form? \
- and doc_rc.search_form? ==:off
- false
- elsif env_rc.build.search_form? ==:off
- false
- else
- true
- end
- end
- def html_search_form?
- if cmd_rc_act[:html_search_form][:set]==:on \
- || cmd_rc_act[:search_form][:set]==:on
- true
- elsif cmd_rc_act[:html_search_form][:set]==:off \
- || cmd_rc_act[:search_form][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.html_search_form? \
- and (doc_rc.html_search_form? ==:off \
- || doc_rc.search_form? ==:off)
- false
- elsif env_rc.build.html_search_form? ==:off \
- || env_rc.build.search_form? ==:off
- false
- elsif search_form? == false
- false
- else
- true
- end
- end
- def html_right_pane?
- if cmd_rc_act[:html_right_pane][:set]==:on
- true
- elsif cmd_rc_act[:html_right_pane][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.html_right_pane? \
- and doc_rc.html_right_pane? ==:off
- false
- elsif env_rc.build.html_right_pane? ==:off
- false
- else
- true
- end
- end
- def segsubtoc?
- if cmd_rc_act[:segsubtoc][:set]==:on
- true
- elsif cmd_rc_act[:segsubtoc][:set]==:off
- false
- elsif doc_rc.is_a?(Method) \
- and defined? doc_rc.segsubtoc? \
- and doc_rc.segsubtoc? ==:off
- false
- elsif env_rc.build.segsubtoc? ==:off
- false
- else
- true
- end
- end
- self
- end
- def ocn_html_identifier
- (build.html_strict?) \
- ? Mx[:ocn_id_char]
- : ''
- end
- def output_dir_structure
- def by_language_code?
- if cmd_rc_act[:output_by][:set] == :language
- true
- elsif cmd_rc_act[:output_by][:set] == :filetype \
- or cmd_rc_act[:output_by][:set] == :filename
- false
- elsif cmd_rc_act[:output_by][:set] == :language
- true
- else
- env_rc.output_dir_structure.by_language_code?
- end
- end
- def by_filetype?
- if cmd_rc_act[:output_by][:set] == :filetype
- true
- elsif cmd_rc_act[:output_by][:set] == :language \
- or cmd_rc_act[:output_by][:set] == :filename
- false
- elsif cmd_rc_act[:output_by][:set] == :filetype
- true
- else
- env_rc.output_dir_structure.by_filetype?
- end
- end
- def by_filename?
- if cmd_rc_act[:output_by][:set] == :filename
- true
- elsif cmd_rc_act[:output_by][:set] == :language \
- or cmd_rc_act[:output_by][:set] == :filetype
- false
- elsif cmd_rc_act[:output_by][:set] == :filename
- true
- else
- env_rc.output_dir_structure.by_filename?
- end
- end
- def multilingual?
- by_language_code?
- end
- def dump?
- ((cmd_rc_act[:dump][:bool] \
- && cmd_rc_act[:dump][:inst]) \
- || (env_rc.output_dir_structure.dump?)) \
- ? true
- : false
- end
- def redirect?
- ((cmd_rc_act[:redirect][:bool] \
- && cmd_rc_act[:redirect][:inst]) \
- || (env_rc.output_dir_structure.redirect?)) \
- ? true
- : false
- end
- def dump_or_redirect?
- ((dump?) || (redirect?)) \
- ? true
- : false
- end
- def by?
- if dump?
- :dump
- elsif redirect?
- :redirect
- elsif by_language_code?
- :language
- elsif by_filetype?
- :filetype
- elsif by_filename?
- :filename
- else #recheck current default
- :language
- end
- end
- self
- end
+ class ProcessingSettings < SiSU_Processing_Settings::ProcessingSettings # se_processing.rb
end
- class InfoDb < InfoEnv
- @@rc=nil
- def initialize
- @@pwd=@pwd=SiSU_Utils::Path.new.base_markup
- @env=SiSU_Env::InfoEnv.new
- pt=Pathname.new(@pwd)
- r=Px[:lng_lst_rgx]
- u=/.+?\/([^\/]+)(?:\/(?:#{r})$|$)/
- @pwd_stub=pt.realpath.to_s[u,1]
- @rc=@@rc ||=GetInit.new.sisu_yaml.rc
- @defaults=SiSU_Env::InfoEnv.new.defaults
- end
- def share_source?
- ((defined? @rc['db']['share_source']) \
- && @rc['db']['share_source']==true) \
- ? @rc['db']['share_source']
- : false
- end
- def engine
- def default
- ((defined? @rc['db']['engine']['default']) \
- && @rc['db']['engine']['default']=~/postgresql|sqlite/) \
- ? @rc['db']['engine']['default']
- : 'sqlite'
- end
- self
- end
- def psql
- def user(opt=nil)
- if opt \
- and opt.mod.inspect =~/--db-user[=-]["']?(\S+)["']+/
- $1
- elsif opt \
- and opt.mod =~/--webserv[=-]webrick/
- @env.user
- else
- ((defined? @rc['db']['postgresql']['user']) \
- && @rc['db']['postgresql']['user']=~/\S+/) \
- ? @rc['db']['postgresql']['user']
- : @env.user
- end
- end
- def db #db_name
- "#{Db[:name_prefix]}#{@pwd_stub}"
- end
- def port #PGPORT
- ((defined? @rc['db']['postgresql']['port']) \
- && ( @rc['db']['postgresql']['port'] =~/\d+/ \
- || @rc['db']['postgresql']['port'].is_a?(Fixnum))) \
- ? @rc['db']['postgresql']['port']
- : (@defaults[:postgresql_port])
- end
- def password
- ((defined? @rc['db']['postgresql']['password']) \
- && @rc['db']['postgresql']['password']=~/\S+/) \
- ? @rc['db']['postgresql']['password']
- : ''
- end
- def host
- ((defined? @rc['db']['postgresql']['host']) \
- && @rc['db']['postgresql']['host']=~/(?:\S{1,3}\.){3}\S{1,3}|\S+?\.\S+/) \
- ? @rc['db']['postgresql']['host']
- : ''
- end
- def dbi
- PG::Connection.open(:dbname => psql.db)
- end
- def dbi_
- (psql.host =~/(?:\S{1,3}\.){3}\S{1,3}|\S+?\.\S+/) \
- ? "DBI:Pg:database=#{psql.db};host=#{psql.host};port=#{psql.port}"
- : "DBI:Pg:database=#{psql.db};port=#{psql.port}"
- end
- def conn_dbi
- DBI.connect(psql.dbi,psql.user,psql.db)
- end
- def conn_pg
- require 'pg'
- PG::Connection.new(dbname: psql.db, port: psql.port)
- end
- self
- end
- def sqlite
- def db
- "#{@env.path.webserv}/#{@pwd_stub}/sisu_sqlite.db"
- end
- def db_discrete(md)
- # "#{@env.path.webserv}/#{@pwd_stub}/sisu_sqlite.db"
- end
- def dbi
- "DBI:SQLite3:#{sqlite.db}" #sqlite3 ?
- end
- def sqlite3
- sqlite.db #sqlite3 ?
- end
- def conn_dbi
- DBI.connect(sqlite.dbi)
- end
- def conn_sqlite3
- SQLite3::Database.new(sqlite.sqlite3)
- end
- self
- end
+ class InfoDb < SiSU_Info_Db::InfoDb # se_db.rb
end
- class DbOp <InfoDb
- def initialize(md)
- begin
- @md=md
- rescue
- SiSU_Screen::Ansi.new(md.opt.cmd,$!,$@).rescue do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- end
- end
- def sqlite_discrete
- def db
- @md.file.output_path.sqlite_discrete.dir \
- + '/' \
- + @md.file.base_filename.sqlite_discrete
- end
- def dbi
- "DBI:SQLite3:#{sqlite_discrete.db}"
- end
- def sqlite3
- sqlite_discrete.db
- end
- def conn_dbi
- DBI.connect(sqlite_discrete.dbi)
- end
- def conn_sqlite3
- begin
- $sqlite3=:yes
- require 'sqlite3'
- SQLite3::Database.new(sqlite_discrete.sqlite3)
- rescue LoadError
- $sqlite3=:no
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
- error('sqlite3 NOT FOUND (LoadError)')
- end
- end
- self
- end
+ class DbOp < SiSU_Db_Op::DbOp # se_db.rb
end
- class FileOp <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.cmd,$!,$@).rescue do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- end
- end
- def output_dir_structure
- 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'
- 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'
- 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
+ class FileOp < SiSU_File_Op::FileOp # se_file_op.rb
end
- class FilenameLanguageCodeInsert
- def initialize(opt,lng=nil)
- @opt,@lng=opt,lng
- @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
+ class FilenameLanguageCodeInsert < SiSU_Filename_Lang::FilenameLanguageCodeInsert # se_file_op.rb
end
- class CreateFile <InfoEnv #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='')
- filename="#{@env.path.output}/#{@fnb}/#{output_file}"
- File.new(filename,'w+')
- end
- def file_error
- File.new('/tmp/errorlog.sisu','w+')
- end
- def file_txt
- File.new("#{@env.processing_path.ao}/#{@fns}.txt",'w+')
- end
- def file_debug
- File.new("#{@env.processing_path.ao}/#{@fns}.debug.txt",'w+')
- end
- def metaverse
- def file_meta
- File.new("#{@env.processing_path.ao}/#{@fns}.meta",'w+')
- end
- def file_meta_idx_html
- File.new("#{@env.processing_path.ao}/#{@fns}.idx.html",'w+')
- end
- self
- end
- def file_note
- File.new("#{Dir.pwd}/#{@fns}.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
- File.new("#{@pth}/#{Ep[:d_oebps]}/#{Ep[:f_opf]}",'w')
- end
- def toc_ncx #variable toc ~/grotto/theatre/dbld/builds/epub_sample/toc.ncx
- File.new("#{@pth}/#{Ep[:d_oebps]}/#{Ep[:f_ncx]}",'w')
- end
- def metainf_cont #variable content ~/grotto/theatre/dbld/builds/epub_sample/META-INF/container.xml
- File.new("#{@pth}/META-INF/container.xml",'w')
- end
- def xhtml_css #fixed epub xhtml css
- File.new("#{@pth}/#{Ep[:d_oebps]}/css/xhtml.css",'w')
- end
- self
- end
- def file_texinfo
- File.new("#{@env.processing_path.texinfo}/#{@fnb}.texinfo",'w+')
- end
+ class CreateFile < SiSU_Create_File::CreateFile # se_file_op.rb
end
- class Clear <InfoEnv #todo unify with FileOp
- def initialize(cmd,fns,operation='')
- @cmd=cmd
- begin
- super(fns)
- @env=SiSU_Env::InfoEnv.new(fns)
- InfoVersion.instance
- if operation.class.inspect =~/SiSU_Param/
- @md=operation
- end
- case operation #watch
- when /pdf/ then @env_out=''
- when /sql/
- when /xml|plaintext|ascii/ then @env_out="#{@env.path.output}/#{@fnb}" #check change of name to plaintext from ascii
- else
- if defined? @md.sfx_src \
- and @md.sfx_src =~/ss[ftsumc]/
- @env_suf='lm'
- @env_out_root=@env.path.output
- @env_out="#{@env.path.output}/#{@fnb}"
- @@publisher='SiSU http://www.jus.uio.no/sisu'
- @env_pdf="#{@env_out_root}/pdf"
- end
- end
- rescue
- SiSU_Screen::Ansi.new(@cmd,$!,$@).rescue do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- end
- end
- def param_instantiate
- @cX||=SiSU_Screen::Ansi.new(@cmd)
- @@date=SiSU_Env::InfoDate.new
- @@proc=@@filename_txt=@@filename_texinfo=@@filename_lout_portrait=@@filename_lout_landscape=@@filename_html_scroll=@@filename_html_index=@@filename_html_segtoc=@@filename_semantic=@@filename_rss=@@newfile=@@drr=@@yaml=@@yamladdr=nil
- @@publisher='SiSU scribe'
- end
+ class Clear < SiSU_Clear::Clear # se_clear.rb
end
- class InfoPort < InfoEnv
- def initialize
- @env=SiSU_Env::InfoEnv.new
- end
- def webrick
- @env.port.webrick_port
- end
+ class InfoPort < SiSU_Info_Port::InfoPort # se_info_port.rb
end
- class InfoProgram < InfoEnv #revisit
- attr_accessor :editor,:wc,:tidy,:rexml,:pdflatex,:postgresql,:sqlite
- def initialize
- prog=SiSU_Env::InfoEnv.new.program
- @editor, @wc, @tidy, @rexml, @pdflatex, @postgresql, @sqlite=
- prog.text_editor,prog.wc,prog.tidy,prog.rexml,prog.pdflatex,prog.postgresql,prog.sqlite
- end
+ class InfoProgram < SiSU_Info_Program::InfoProgram # se_programs.rb
end
- class CSS_Default
- def html
- 'html.css'
- end
- def html_tables
- 'html_tables.css'
- end
- def xhtml
- 'xhtml.css'
- end
- def xml_sax
- 'sax.css'
- end
- def xml_dom
- 'dom.css'
- end
- def xml_docbook
- 'docbook.css'
- end
- def homepage
- 'homepage.css'
- end
- def harvest
- 'harvest.css'
- end
+ class CSS_Default < SiSU_CSS::CSS_Default # se_css.rb
end
- class CSS_Select < InfoEnv
- def initialize(md)
- @md=md
- @env=SiSU_Env::InfoEnv.new('',@md)
- end
- def html
- if @md.doc_css \
- and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_html.css")
- @md.doc_css + '_html.css'
- elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_html.css")
- @env.path.base_markup_dir_stub + '_html.css'
- else
- SiSU_Env::CSS_Default.new.html
- end
- end
- def html_tables
- if @md.doc_css \
- and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_html_tables.css")
- @md.doc_css + '_html_tables.css'
- elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_html_tables.css")
- @env.path.base_markup_dir_stub + '_html_tables.css'
- else SiSU_Env::CSS_Default.new.html_tables
- end
- end
- def xhtml
- if @md.doc_css \
- and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_xhtml.css")
- @md.doc_css + '_xhtml.css'
- elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_xhtml.css")
- @env.path.base_markup_dir_stub + '_xhtml.css'
- else SiSU_Env::CSS_Default.new.xhtml
- end
- end
- def xml_sax
- if @md.doc_css \
- and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_xml_sax.css")
- @md.doc_css + '_xml_sax.css'
- elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_xml_sax.css")
- @env.path.base_markup_dir_stub + '_xml_sax.css'
- else SiSU_Env::CSS_Default.new.xml_sax
- end
- end
- def xml_dom
- if @md.doc_css \
- and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_xml_dom.css")
- @md.doc_css + '_xml_dom.css'
- elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_xml_dom.css")
- @env.path.base_markup_dir_stub + '_xml_dom.css'
- else SiSU_Env::CSS_Default.new.xml_dom
- end
- end
- def xml_docbook
- if @md.doc_css \
- and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_docbook.css")
- @md.doc_css + '_xml_dom.css'
- elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_docbook.css")
- @env.path.base_markup_dir_stub + '_docbook.css'
- else SiSU_Env::CSS_Default.new.xml_docbook
- end
- end
- def homepage
- if @md.doc_css \
- and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_homepage.css")
- @md.doc_css + '_homepage.css'
- elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_homepage.css")
- @env.path.base_markup_dir_stub + '_homepage.css'
- else SiSU_Env::CSS_Default.new.homepage
- end
- end
+ class CSS_Select < SiSU_CSS::CSS_Select # se_css.rb
end
- class CSS_Stylesheet
- def initialize(md)
- @md=md
- @css=SiSU_Env::CSS_Select.new(@md)
- @env=SiSU_Env::InfoEnv.new('',@md)
- @file=SiSU_Env::FileOp.new(@md)
- end
- def html
- stylesheet=
- @file.path_rel_links.html_scroll_css \
- + @env.path.style + '/' \
- + @css.html
- %{ <link rel="stylesheet" href="#{stylesheet}" type="text/css" />}
- end
- def html_seg
- stylesheet=
- @file.path_rel_links.html_seg_css \
- + @env.path.style + '/' \
- + @css.html
- %{ <link rel="stylesheet" href="#{stylesheet}" type="text/css" />}
- end
- def html_tables
- stylesheet=
- @file.path_rel_links.html_seg_css \
- + @env.path.style + '/' \
- + @css.html
- %{ <link rel="stylesheet" href="#{stylesheet}" type="text/css" />}
- end
- def xhtml_epub
- %{ <link rel="stylesheet" href="css/xhtml.css" type="text/css" />}
- end
- def epub
- xhtml_epub
- end
- def xhtml
- stylesheet=
- @file.path_rel_links.xhtml_css \
- + @env.path.style + '/' \
- + @css.xhtml
- %{<?xml-stylesheet type="text/css" href="#{stylesheet}"?>}
- end
- def xml_sax
- stylesheet=
- @file.path_rel_links.xml_css \
- + @env.path.style + '/' \
- + @css.xml_sax
- %{<?xml-stylesheet type="text/css" href="#{stylesheet}"?>}
- end
- def xml_dom
- stylesheet=
- @file.path_rel_links.xml_css \
- + @env.path.style + '/' \
- + @css.xml_dom
- %{<?xml-stylesheet type="text/css" href="#{stylesheet}"?>}
- end
- def xml_docbook
- stylesheet=
- @file.path_rel_links.xml_css \
- + @env.path.style + '/' \
- + @css.xml_docbook
- %{<?xml-stylesheet type="text/css" href="#{stylesheet}"?>}
- end
+ class CSS_Stylesheet < SiSU_CSS::CSS_Stylesheet # se_css.rb
end
- class CreateSite < InfoEnv
- require_relative 'css' # css.rb
- include SiSU_Style
- def initialize(opt)
- @opt=opt
- @env=SiSU_Env::InfoEnv.new
- @init=SiSU_Env::GetInit.new
- @home,@pwd=ENV['HOME'],ENV['PWD'] #@pwd=Dir.pwd
- @rc=GetInit.new.sisu_yaml.rc
- @vz=SiSU_Viz::Defaults.new
- @vz_home=SiSU_Viz::Home.new
- end
- def create_default_sisu_homepage(action=:none)
- if action==:none
- puts %{ place your homepages in directory:\n "#{@env.path.rc}/home/*.html"\n (no action taken)}
- else
- puts %{ place your homepages in directory:\n "#{@env.path.rc}/home/*.html"\n (in order to replace default sisu homepage)}
- filename_homepage=
- @env.path.webserv + '/' \
- + @env.path.base_markup_dir_stub + '/index.html'
- filename_home_toc=
- @env.path.webserv + '/' \
- + @env.path.base_markup_dir_stub + '/toc.html'
- file_homepage=File.new(filename_homepage,'w')
- file_home_toc=File.new(filename_home_toc,'w')
- file_homepage << @vz_home.homepage
- file_home_toc << @vz_home.homepage
- file_homepage.close
- file_home_toc.close
- end
- end
- def homepage
- home_pages_manually_created=Dir.glob("#{@env.path.rc}/home/*.html")
- FileUtils::mkdir_p("#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}") \
- unless FileTest.directory?("#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}")
- if home_pages_manually_created.length > 0
- home_pages_manually_created.each do |homepage|
- FileUtils.cp(homepage,"#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}")
- end
- else
- create_default_sisu_homepage(:none)
- #create_default_sisu_homepage(:default)
- end
- end
- def cp_images(src_path,dest_path)
- if FileTest.directory?(src_path)
- FileUtils::cd(src_path)
- source=Dir.glob("*.{png,jpg,gif,ico}")
- FileUtils::mkdir_p(dest_path) unless FileTest.directory?(dest_path)
- FileUtils::chmod(0755,dest_path)
- source.each do |i|
- if FileTest.file?(i)
- FileUtils::cp(i,"#{dest_path}/#{i}")
- FileUtils::chmod(0644,"#{dest_path}/#{i}")
- else STDERR.puts %{\t*WARN* did not find image - "#{i}" [#{__FILE__}:#{__LINE__}]}
- end
- end
- FileUtils::cd(@pwd)
- else STDERR.puts %{\t*WARN* did not find - #{src_path} [#{__FILE__}:#{__LINE__}]}
- end
- end
- def cp_local_images
- src=@pwd + '/_sisu/image'
- dest=
- @env.path.webserv + '/' \
- + @env.path.base_markup_dir_stub + '/_sisu/image'
- cp_images(src,dest) if FileTest.directory?(src)
- end
- def cp_external_images
- src=@env.processing_path.processing + '/external_document/image'
- dest=
- @env.path.webserv + '/' \
- + @env.path.base_markup_dir_stub + '/_sisu/image_external'
- if FileTest.directory?(src)
- cp_images(src,dest) if FileTest.directory?(src)
- end
- end
- def cp_webserver_images
- src=@env.path.image_source
- dest_arr=[
- "#{@env.path.webserv}/_sisu/image",
- "#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}/_sisu/image",
- ]
- dest_arr.each do |dest|
- cp_images(src,dest) if FileTest.directory?(src)
- end
- end
- def cp_webserver_images_local #this should not have been necessary
- src=@env.path.image_source
- dest=
- @env.path.webserv + '/' \
- + @env.path.base_markup_dir_stub + '/_sisu/image'
- cp_images(src,dest) if FileTest.directory?(src)
- end
- def cp_base_images #fix images
- src=SiSU_is[:path_base_system_data] + '/image'
- dest_arr=[
- "#{@env.path.webserv}/_sisu/image_sys",
- "#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}/_sisu/image_sys"
- ]
- dest_arr.each do |dest|
- cp_images(src,dest) if FileTest.directory?(src)
- end
- end
- def cp_css
- FileUtils::mkdir_p("#{@env.path.output}/#{@env.path.style}") \
- unless FileTest.directory?("#{@env.path.output}/#{@env.path.style}")
- css_path=[
- '/etc/sisu/css',
- "#{@home}/.sisu/css",
- "#{@pwd}/_sisu/css",
- ] #BROKEN
- if defined? @rc['permission_set']['css_modify'] \
- and @rc['permission_set']['css_modify']
- SiSU_Screen::Ansi.new(
- @opt.cmd,
- "*WARN* modify is css set to: #{@rc['permission_set']['css_modify']}"
- ).warn if @opt.cmd=~/[MV]/
- css_path.each do |x|
- if FileTest.directory?(x)
- FileUtils::cd(x)
- source=Dir.glob("*.{css}")
- source.each do |i|
- if FileTest.file?(i)
- FileUtils::cp(i,"#{@env.path.output}/#{@env.path.style}")
- else STDERR.puts %{\t*WARN* did not find css - "#{i}" [#{__FILE__}:#{__LINE__}]}
- end
- end
- FileUtils::cd(@pwd)
- end
- end
- else
- SiSU_Screen::Ansi.new(
- @opt.cmd,
- "*WARN* modify css is not set or is set to: false"
- ).warn if @opt.cmd=~/[MV]/
- end
- fn_css=SiSU_Env::CSS_Default.new
- css=SiSU_Style::CSS.new
- path_style="#{@env.path.output}/#{@env.path.style}"
- FileUtils::mkdir_p(path_style) \
- unless FileTest.directory?(path_style)
- if @opt.cmd =~/C/ \
- or not FileTest.file?("#{path_style}/#{fn_css.homepage}")
- style=File.new("#{path_style}/#{fn_css.homepage}",'w')
- style << css.homepage
- style.close
- end
- if @opt.cmd =~/C/ \
- or not FileTest.file?("#{path_style}/#{fn_css.html_tables}")
- style=File.new("#{path_style}/#{fn_css.html_tables}",'w')
- style << css.html_tables
- style.close
- end
- if @opt.cmd =~/C/ \
- or not FileTest.file?("#{path_style}/#{fn_css.html}")
- style=File.new("#{path_style}/#{fn_css.html}",'w')
- style << css.html
- style.close
- end
- if @opt.cmd =~/C/ \
- or not FileTest.file?("#{path_style}/#{fn_css.harvest}")
- style=File.new("#{path_style}/#{fn_css.harvest}",'w')
- style << css.harvest
- style.close
- end
- if @opt.cmd =~/C/ \
- or (@opt.cmd =~/[x]/ \
- and not FileTest.file?("#{path_style}/#{fn_css.xml_sax}"))
- style=File.new("#{path_style}/#{fn_css.xml_sax}",'w')
- style << css.xml_sax
- style.close
- end
- if @opt.cmd =~/C/ \
- or (@opt.cmd =~/[X]/ \
- and not FileTest.file?("#{path_style}/#{fn_css.xml_dom}"))
- style=File.new("#{path_style}/#{fn_css.xml_dom}",'w')
- style << css.xml_dom
- style.close
- end
- if @opt.cmd =~/C/ \
- or (@opt.act[:xml_docbook_book][:set] == :on \
- and not FileTest.file?("#{path_style}/#{fn_css.xml_docbook}"))
- style=File.new("#{path_style}/#{fn_css.xml_docbook}",'w')
- style << css.xml_docbook
- style.close
- end
- if @opt.cmd =~/C/ \
- or (@opt.cmd =~/[b]/ \
- and not FileTest.file?("#{path_style}/#{fn_css.xhtml}"))
- style=File.new("#{path_style}/#{fn_css.xhtml}",'w')
- style << css.xhtml
- style.close
- end
- end
+ class CreateSite < SiSU_Create_Site::CreateSite # se_createsite.rb
end
end
module SiSU_Screen
@@ -7578,4 +162,3 @@ module SiSU_Errors
require_relative 'errors' # errors.rb
end
__END__
-https? intro check 2007-09-22
diff --git a/lib/sisu/v6/se_cleanoutput.rb b/lib/sisu/v6/se_cleanoutput.rb
new file mode 100644
index 0000000..d27e602
--- /dev/null
+++ b/lib/sisu/v6/se_cleanoutput.rb
@@ -0,0 +1,151 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v6/se_cleanoutput.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Clean_Output
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ class CleanOutput
+ begin
+ require 'fileutils'
+ include FileUtils::Verbose
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('fileutils NOT FOUND (LoadError)')
+ end
+ def initialize(opt)
+ @opt=opt
+ z=SiSU_Env::FileMap.new(opt)
+ zap=z.local_sisu_source
+ if opt.cmd =~ /h/i
+ zap=Dir.glob(zap).join(' ')
+ @zap=if opt.cmd !~ /w/
+ zap.gsub(/#{@source_path}\/concordance.html/,'')
+ else zap
+ end
+ end
+ @env=SiSU_Env::InfoEnv.new
+ end
+ def zap
+ def deletion(fn)
+ if FileTest.file?(fn)==true
+ File.delete(fn)
+ tell=SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns, 'remove: ' + fn)
+ tell.warn unless @opt.cmd =~/q/
+ end
+ end
+ def remove_output
+ if @opt.act[:maintenance][:set] == :on
+ m=InfoFile.new(@opt.fnc)
+ tell=SiSU_Screen::Ansi.new(
+ @opt.cmd,@opt.fns,
+ 'remove maintenance files from: ' + @env.processing_path.ao
+ )
+ tell.warn unless @opt.cmd =~/q/
+ deletion(m.marshal.ao_content)
+ deletion(m.marshal.ao_idx_sst_rel_html_seg)
+ deletion(m.ao_idx_sst_rel)
+ deletion(m.ao_idx_html)
+ deletion(m.ao_idx_xhtml)
+ deletion(m.ao_metadata)
+ deletion(m.ao_map_nametags)
+ deletion(m.ao_map_ocn_htmlseg)
+ deletion(m.html_tune)
+ end
+ md=SiSU_Param::Parameters.new(@opt).get
+ f=SiSU_Env::FileOp.new(md)
+ deletion(f.place_file.html_segtoc.dir)
+ deletion(f.place_file.html_scroll.dir)
+ deletion(f.place_file.html_book_index.dir)
+ deletion(f.place_file.html_concordance.dir)
+ deletion(f.place_file.epub.dir)
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_letter}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_l_letter}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_a4}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_l_a4}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_a5}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_l_a5}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_b5}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_l_b5}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_legal}")
+ deletion("#{f.output_path.pdf.dir}/#{f.base_filename.pdf_p_legal}")
+ deletion(f.place_file.odt.dir)
+ deletion(f.place_file.xhtml.dir)
+ deletion(f.place_file.xml_sax.dir)
+ deletion(f.place_file.xml_dom.dir)
+ deletion(f.place_file.xml_scaffold_structure_sisu.dir)
+ deletion(f.place_file.xml_scaffold_structure_collapse.dir)
+ deletion(f.place_file.info.dir)
+ deletion(f.place_file.manpage.dir)
+ deletion(f.place_file.sqlite_discrete.dir)
+ deletion(f.place_file.txt.dir)
+ deletion(f.place_file.hash_digest.dir)
+ deletion(f.place_file.manifest.dir)
+ deletion(f.place_file.qrcode_md.dir)
+ deletion(f.place_file.qrcode_title.dir)
+ deletion(f.place_file.src.dir)
+ deletion(f.place_file.sisupod.dir)
+ end
+ self
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v6/se_clear.rb b/lib/sisu/v6/se_clear.rb
new file mode 100644
index 0000000..af4097a
--- /dev/null
+++ b/lib/sisu/v6/se_clear.rb
@@ -0,0 +1,112 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v6/se_clear.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Clear
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ require_relative 'se_info_env' # se_info_env.rb
+ begin
+ require 'singleton'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('singleton NOT FOUND (LoadError)')
+ end
+ class Clear < SiSU_Info_Env::InfoEnv # se_info_env.rb
+ #todo unify with FileOp
+ def initialize(cmd,fns,operation='')
+ @cmd=cmd
+ begin
+ super(fns)
+ @env=SiSU_Env::InfoEnv.new(fns)
+ SiSU_Env::InfoVersion.instance
+ if operation.class.inspect =~/SiSU_Param/
+ @md=operation
+ end
+ case operation #watch
+ when /pdf/ then @env_out=''
+ when /sql/
+ when /xml|plaintext|ascii/ then @env_out=@env.path.output + @fnb #check change of name to plaintext from ascii
+ else
+ if defined? @md.sfx_src \
+ and @md.sfx_src =~/ss[ftsumc]/
+ @env_out_root=@env.path.output
+ @env_out="#{@env.path.output}/#{@fnb}"
+ @@publisher='SiSU http://www.jus.uio.no/sisu'
+ @env_pdf="#{@env_out_root}/pdf"
+ end
+ end
+ rescue
+ SiSU_Screen::Ansi.new(@cmd,$!,$@).rescue do
+ __LINE__.to_s + ':' + __FILE__
+ end
+ ensure
+ end
+ end
+ def param_instantiate
+ @cX||=SiSU_Screen::Ansi.new(@cmd)
+ @@date=SiSU_Env::InfoDate.new
+ @@proc=@@filename_txt=@@filename_texinfo=@@filename_lout_portrait=@@filename_lout_landscape=@@filename_html_scroll=@@filename_html_index=@@filename_html_segtoc=@@filename_semantic=@@filename_rss=@@newfile=@@drr=@@yaml=@@yamladdr=nil
+ @@publisher='SiSU scribe'
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v6/se_createsite.rb b/lib/sisu/v6/se_createsite.rb
new file mode 100644
index 0000000..c35d24d
--- /dev/null
+++ b/lib/sisu/v6/se_createsite.rb
@@ -0,0 +1,275 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v6/se_createsite.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Create_Site
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ require_relative 'screen_text_color' # screen_text_color.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 CreateSite < SiSU_Info_Env::InfoEnv # se_info_env.rb
+ require_relative 'css' # css.rb
+ include SiSU_Style
+ def initialize(opt)
+ @opt=opt
+ @env=SiSU_Env::InfoEnv.new
+ @init=SiSU_Env::GetInit.new
+ @home,@pwd=ENV['HOME'],ENV['PWD'] #@pwd=Dir.pwd
+ @rc=SiSU_Env::GetInit.new.sisu_yaml.rc
+ @vz=SiSU_Viz::Defaults.new
+ @vz_home=SiSU_Viz::Home.new
+ end
+ def create_default_sisu_homepage(action=:none)
+ if action==:none
+ puts %{ place your homepages in directory:\n "#{@env.path.rc}/home/*.html"\n (no action taken)}
+ else
+ puts %{ place your homepages in directory:\n "#{@env.path.rc}/home/*.html"\n (in order to replace default sisu homepage)}
+ filename_homepage=
+ @env.path.webserv + '/' \
+ + @env.path.base_markup_dir_stub + '/index.html'
+ filename_home_toc=
+ @env.path.webserv + '/' \
+ + @env.path.base_markup_dir_stub + '/toc.html'
+ file_homepage=File.new(filename_homepage,'w')
+ file_home_toc=File.new(filename_home_toc,'w')
+ file_homepage << @vz_home.homepage
+ file_home_toc << @vz_home.homepage
+ file_homepage.close
+ file_home_toc.close
+ end
+ end
+ def homepage
+ home_pages_manually_created=Dir.glob("#{@env.path.rc}/home/*.html")
+ FileUtils::mkdir_p("#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}") \
+ unless FileTest.directory?("#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}")
+ if home_pages_manually_created.length > 0
+ home_pages_manually_created.each do |homepage|
+ FileUtils.cp(homepage,"#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}")
+ end
+ else
+ create_default_sisu_homepage(:none)
+ #create_default_sisu_homepage(:default)
+ end
+ end
+ def cp_images(src_path,dest_path)
+ if FileTest.directory?(src_path)
+ FileUtils::cd(src_path)
+ source=Dir.glob("*.{png,jpg,gif,ico}")
+ FileUtils::mkdir_p(dest_path) unless FileTest.directory?(dest_path)
+ FileUtils::chmod(0755,dest_path)
+ source.each do |i|
+ if FileTest.file?(i)
+ FileUtils::cp(i,"#{dest_path}/#{i}")
+ FileUtils::chmod(0644,"#{dest_path}/#{i}")
+ else STDERR.puts %{\t*WARN* did not find image - "#{i}" [#{__FILE__}:#{__LINE__}]}
+ end
+ end
+ FileUtils::cd(@pwd)
+ else STDERR.puts %{\t*WARN* did not find - #{src_path} [#{__FILE__}:#{__LINE__}]}
+ end
+ end
+ def cp_local_images
+ src=@pwd + '/_sisu/image'
+ dest=
+ @env.path.webserv + '/' \
+ + @env.path.base_markup_dir_stub + '/_sisu/image'
+ cp_images(src,dest) if FileTest.directory?(src)
+ end
+ def cp_external_images
+ src=@env.processing_path.processing + '/' \
+ + 'external_document/image'
+ dest=
+ @env.path.webserv + '/' \
+ + @env.path.base_markup_dir_stub + '/' \
+ + '_sisu/image_external'
+ if FileTest.directory?(src)
+ cp_images(src,dest) if FileTest.directory?(src)
+ end
+ end
+ def cp_webserver_images
+ src=@env.path.image_source
+ dest_arr=[
+ "#{@env.path.webserv}/_sisu/image",
+ "#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}/_sisu/image",
+ ]
+ dest_arr.each do |dest|
+ cp_images(src,dest) if FileTest.directory?(src)
+ end
+ end
+ def cp_webserver_images_local #this should not have been necessary
+ src=@env.path.image_source
+ dest=
+ @env.path.webserv + '/' \
+ + @env.path.base_markup_dir_stub + '/' \
+ + '_sisu/image'
+ cp_images(src,dest) if FileTest.directory?(src)
+ end
+ def cp_base_images #fix images
+ src=SiSU_is[:path_base_system_data] + '/image'
+ dest_arr=[
+ "#{@env.path.webserv}/_sisu/image_sys",
+ "#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}/_sisu/image_sys"
+ ]
+ dest_arr.each do |dest|
+ cp_images(src,dest) if FileTest.directory?(src)
+ end
+ end
+ def cp_css
+ FileUtils::mkdir_p("#{@env.path.output}/#{@env.path.style}") \
+ unless FileTest.directory?("#{@env.path.output}/#{@env.path.style}")
+ css_path=[
+ '/etc/sisu/css',
+ "#{@home}/.sisu/css",
+ "#{@pwd}/_sisu/css",
+ ] #BROKEN
+ if defined? @rc['permission_set']['css_modify'] \
+ and @rc['permission_set']['css_modify']
+ SiSU_Screen::Ansi.new(
+ @opt.cmd,
+ "*WARN* modify is css set to: #{@rc['permission_set']['css_modify']}"
+ ).warn if @opt.cmd=~/[MV]/
+ css_path.each do |x|
+ if FileTest.directory?(x)
+ FileUtils::cd(x)
+ source=Dir.glob("*.{css}")
+ source.each do |i|
+ if FileTest.file?(i)
+ FileUtils::cp(i,"#{@env.path.output}/#{@env.path.style}")
+ else STDERR.puts %{\t*WARN* did not find css - "#{i}" [#{__FILE__}:#{__LINE__}]}
+ end
+ end
+ FileUtils::cd(@pwd)
+ end
+ end
+ else
+ SiSU_Screen::Ansi.new(
+ @opt.cmd,
+ "*WARN* modify css is not set or is set to: false"
+ ).warn if @opt.cmd=~/[MV]/
+ end
+ fn_css=SiSU_Env::CSS_Default.new
+ css=SiSU_Style::CSS.new
+ path_style="#{@env.path.output}/#{@env.path.style}"
+ FileUtils::mkdir_p(path_style) \
+ unless FileTest.directory?(path_style)
+ if @opt.cmd =~/C/ \
+ or not FileTest.file?("#{path_style}/#{fn_css.homepage}")
+ style=File.new("#{path_style}/#{fn_css.homepage}",'w')
+ style << css.homepage
+ style.close
+ end
+ if @opt.cmd =~/C/ \
+ or not FileTest.file?("#{path_style}/#{fn_css.html_tables}")
+ style=File.new("#{path_style}/#{fn_css.html_tables}",'w')
+ style << css.html_tables
+ style.close
+ end
+ if @opt.cmd =~/C/ \
+ or not FileTest.file?("#{path_style}/#{fn_css.html}")
+ style=File.new("#{path_style}/#{fn_css.html}",'w')
+ style << css.html
+ style.close
+ end
+ if @opt.cmd =~/C/ \
+ or not FileTest.file?("#{path_style}/#{fn_css.harvest}")
+ style=File.new("#{path_style}/#{fn_css.harvest}",'w')
+ style << css.harvest
+ style.close
+ end
+ if @opt.cmd =~/C/ \
+ or (@opt.cmd =~/[x]/ \
+ and not FileTest.file?("#{path_style}/#{fn_css.xml_sax}"))
+ style=File.new("#{path_style}/#{fn_css.xml_sax}",'w')
+ style << css.xml_sax
+ style.close
+ end
+ if @opt.cmd =~/C/ \
+ or (@opt.cmd =~/[X]/ \
+ and not FileTest.file?("#{path_style}/#{fn_css.xml_dom}"))
+ style=File.new("#{path_style}/#{fn_css.xml_dom}",'w')
+ style << css.xml_dom
+ style.close
+ end
+ if @opt.cmd =~/C/ \
+ or (@opt.act[:xml_docbook_book][:set] == :on \
+ and not FileTest.file?("#{path_style}/#{fn_css.xml_docbook}"))
+ style=File.new("#{path_style}/#{fn_css.xml_docbook}",'w')
+ style << css.xml_docbook
+ style.close
+ end
+ if @opt.cmd =~/C/ \
+ or (@opt.cmd =~/[b]/ \
+ and not FileTest.file?("#{path_style}/#{fn_css.xhtml}"))
+ style=File.new("#{path_style}/#{fn_css.xhtml}",'w')
+ style << css.xhtml
+ style.close
+ end
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v6/se_css.rb b/lib/sisu/v6/se_css.rb
new file mode 100644
index 0000000..e641e42
--- /dev/null
+++ b/lib/sisu/v6/se_css.rb
@@ -0,0 +1,227 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v6/se_css.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_CSS
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ require_relative 'se_info_env' # se_info_env.rb
+ class CSS_Default
+ def html
+ 'html.css'
+ end
+ def html_tables
+ 'html_tables.css'
+ end
+ def xhtml
+ 'xhtml.css'
+ end
+ def xml_sax
+ 'sax.css'
+ end
+ def xml_dom
+ 'dom.css'
+ end
+ def xml_docbook
+ 'docbook.css'
+ end
+ def homepage
+ 'homepage.css'
+ end
+ def harvest
+ 'harvest.css'
+ end
+ end
+ class CSS_Select < SiSU_Info_Env::InfoEnv # se_info_env.rb
+ def initialize(md)
+ @md=md
+ @env=SiSU_Env::InfoEnv.new('',@md)
+ end
+ def html
+ if @md.doc_css \
+ and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_html.css")
+ @md.doc_css + '_html.css'
+ elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_html.css")
+ @env.path.base_markup_dir_stub + '_html.css'
+ else
+ SiSU_Env::CSS_Default.new.html
+ end
+ end
+ def html_tables
+ if @md.doc_css \
+ and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_html_tables.css")
+ @md.doc_css + '_html_tables.css'
+ elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_html_tables.css")
+ @env.path.base_markup_dir_stub + '_html_tables.css'
+ else SiSU_Env::CSS_Default.new.html_tables
+ end
+ end
+ def xhtml
+ if @md.doc_css \
+ and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_xhtml.css")
+ @md.doc_css + '_xhtml.css'
+ elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_xhtml.css")
+ @env.path.base_markup_dir_stub + '_xhtml.css'
+ else SiSU_Env::CSS_Default.new.xhtml
+ end
+ end
+ def xml_sax
+ if @md.doc_css \
+ and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_xml_sax.css")
+ @md.doc_css + '_xml_sax.css'
+ elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_xml_sax.css")
+ @env.path.base_markup_dir_stub + '_xml_sax.css'
+ else SiSU_Env::CSS_Default.new.xml_sax
+ end
+ end
+ def xml_dom
+ if @md.doc_css \
+ and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_xml_dom.css")
+ @md.doc_css + '_xml_dom.css'
+ elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_xml_dom.css")
+ @env.path.base_markup_dir_stub + '_xml_dom.css'
+ else SiSU_Env::CSS_Default.new.xml_dom
+ end
+ end
+ def xml_docbook
+ if @md.doc_css \
+ and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_docbook.css")
+ @md.doc_css + '_xml_dom.css'
+ elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_docbook.css")
+ @env.path.base_markup_dir_stub + '_docbook.css'
+ else SiSU_Env::CSS_Default.new.xml_docbook
+ end
+ end
+ def homepage
+ if @md.doc_css \
+ and FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@md.doc_css}_homepage.css")
+ @md.doc_css + '_homepage.css'
+ elsif FileTest.file?("#{@env.path.output}/#{@env.path.style}/#{@env.path.base_markup_dir_stub}_homepage.css")
+ @env.path.base_markup_dir_stub + '_homepage.css'
+ else SiSU_Env::CSS_Default.new.homepage
+ end
+ end
+ end
+ class CSS_Stylesheet
+ def initialize(md)
+ @md=md
+ @css=SiSU_Env::CSS_Select.new(@md)
+ @env=SiSU_Env::InfoEnv.new('',@md)
+ @file=SiSU_Env::FileOp.new(@md)
+ end
+ def html
+ stylesheet=
+ @file.path_rel_links.html_scroll_css \
+ + @env.path.style + '/' \
+ + @css.html
+ %{ <link rel="stylesheet" href="#{stylesheet}" type="text/css" />}
+ end
+ def html_seg
+ stylesheet=
+ @file.path_rel_links.html_seg_css \
+ + @env.path.style + '/' \
+ + @css.html
+ %{ <link rel="stylesheet" href="#{stylesheet}" type="text/css" />}
+ end
+ def html_tables
+ stylesheet=
+ @file.path_rel_links.html_seg_css \
+ + @env.path.style + '/' \
+ + @css.html
+ %{ <link rel="stylesheet" href="#{stylesheet}" type="text/css" />}
+ end
+ def xhtml_epub
+ %{ <link rel="stylesheet" href="css/xhtml.css" type="text/css" />}
+ end
+ def epub
+ xhtml_epub
+ end
+ def xhtml
+ stylesheet=
+ @file.path_rel_links.xhtml_css \
+ + @env.path.style + '/' \
+ + @css.xhtml
+ %{<?xml-stylesheet type="text/css" href="#{stylesheet}"?>}
+ end
+ def xml_sax
+ stylesheet=
+ @file.path_rel_links.xml_css \
+ + @env.path.style + '/' \
+ + @css.xml_sax
+ %{<?xml-stylesheet type="text/css" href="#{stylesheet}"?>}
+ end
+ def xml_dom
+ stylesheet=
+ @file.path_rel_links.xml_css \
+ + @env.path.style + '/' \
+ + @css.xml_dom
+ %{<?xml-stylesheet type="text/css" href="#{stylesheet}"?>}
+ end
+ def xml_docbook
+ stylesheet=
+ @file.path_rel_links.xml_css \
+ + @env.path.style + '/' \
+ + @css.xml_docbook
+ %{<?xml-stylesheet type="text/css" href="#{stylesheet}"?>}
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v6/se_date.rb b/lib/sisu/v6/se_date.rb
new file mode 100644
index 0000000..3a42233
--- /dev/null
+++ b/lib/sisu/v6/se_date.rb
@@ -0,0 +1,98 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v6/se_date.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Info_Date
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ class InfoDate
+ begin
+ require 'date'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('date NOT FOUND (LoadError)')
+ end
+ attr_accessor :dt,:t
+ def initialize
+ @dt,@t=Date.today.to_s,Time.now
+ end
+ def week
+ w=@t.strftime('%W')
+ "#{@t.year}w#{w}"
+ end
+ def month
+ "#{@t.year}#{@t.month}"
+ end
+ def year
+ @t.year
+ end
+ def weekonly
+ @t.strftime('%W')
+ end
+ def monthonly
+ @t.month
+ end
+ def year_static
+ YEAR
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v6/se_db.rb b/lib/sisu/v6/se_db.rb
new file mode 100644
index 0000000..37b51ed
--- /dev/null
+++ b/lib/sisu/v6/se_db.rb
@@ -0,0 +1,215 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v6/se_db.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Info_Db
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ require_relative 'se_info_env' # se_info_env.rb
+ class InfoDb < SiSU_Info_Env::InfoEnv # se_info_env.rb
+ @@rc=nil
+ def initialize
+ @@pwd=@pwd=SiSU_Utils::Path.new.base_markup
+ @env=SiSU_Env::InfoEnv.new
+ pt=Pathname.new(@pwd)
+ r=Px[:lng_lst_rgx]
+ u=/.+?\/([^\/]+)(?:\/(?:#{r})$|$)/
+ @pwd_stub=pt.realpath.to_s[u,1]
+ @rc=@@rc ||=SiSU_Env::GetInit.new.sisu_yaml.rc
+ @defaults=SiSU_Env::InfoEnv.new.defaults
+ end
+ def share_source?
+ ((defined? @rc['db']['share_source']) \
+ && @rc['db']['share_source']==true) \
+ ? @rc['db']['share_source']
+ : false
+ end
+ def engine
+ def default
+ ((defined? @rc['db']['engine']['default']) \
+ && @rc['db']['engine']['default']=~/postgresql|sqlite/) \
+ ? @rc['db']['engine']['default']
+ : 'sqlite'
+ end
+ self
+ end
+ def psql
+ def user(opt=nil)
+ if opt \
+ and opt.mod.inspect =~/--db-user[=-]["']?(\S+)["']+/
+ $1
+ elsif opt \
+ and opt.mod =~/--webserv[=-]webrick/
+ @env.user
+ else
+ ((defined? @rc['db']['postgresql']['user']) \
+ && @rc['db']['postgresql']['user']=~/\S+/) \
+ ? @rc['db']['postgresql']['user']
+ : @env.user
+ end
+ end
+ def db #db_name
+ "#{Db[:name_prefix]}#{@pwd_stub}"
+ end
+ def port #PGPORT
+ ((defined? @rc['db']['postgresql']['port']) \
+ && ( @rc['db']['postgresql']['port'] =~/\d+/ \
+ || @rc['db']['postgresql']['port'].is_a?(Fixnum))) \
+ ? @rc['db']['postgresql']['port']
+ : (@defaults[:postgresql_port])
+ end
+ def password
+ ((defined? @rc['db']['postgresql']['password']) \
+ && @rc['db']['postgresql']['password']=~/\S+/) \
+ ? @rc['db']['postgresql']['password']
+ : ''
+ end
+ def host
+ ((defined? @rc['db']['postgresql']['host']) \
+ && @rc['db']['postgresql']['host']=~/(?:\S{1,3}\.){3}\S{1,3}|\S+?\.\S+/) \
+ ? @rc['db']['postgresql']['host']
+ : ''
+ end
+ def dbi
+ PG::Connection.open(:dbname => psql.db)
+ end
+ def dbi_
+ (psql.host =~/(?:\S{1,3}\.){3}\S{1,3}|\S+?\.\S+/) \
+ ? "DBI:Pg:database=#{psql.db};host=#{psql.host};port=#{psql.port}"
+ : "DBI:Pg:database=#{psql.db};port=#{psql.port}"
+ end
+ def conn_dbi
+ DBI.connect(psql.dbi,psql.user,psql.db)
+ end
+ def conn_pg
+ require 'pg'
+ PG::Connection.new(dbname: psql.db, port: psql.port)
+ end
+ self
+ end
+ def sqlite
+ def db
+ "#{@env.path.webserv}/#{@pwd_stub}/sisu_sqlite.db"
+ end
+ def db_discrete(md)
+ # "#{@env.path.webserv}/#{@pwd_stub}/sisu_sqlite.db"
+ end
+ def dbi
+ "DBI:SQLite3:#{sqlite.db}" #sqlite3 ?
+ end
+ def sqlite3
+ sqlite.db #sqlite3 ?
+ end
+ def conn_dbi
+ DBI.connect(sqlite.dbi)
+ end
+ def conn_sqlite3
+ SQLite3::Database.new(sqlite.sqlite3)
+ end
+ self
+ end
+ end
+end
+module SiSU_Db_Op
+ require_relative 'constants' # constants.rb
+ require_relative 'utils' # utils.rb
+ class DbOp < SiSU_Info_Db::InfoDb
+ def initialize(md)
+ begin
+ @md=md
+ rescue
+ SiSU_Screen::Ansi.new(md.opt.cmd,$!,$@).rescue do
+ __LINE__.to_s + ':' + __FILE__
+ end
+ ensure
+ end
+ end
+ def sqlite_discrete
+ def db
+ @md.file.output_path.sqlite_discrete.dir \
+ + '/' \
+ + @md.file.base_filename.sqlite_discrete
+ end
+ def dbi
+ "DBI:SQLite3:#{sqlite_discrete.db}"
+ end
+ def sqlite3
+ sqlite_discrete.db
+ end
+ def conn_dbi
+ DBI.connect(sqlite_discrete.dbi)
+ end
+ def conn_sqlite3
+ begin
+ $sqlite3=:yes
+ require 'sqlite3'
+ SQLite3::Database.new(sqlite_discrete.sqlite3)
+ rescue LoadError
+ $sqlite3=:no
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('sqlite3 NOT FOUND (LoadError)')
+ end
+ end
+ self
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v6/se_envcall.rb b/lib/sisu/v6/se_envcall.rb
new file mode 100644
index 0000000..3727baf
--- /dev/null
+++ b/lib/sisu/v6/se_envcall.rb
@@ -0,0 +1,329 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v6/se_envcall.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=end
+module SiSU_Env_Call
+ begin
+ require 'singleton'
+ rescue LoadError
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
+ error('singleton NOT FOUND (LoadError)')
+ end
+ class EnvCall
+ @@rc,@@fns,@@fnn,@@fnb,@@fnt,@@flv,@@fnz=nil,nil,nil,nil,nil,nil,nil
+ @@ad={}
+ attr_accessor :rc,:fnn,:fnb,:fnt,:fnv,:fnz,:ad
+ def initialize(fns='')
+ @fns=fns
+ @sys=SiSU_Info_Sys::InfoSystem.instance
+ get_init=SiSU_Env::GetInit.new
+ @rc=get_init.sisu_yaml.rc
+ @ad=get_init.ads
+ if @fns \
+ and @fns != '' \
+ and @fns !=@@fns
+ @@fns,@@fnn,@@fnb,@@fnt,@@flv,@@fnz=@fns,nil,nil,nil,nil,nil
+ end
+ if @fns \
+ and @fns != '' #watch
+ m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm|ssi)$/
+ @@fnn ||=@fns[m,1]
+ @@fnb ||=@fns[m,2]
+ @@fnt ||=@fns[m,3]
+ @@flv ||=document_language_versions_found[:f]
+ unless @@fns =~/\S+?\.txz/
+ @@fnz ||=if @@fns =~/(?:\~\S{2,3})?\.(?:ssm\.sst|ssm)$/; @@fnb + '.ssm.txz'
+ elsif @@fnb; @@fnb + '.sst.txz'
+ else '' # e.g. termsheet
+ end
+ end
+ end
+ @fnn,@fnb,@fnt,@flv,@fnz=@@fnn,@@fnb,@@fnt,@@flv,@@fnz
+ end
+ def default_language?
+ if @rc \
+ && defined? @rc['language_default']
+ if (@rc['language_default'].is_a?(String)) \
+ && (@rc['language_default'] =~/#{Px[:lng_lst_rgx]}/)
+ @rc['language_default']
+ else 'en'
+ end
+ else 'en'
+ end
+ end
+ def mono_multi_lingual?
+ if @rc \
+ && defined? @rc['lingual']
+ if (@rc['lingual'].is_a?(String)) \
+ && (@rc['lingual'] =~/mono(?:lingual)?/)
+ :mono
+ elsif (@rc['lingual'].is_a?(String)) \
+ && (@rc['lingual'] =~/multi(?:lingual)?/)
+ :multi
+ else :multi
+ end
+ else :multi
+ end
+ end
+ def output_dir_structure
+ def by?
+ output_structure=:filename #set default output structure
+ if @rc \
+ && defined? @rc['output_dir_structure_by']
+ output_structure=if (@rc['output_dir_structure_by'] =~/dump/) \
+ or ((defined? @rc['output_structure']['dump']) \
+ && @rc['output_structure']['dump'] ==true)
+ :dump
+ elsif (@rc['output_dir_structure_by'] =~/redirect/) \
+ or ((defined? @rc['output_structure']['redirect']) \
+ && @rc['output_structure']['redirect'] ==true)
+ :redirect
+ elsif (@rc['output_dir_structure_by'] =~/language/) \
+ or ((defined? @rc['output_structure']['by_language']) \
+ && @rc['output_structure']['by_language'] ==true)
+ :language
+ elsif (@rc['output_dir_structure_by'] =~/filetype/) \
+ or ((defined? @rc['output_structure']['by_filetype']) \
+ && @rc['output_structure']['by_filetype'] ==true)
+ :filetype
+ elsif (@rc['output_dir_structure_by'] =~/filename/) \
+ or ((defined? @rc['output_structure']['by_filename']) \
+ && @rc['output_structure']['by_filename'] ==true)
+ :filename
+ else #set default
+ :language
+ end
+ else #set default
+ :language
+ end
+ end
+ def dump?
+ ((by?) ==:dump) \
+ ? true
+ : false
+ end
+ def redirect?
+ ((by?) ==:redirect) \
+ ? true
+ : false
+ end
+ def by_language_code?
+ ((by?) ==:language) \
+ ? true
+ : false
+ end
+ def by_filetype?
+ ((by?) ==:filetype) \
+ ? true
+ : false
+ end
+ def by_filename?
+ ((by?) ==:filename) \
+ ? true
+ : false
+ end
+ def multilingual?
+ by_language_code?
+ end
+ self
+ end
+ def document_language_versions_found #REVISIT
+ @fn={}
+ filename=(@fns =~/\.ssm\.sst$/) \
+ ? @fns.gsub(/\.ssm\.sst$/,'.ssm')
+ : @fns
+ if filename.is_a?(String) \
+ and not filename.empty?
+ if output_dir_structure.by_language_code?
+ m=/((.+?)(?:\~\w{2,3})?)\.(sst|ssm)$/
+ @fn[:b],@fn[:m],@fn[:t]=filename[m,1],filename[m,2],filename[m,3]
+ else m=/(.+?)\.(sst|ssm)$/
+ @fn[:b]=@fn[:m]=filename[m,1]
+ @fn[:t]=filename[m,2]
+ end
+ end
+ lng_base=SiSU_Env::InfoEnv.new.language_default_set
+ lang=SiSU_Env::StandardiseLanguage.new
+ langs=lang.codes
+ x=[]
+ if FileTest.file?("#{@fn[:m]}.#{@fn[:t]}")
+ n=@fn[:m].gsub(/^.+?\//,'')
+ n =n + '.' + @fn[:t]
+ x << { f: "#{@fn[:m]}.#{@fn[:t]}", l: lng_base, n: n }
+ end
+ langs.each do |l|
+ lng=SiSU_Env::StandardiseLanguage.new(l)
+ if FileTest.file?("#{@fn[:m]}~#{lng.code}.#{@fn[:t]}")
+ x << { f: "#{@fn[:m]}~#{lng.code}.#{@fn[:t]}", l: lng.code }
+ elsif FileTest.file?("#{@fn[:m]}~#{lng.name}.#{@fn[:t]}")
+ x << { f: "#{@fn[:m]}~#{lng.name}.#{@fn[:t]}", l: lng.code }
+ end
+ if FileTest.file?("#{lng.code}/#{@fn[:m]}~#{lng.code}.#{@fn[:t]}")
+ if FileTest.file?("#{lng.code}/#{@fn[:m]}~#{lng.code}.#{@fn[:t]}")
+ x << { f: "#{lng.code}/#{@fn[:m]}~#{lng.code}.#{@fn[:t]}", l: lng.code }
+ elsif FileTest.file?("#{lng.code}/#{@fn[:m]}~#{lng.name}.#{@fn[:t]}")
+ x << { f: "#{lng.code}/#{@fn[:m]}~#{lng.name}.#{@fn[:t]}", l: lng.code }
+ end
+ end
+ if FileTest.file?("#{lng.code}/#{@fn[:m]}.#{@fn[:t]}")
+ if FileTest.file?("#{lng.code}/#{@fn[:m]}.#{@fn[:t]}")
+ x << { f: "#{lng.code}/#{@fn[:m]}.#{@fn[:t]}", l: lng.code }
+ elsif FileTest.file?("#{lng.code}/#{@fn[:m]}.#{@fn[:t]}")
+ x << { f: "#{lng.code}/#{@fn[:m]}.#{@fn[:t]}", l: lng.code }
+ end
+ end
+ end
+ @fn[:f]=x
+ @fn
+ end
+ def published_manifests?(output_base)
+ @fn={}
+ @m=[]
+ unless (@fns.nil? \
+ or @fns.empty?)
+ if output_dir_structure.by_language_code?
+ m=/((.+?)(?:\~\w{2,3})?)\.((?:-|ssm\.)?sst$)/
+ @fn[:b],@fn[:m],@fn[:t]=@fns[m,1],@fns[m,2],@fns[m,3]
+ else m=/(.+?)\.((?:-|ssm\.)?sst$)/
+ @fn[:b]=@fn[:m]=@fns[m,1]
+ @fn[:t]=@fns[m,2]
+ end
+ end
+ lang=SiSU_Env::StandardiseLanguage.new
+ langs=lang.codes
+ x=[]
+ if FileTest.file?("#{@fn[:m]}.#{@fn[:t]}"); x << "#{@fn[:m]}.#{@fn[:t]}"
+ end
+ dir=SiSU_Env::InfoEnv.new(@fns)
+ @m << { m: 'sisu_manifest.html', l: 'English' } #fix later, default language
+ langs.each do |l|
+ lng=SiSU_Env::StandardiseLanguage.new(l)
+ fns_c="#{@fn[:m]}~#{lng.code}.#{@fn[:t]}"
+ fns_l="#{@fn[:m]}~#{lng.name}.#{@fn[:t]}"
+ if FileTest.file?(fns_c)
+ fn_set_lang=SiSU_Env::StandardiseLanguage.new.
+ file_to_language(fns_c) #reconsider file_to_language
+ lng=fn_set_lang[:n]
+ fn=SiSU_Env::EnvCall.new(fns_c).lang(fn_set_lang[:c])
+ @m << { m: fn[:manifest], l: lng }
+ elsif FileTest.file?(fns_l)
+ fn_set_lang=SiSU_Env::StandardiseLanguage.new.
+ file_to_language(fns_l) #reconsider file_to_language
+ @fnl=dir.i18n.lang_filename(fn_set_lang[:c])
+ fn=SiSU_Env::EnvCall.new(fns_l).lang(fn_set_lang[:c])
+ @m << { m: fn[:manifest], l: lng }
+ end
+ end
+ @m=@m.uniq
+ end
+ def filename(code,name,suffix)
+ "#{name}#{suffix}"
+ end
+ def lang(code)
+ {
+ html: filename(code,'','.html'),
+ book_index: filename(code,'book_index','.html'),
+ concordance: filename(code,'concordance','.html'),
+ sax: filename(code,'sax','.xml'),
+ dom: filename(code,'dom','.xml'),
+ docbook: filename(code,'docbook','.xml'),
+ xhtml: filename(code,'scroll','.xhtml'),
+ pdf_l: filename(code,'','.pdf'),
+ pdf_p: filename(code,'','.pdf'),
+ pdf_l_a4: filename(code,"a4",'.pdf'),
+ pdf_p_a4: filename(code,"a4",'.pdf'),
+ pdf_l_a5: filename(code,"a5",'.pdf'),
+ pdf_p_a5: filename(code,"a5",'.pdf'),
+ pdf_l_b5: filename(code,"b5",'.pdf'),
+ pdf_p_b5: filename(code,"b5",'.pdf'),
+ pdf_l_letter: filename(code,"letter",'.pdf'),
+ pdf_p_letter: filename(code,"letter",'.pdf'),
+ pdf_l_legal: filename(code,"legal",'.pdf'),
+ pdf_p_legal: filename(code,"legal",'.pdf'),
+ toc: filename(code,'toc','.html'),
+ doc: filename(code,fnb,'.html'),
+ index: filename(code,'index','.html'),
+ po: filename(code,@fns,'.po'),
+ pot: filename(code,@fns,'.pot'),
+ odf: filename(code,'','.odt'),
+ epub: filename(code,'','.epub'),
+ plain: filename(code,'','.txt'),
+ qrcode: filename(code,'','.jpg'),
+ manpage: filename(code,'','.1'), #fix, section number
+ wiki: filename(code,'wiki','.txt'),
+ digest: filename(code,'digest','.txt'),
+ metadata: filename(code,'metadata','.html'), #chk
+ manifest: filename(code,'manifest','.html'),
+ oai_pmh: filename(code,'oai_pmh','.xml'),
+ sitemap: filename(code,'sitemap','.xml'),
+ sitemap_touch: filename(code,"sitemap_#{fnb}",'.xml'),
+ sxs: filename(code,fnb,'.sxs.xml'),
+ sxd: filename(code,fnb,'.sxd.xml'),
+ sxn: filename(code,fnb,'.sxn.xml'),
+ sisupod: filename(nil,@fnz,''),
+ book_idx_html: filename(code,'book_index','.html'),
+ book_idx_epub: filename(code,'book_index','.xhtml'),
+ epub_concord: filename(code,'concordance','.xhtml'),
+ }
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v6/se_file_op.rb b/lib/sisu/v6/se_file_op.rb
new file mode 100644
index 0000000..1dc0277
--- /dev/null
+++ b/lib/sisu/v6/se_file_op.rb
@@ -0,0 +1,2662 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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>
+
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.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>
+
+ * Download:
+ <http://www.sisudoc.org/sisu/en/SiSU/download.html>
+
+ * Git
+ <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
+ <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v6/se_file_op.rb;hb=HEAD>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: system environment, resource control and configuration details
+
+=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
+ 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.cmd,$!,$@).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
+ d