diff options
author | Ralph Amissah <ralph.amissah@gmail.com> | 2021-04-02 19:37:00 -0400 |
---|---|---|
committer | Ralph Amissah <ralph.amissah@gmail.com> | 2021-04-02 20:03:27 -0400 |
commit | 90051a7ea55acb043434b1c2483b878d602246ba (patch) | |
tree | 9e803c11a0ac4e37023b3c79f19f5b372d4175ee /org/hub.org | |
parent | nix ruby 3.0 (available) (diff) |
org mode (ruby code within)
Diffstat (limited to 'org/hub.org')
-rw-r--r-- | org/hub.org | 3163 |
1 files changed, 3163 insertions, 0 deletions
diff --git a/org/hub.org b/org/hub.org new file mode 100644 index 00000000..3199aa35 --- /dev/null +++ b/org/hub.org @@ -0,0 +1,3163 @@ +-*- mode: org -*- +#+TITLE: sisu hub +#+DESCRIPTION: documents - structuring, various output representations & search +#+FILETAGS: :sisu:hub: +#+AUTHOR: Ralph Amissah +#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] +#+COPYRIGHT: Copyright (C) 2015 - 2021 Ralph Amissah +#+LANGUAGE: en +#+STARTUP: content hideblocks hidestars noindent entitiespretty +#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t +#+PROPERTY: header-args :exports code +#+PROPERTY: header-args+ :noweb yes +#+PROPERTY: header-args+ :eval no +#+PROPERTY: header-args+ :results no +#+PROPERTY: header-args+ :cache no +#+PROPERTY: header-args+ :padline no + +* hub +** hub.rb + +#+BEGIN_SRC ruby :tangle "../lib/sisu/hub.rb" +# <<sisu_document_header>> +module SiSU + require_relative 'constants' # constants.rb + require_relative 'se' # se.rb + include SiSU_Env + include SiSU_Screen + require_relative 'hub_actions' # hub_actions.rb + require_relative 'hub_loop_markup_files' # hub_loop_markup_files.rb + require_relative 'hub_options' # hub_options.rb + require_relative 'dp' # dp.rb + include SiSU_Param + require_relative 'utils' # utils.rb + begin + require 'uri' + rescue LoadError + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('uri NOT FOUND (LoadError)') + end + class HubMaster + def initialize(argv,sisu_runtime) + begin + opt=SiSU_Commandline::Options.new(argv,sisu_runtime) + SiSU::Processing.new(opt).actions_without_files + SiSU::Processing.new(opt).actions_on_files + SiSU::Processing.new(opt).actions_without_files_post + rescue + selection=(opt ? opt.selections.src : argv) + SiSU_Screen::Ansi.new(selection,$!,$@).rescue do + __LINE__.to_s + ':' + __FILE__ + end + ensure + Dir.chdir(sisu_runtime[:call_path]) + end + end + end + class Processing + begin + require 'fileutils' + include FileUtils + rescue LoadError + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('fileutils NOT FOUND (LoadError)') + end + @@env=nil + attr_accessor :op + def initialize(opt) + @opt=opt + @@env=@env=SiSU_Env::InfoEnv.new + @msg,@msgs='',nil + @tell=lambda { + SiSU_Screen::Ansi.new( + @opt.selections.str, + @msg, + "#{@msgs.inspect if @msgs}" + ) + } + end + def remove_skipped_files_if_any_from_processing_files_array + if @remove_faulty_markup_files_array.length > 0 + @opt.files = (@opt.files - @remove_faulty_markup_files_array) + end + end + def print_error_message_if_files_skipped + if @remove_faulty_markup_files_array.length > 0 + puts '---' + STDERR.puts 'ERROR with file(s), did not process: ' + + @remove_faulty_markup_files_array.join(',') + end + end + def do_each_file_loop_check_and_perform_selected_actions(opt) + actions=SiSU_Hub_Actions::HubActions.new(opt) + actions.outputs.each_file.abstract_objects? + actions.outputs.each_file.qrcode? + actions.outputs.each_file.hash_digests? + actions.outputs.each_file.text? + actions.outputs.each_file.html? + actions.outputs.each_file.xhtml? + actions.outputs.each_file.xml? + actions.outputs.each_file.json? + actions.outputs.each_file.pdf? + actions.outputs.each_file.man_or_info? + actions.outputs.each_file.po4a_make? + actions.outputs.each_file.sqlite_discrete? + actions.outputs.each_file.manifest? + end + def do_each_file_loop_options + if @opt.files.length > 0 + @opt.files.each_with_index do |fno,i| + @opt.fno=fno + @opt.fns=fno. + gsub(/(?:https?|file):\/\/\S+\/(\S+)\.sst$/,'\1.-sst'). + gsub(/\.ssm$/,'.ssm.sst') + @opt.f_pth=@opt.f_pths[i] + if @opt.fns !~/\.-sst$/ + @opt.pth=@opt.f_pths[i][:pth] + @opt.lng=@opt.f_pths[i][:lng] + else + @opt.pth=Dir.pwd + @opt.lng='en' + end + unless @opt.pth.nil? + @@pwd=@opt.pth + Dir.chdir(@opt.pth) #watch + end + #@env=SiSU_Env::InfoEnv.new(@opt.fns) + do_each_file_loop_check_and_perform_selected_actions(@opt) + end + else + do_each_file_loop_check_and_perform_selected_actions(@opt) + end + end + def do_loop_files_on_given_option_pre + begin + if @opt.act[:zap][:set]==:on #% --zap, -Z + SiSU_Hub_Loops::OptionLoopFiles.new(@opt).loop_files_on_given_option do + require_relative 'zap' + SiSU_Zap::Source.new(@opt).read # -Z zap.rb + end + end + ensure + end + end + def do_loop_files_on_given_option_post + actions=SiSU_Hub_Actions::HubActions.new(@opt) + if defined? actions.outputs.loop_files.share_source? + actions.outputs.loop_files.share_source? + end + if defined? actions.outputs.loop_files.run_termsheet? + actions.outputs.loop_files.run_termsheet? + end + if defined? actions.outputs.loop_files.po4a_setup? + actions.outputs.loop_files.po4a_setup? + end + if defined? actions.outputs.loop_files.sql? + actions.outputs.loop_files.sql? + end + SiSU_Hub_Actions::Operations.new.counter + if defined? actions.outputs.loop_files.manifest? + actions.outputs.loop_files.manifest? + end + if defined? actions.outputs.loop_files.sitemaps? + actions.outputs.loop_files.sitemaps? + end + if defined? actions.outputs.loop_files.urls? + actions.outputs.loop_files.urls? + end + end + def actions_without_files + actions=SiSU_Hub_Actions::HubActions.new(@opt) + actions.report.version_info? + actions.report.version_info_extra? + actions.prepare.site? + actions.prepare.sql? + end + def actions_without_files_post + actions=SiSU_Hub_Actions::HubActions.new(@opt) + actions.prepare.remote_site? + actions.prepare.search_form? + actions.prepare.webrick? + end + def actions_on_files + if @opt.act[:profile][:set]==:on + begin + require 'profile' + rescue LoadError + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('profile NOT FOUND (LoadError)') + end + end + actions=SiSU_Hub_Actions::HubActions.new(@opt) + actions.outputs.each_file.harvest? + actions.outputs.init? + do_loop_files_on_given_option_pre + do_each_file_loop_options + #remove_skipped_files_if_any_from_processing_files_array # NEEDS WORK + do_loop_files_on_given_option_post + #print_error_message_if_files_skipped + if (@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + @msg,@msgs="\tsisu -W [to start ruby web-server on output directory]\n",nil + end + if (@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on \ + || @opt.act[:urls_selected][:set]==:on \ + || @opt.act[:urls_all][:set]==:on) + @tell.call.print_brown unless @opt.files.join.empty? + end + if defined? @@env.processing_path.processing \ + and @@env.user \ + and FileTest.directory?(@@env.processing_path.processing) \ + and @@env.processing_path.processing =~/#{@@env.user}$/ + #clean tmp processing dir of content as is located in public area + if @@env.processing_path.processing_base_tmp =~/^\/tmp\/\S+/ + FileUtils::cd(@@env.processing_path.processing_base_tmp) do + FileUtils::rm_rf('.') unless @opt.act[:maintenance][:set] ==:on + end + end + end + end + end + class HubClose + def initialize(call_path,argv) + begin + env=SiSU_Env::InfoEnv.new + rescue + ensure + if FileTest.directory?(env.processing_path.processing) \ + and FileTest.directory?(env.processing_path.processing_base_tmp) \ + and env.processing_path.processing_base_tmp =~ /#{env.processing_path.processing}/ \ + and env.processing_path.processing_base_tmp =~/^\/tmp\/\S+/ \ + and not argv.inspect =~/"--maintenance"|"-M"/ + FileUtils::cd(env.processing_path.processing_base_tmp) do + FileUtils::rm_rf('.') + end + end + Dir.chdir(call_path) + end + end + end +end +__END__ +#+END_SRC + +** hub_options.rb + +#+BEGIN_SRC ruby :tangle "../lib/sisu/hub_options.rb" +# <<sisu_document_header>> +module SiSU_Commandline + begin + require 'pathname' + rescue LoadError + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('pathname NOT FOUND (LoadError)') + end + require_relative 'se' # se.rb + require_relative 'dp_make' # dp_make.rb + class HeaderCommon + def sisu_document_make_instructions(make_instruct_array=:nil) + @pagenew= + @pagebreak= + @pageline= + @toc= + @lv1=@lv2=@lv3=@lv4=@lv5=@lv6= + @num_top= + @i18n= + @man_section= + @emphasis_set_to= + @bold_match_list= + @italics_match_list= + @substitution_match_list= + @footer_links= + @home_button_links= + @links= + nil + make_instruct_array=make_instruct_array==:nil \ + ? SiSU_Env::GetInit.new.sisu_document_make.makefile_read + : make_instruct_array + @makeset=false + if make_instruct_array + make_instruct_array.each do |para| #% scan document + if para =~/^(?:@make:|@links:)[+-]?\s/ + case para + when /^@make:(.+)/m #% header processing - make + @env=SiSU_Env::InfoEnv.new + @make=SiSU_Param_Make::MdMake.new($1.strip,@opt,@env).make + makes=SiSU_Param_Make::MakeHead.new(@make).make_instruct + @makeset=true + @pagenew=makes[:pagenew] + @pagebreak=makes[:pagenew] + @pageline=makes[:pageline] + @toc=makes[:toc] + @lv1=makes[:lv1] + @lv2=makes[:lv2] + @lv3=makes[:lv3] + @lv4=makes[:lv4] + @lv5=makes[:lv5] + @lv6=makes[:lv6] + @num_top=makes[:num_top] + @i18n=makes[:i18n] + @man_section=makes[:man_section] + @emphasis_set_to=makes[:emphasis_set_to] + @bold_match_list=makes[:bold_match_list] + @italics_match_list=makes[:italics_match_list] + @substitution_match_list=makes[:substitution_match_list] + @footer_links=makes[:footer_links] + @home_button_links=makes[:home_button_links] + @home_button_image=makes[:home_button_image] + @cover_image=makes[:cover_image] + when /^@links:(.+)/m #% header processing - make + make_links=SiSU_Param::Parameters::MdMake.new($1.strip,@opt,@env).make_links + @links,@links_append=make_links.links,make_links.append? + end + end + end #% here endeth the common header loop + end + { makeset: @makeset, + pagenew: @pagenew, + pagebreak: @pagebreak, + pageline: @pageline, + toc: @toc, + lv1: @lv1, + lv2: @lv2, + lv3: @lv3, + lv4: @lv4, + lv5: @lv5, + lv6: @lv6, + num_top: @num_top, + i18n: @i18n, + man_section: @man_section, + emphasis_set_to: @emphasis_set_to, + bold_match_list: @bold_match_list, + italics_match_list: @italics_match_list, + substitution_match_list: @substitution_match_list, + footer_links: @footer_links, + home_button_links: @home_button_links, + home_button_image: @home_button_image, + cover_image: @cover_image, + links: @links, + links_append: @links_append + } + end + end + class Options + attr_accessor :selections,:opt_ch,:act,:dir_structure_by,:lingual,:f_pths,:files,:files_mod,:call_path,:base_path,:base_stub,:sub_location,:image_src_path,:paths,:lngs,:f_pth,:pth,:fno,:fns,:fnb,:fnc,:fng,:fncb,:lng,:lng_base,:what,:make_instructions,:make_instructions_pod,:sisu_run_path,:sisu_install_type + @@act=nil + def initialize(a,sisu_runtime) + @opt_ch=@f_pth=@pth=@fno=@fns=@fnb=@fnc=@fng=@fncb=@what=@lng=@lng_base=@call_path=@base_path=@base_stub=@image_src_path=@sub_location='' + @f_pths,@files,@files_mod,@paths,@select_arr,@act=Array.new(5){[]} + @select_str=nil + @env=SiSU_Env::InfoEnv.new + @lng_base=@env.language_default_set + @dir_structure_by=SiSU_Env::EnvCall.new.output_dir_structure.by? + @lingual=SiSU_Env::EnvCall.new.mono_multi_lingual? + @sisu_run_from=sisu_runtime[:runtime_path] + @sisu_install_type=sisu_runtime[:runtime_type] + @call_path=sisu_runtime[:call_path] + pth=SiSU_Utils::Path.new(call_path) + @base_path=pth.base_markup + @base_stub=pth.base_markup_stub + @image_src_path=pth.image_src + @a=sisu_glob_rules(a) + @a.freeze + @make_instructions=HeaderCommon.new.sisu_document_make_instructions + @make_instructions_pod=nil + init + end + def sisu_called_from? + @call_path + end + def sisu_bin_filepath? + @sisu_run_from + end + def sisu_install_type? + @sisu_install_type + end + def sisu_lib_dir? + File.dirname(__FILE__) + end + def sisu_data_dir? + env=RbConfig::CONFIG + if sisu_install_type? ==:full_path_to_sisu_bin_in_sisu_dir_tree + sisu_bin_filepath?.gsub(/\/bin\/sisu\S*/,'/data/sisu') + #sisu_lib_dir?.gsub(/\/lib\/sisu\/(?:current|develop)\S*/,'/data/sisu') + elsif sisu_install_type? ==:gem_install + #sisu_run_from?.gsub(/\/bin\/.+/,'/data/sisu') + env['datadir'] + elsif sisu_install_type? ==:system_install + #SiSU_Info_Env::InfoEnv.new.path.share + env['datadir'] + else + env['datadir'] + end + end + def find_all(find_flag,opt) + if find_flag + x=Dir.glob('*.ss[tm]') + Px[:lng_lst].each do |d| + if FileTest.directory?(d) + x << Dir.glob("#{d}/*.ss[tm]") + end + end + x=x.flatten + opt + x + end + end + def find_select(find_flag,opt) + if find_flag + x=[] + if opt.inspect =~/"[a-zA-Z][a-zA-Z0-9._-]+?"/ + opt.each do |g| + x <<=if g =~/.ss[tm]/ + Dir.glob("*#{g}") + else + Dir.glob("*#{g}*.ss[tm]") + end + Px[:lng_lst].each do |d| + if FileTest.directory?(d) + x <<=if g =~/.ss[tm]/ + Dir.glob("#{d}/*#{g}") + else + Dir.glob("#{d}/*#{g}*.ss[tm]") + end + end + end + end + end + x.flatten + end + end + def sisu_glob_rules(a) + a=if a.inspect =~/"-[A-Za-z0-9]*[fG]/ \ + or a.inspect =~/"--find"|"--glob"/ + b,f=[],[] + find_flag=false + a.each do |y| + if y =~ /^-/ + if y =~/^-/ \ + && y =~/[fG]|--find|--glob/ + find_flag=true + end + b << y + end + if find_flag \ + && y !~ /^-/ \ + && y =~ /\S+/ + if y !~/\// + f << y + else + find_flag=false + puts %{sub-directories "#{y}" cannot be provided for --find or --glob at this time} + end + end + end + r=Px[:lng_lst_rgx].gsub(/\|#{lng_base}\|/,'|') + @lang_regx=%r{(?:#{r})} + if find_flag + (f.length > 0) \ + ? (b + find_select(find_flag,f)) + : find_all(find_flag,b) + elsif a.inspect =~/"(?:-\S+?|--\S+?)"/ \ + && a.inspect =~/"#{@lang_regx}\/?"/ \ + && a.inspect =~/"#{lng_base}\/\S+?\.ss[tm]"/ + init_selected_lang_dirs(a) + else b + end + else a + end + end + def init_selected_lang_dirs(a) + @z=a.each.map do |y| + if y =~/^#{lng_base}\/(\S+?\.ss[tm])$/ + @fn=$1 + y + elsif y =~/^#{@lang_regx}\/?$/ + "#{y}/#{@fn}" + else y + end + end + end + def init + a=@a + s=expand_numeric_shortcuts(a) + q=set_files_and_paths_and_general_extract(s) + files=(q[:files].length > 0) ? :true : :false + @select_arr=opt_cmd_and_mod_adjust(q[:opt_ch],q[:selections],files) + if a.length > 0 + @what=q[:what] unless q[:what].empty? + @paths = q[:paths] + @files = q[:files] + @f_pths = q[:f_pths] + @lngs = q[:lngs] + if @files.length > 0 \ + and @opt_ch.empty? \ + and @select_arr.length==0 #% if no other action called on filename given, default is sisu --v5 -0 [filename(s)] configured as flag default + shortcut=SiSU_Env::InfoProcessingFlag.new + @select_arr=['--v5'] + @select_arr << shortcut.act_0.arr #+ ' --dal' + end + if @select_arr.inspect =~/--verbose/ \ + && @opt_ch !~/-[ku]*v[ku]*$/ + SiSU_Screen::Ansi.new( + @opt_ch, + "\tsisu " + @opt_ch + ' ' + @select_arr.join(' ') + ' ' + @files.join(' ') + "\n" + ).print_brown + end + end + @@act ? @act=@@act : @@act=@act=opt_act + self + end + def sisu_document_make_pod + def makefile_name + SiSU_Env::GetInit.new.sisu_document_make.makefile_name + end + def makefile(pod_make_path) + "#{pod_make_path}/#{makefile_name}" + end + def makefile_read(pod_make_path) + if FileTest.file?(makefile(pod_make_path)) + sisu_doc_makefile=IO.read(makefile(pod_make_path), mode: 'r:utf-8') + sisu_doc_makefile.split(/\s*\n\s*\n/m) + else nil + end + end + self + end + def set_files_and_paths_and_general_extract(s) + c,w='','' + m,f,pth,lng,lngs=[],[],[],[],[] + lng_is='' + a=(s.nil?) \ + ? ['-v'] + : s.split(/\s+/) + r_l=Px[:lng_lst].join('|') + a.uniq.each do |x| + if x =~/^-[a-z0-5]+/i \ + or x =~/^--\S+/ + if x =~/^-([a-z0-5]+)/i + c << $1 + end + if x =~/^--\S+/ + m << x + end + elsif x =~ /(?:\.(?:(?:-|ssm\.)?sst(?:\.xml)?|ssm|ssi|sx[sdn]\.xml|s[1-3]|kdi|ssp)|\S+?\.ss[mt]\.(?:txz|zip)|sisupod\.(?:txz|zip))$/ + if x =~/\S+?\.ss[mt]\.(?:txz|zip)|sisupod\.(?:txz|zip)/ + if x =~/^(?:https?|file):\/\/\S+/ #\ + end + pwd=Dir.pwd + fn_pod=x.gsub(/([^\/]+)\.txz$/,'\1') + fullname=@env.processing_path.processing + '/sisupod/' + fn_pod + pt=Pathname.new(fullname) + FileUtils::mkdir_p(pt.to_s) + pod_make_path=fullname + '/sisupod/doc/_sisu' + make_instruct_array=sisu_document_make_pod.makefile_read(pod_make_path) + @make_instructions_pod= + HeaderCommon.new.sisu_document_make_instructions(make_instruct_array) + Dir.chdir(pt.realpath) + system(" + chdir #{fullname} + tar xaf #{pwd}/#{x} + chdir #{pwd} + ") + Dir.chdir(pt.realpath.to_s + '/sisupod/doc') + r=Px[:lng_lst_rgx] + Dir.entries("#{fullname}/sisupod/doc").each do |d_lng| + if d_lng =~/^(?:#{r})$/ + Dir.chdir(pt.realpath.to_s + "/sisupod/doc/#{d_lng}") + filenames=Dir.glob("*.ss[mt]") + filenames.each do |fn| + f_pths << { + pth: "#{fullname}/sisupod/doc/#{d_lng}", + f: "#{fn}", + pth_stub: 'doc', + lng: d_lng, + lng_is: d_lng, + url_base: '', + url: '' + } + Dir.chdir(pwd) + f << fn + end + end + end + elsif x =~/^(?:https?|file):\/\/\S+/ \ + and x =~/\S+?\.ss[mt]$/ + r_url=/(http:\/\/\S+?\/\S+?\/src(?:\/(?:#{r_l}))?)\// + url_base = (x[r_url,1]) + url = x + y=x.gsub(/http:\/\/\S+?\/\S+?\/src\//,'') + t=/(#{r_l})\/[^\/]+?\.ss[tm]$/ + l_p = (y[t,1]) \ + ? y[t,1] + : nil + lng << l_p + lngs << if l_p + l_p + elsif x =~/~(#{r_l})\.ss[tm]/ + $1 + else lng_base + end + r_f=/(?:#{r_l})\/([^\/]+?\.ss[tm])$/ + fn = (y[r_f,1]) \ + ? y[r_f,1] + : y + fn=fn.gsub(/\.((?:ssm\.)?sst)/,'.-\1') + fullname=Dir.pwd + '/' + fn + pt=Pathname.new(fullname) + pth << Dir.pwd + r_u=/.+?\/([^\/]+)(?:\/(?:#{r_l})$|$)/ + lng_is =if l_p + l_p + elsif x =~/~(#{r_l})\.ss[tm]/ + $1 + else lng_base + end + f_pths << { + pth: pt.split[0].realpath.to_s, + f: pt.split[1].to_s, + pth_stub: pt.split[0].realpath.to_s[r_u,1], + lng: (pt.split[0].realpath.to_s[t,1]) \ + ? pt.split[0].realpath.to_s[t,1] + : nil, + lng_is: lng_is, + url_base: url_base, + url: url + } + f << fn + elsif FileTest.file?(x) + pt=Pathname.new(x) + pth << pt.split[0].realpath.to_s #remove? + f << pt.split[1].to_s #remove? + r_u=/.+?\/([^\/]+)(?:\/(?:#{r_l})$|$)/ + t=/.+\/(#{r_l})$/ + l_p = (pt.split[0].realpath.to_s[t,1]) \ + ? pt.split[0].realpath.to_s[t,1] + : nil + lngs << lng_is = if l_p + l_p + elsif x =~/~(#{r_l})\.ss[tm]/ + $1 + else lng_base + end + f_pths << { + pth: pt.split[0].realpath.to_s, + f: pt.split[1].to_s, + pth_stub: pt.split[0].realpath.to_s[r_u,1], + lng: lng_is, + lng_is: lng_is, + url_base: nil, + url: nil, + } + else puts "file not found: #{x}" + end + elsif x =~ /\.termsheet\.rb$/ + (FileTest.file?(x)) \ + ? (f << x) + : (puts "file not found: #{x}") + else w=x + puts "#{x} in #{a.join(' ')}?" + end + end + { + opt_ch: c, + selections: m, + what: w, + paths: pth, + files: f, + f_pths: f_pths, + lng: lng_is, + lngs: lngs, + } + end + def expand_numeric_shortcuts(a) + s='' + a.each do |x| + y=case x + when /0/ + (x=~/^-0\S+/) \ + ? x.gsub(/^-0(\S+)/,'--act0' + ' -\1') + : x.gsub(/^-0/,'--act0' + ' ') + when /1/ + (x=~/^-1\S+/) \ + ? x.gsub(/^-1(\S+)/,'--act1' + ' -\1') + : x.gsub(/^-1/,'--act1' + ' ') + when /2/ + (x=~/^-2\S+/) \ + ? x.gsub(/^-2(\S+)/,'--act2' + ' -\1') + : x.gsub(/^-2/,'--act2' + ' ') + when /3/ + (x=~/^-3\S+/) \ + ? x.gsub(/^-3(\S+)/,'--act3' + ' -\1') + : x.gsub(/^-3/,'--act3' + ' ') + when /4/ + (x=~/^-4\S+/) \ + ? x.gsub(/^-4(\S+)/,'--act4' + ' -\1') + : x.gsub(/^-4/,'--act4' + ' ') + when /5/ + (x=~/^-5\S+/) \ + ? x.gsub(/^-5(\S+)/,'--act5' + ' -\1') + : x.gsub(/^-5/,'--act5' + ' ') + when /6/ + (x=~/^-6\S+/) \ + ? x.gsub(/^-6(\S+)/,'--act6' + ' -\1') + : x.gsub(/^-6/,'--act6' + ' ') + when /7/ + (x=~/^-7\S+/) \ + ? x.gsub(/^-7(\S+)/,'--act7' + ' -\1') + : x.gsub(/^-7/,'--act7' + ' ') + when /8/ + (x=~/^-8\S+/) \ + ? x.gsub(/^-8(\S+)/,'--act8' + ' -\1') + : x.gsub(/^-8/,'--act8' + ' ') + when /9/ + (x=~/^-9\S+/) \ + ? x.gsub(/^-9(\S+)/,'--act9' + ' -\1') + : x.gsub(/^-9/,'--act9' + ' ') + else x + end + s << " #{y}" unless y.empty? + end + s.strip! + end + def opt_cmd_and_mod_adjust(ch,select_arr,files) + select_arr=select_arr.flatten + sel_init=select_arr.flatten + shortcut=SiSU_Env::InfoProcessingFlag.new + if files ==:true + if not sel_init.empty? \ + and sel_init.inspect =~/"--act[s0-9]?/ + sel_init.each do |s| + select_arr <<=case s + when /--act0/ then shortcut.act_0.arr + when /--act1/ then shortcut.act_1.arr + when /--act2/ then shortcut.act_2.arr + when /--act3/ then shortcut.act_3.arr + when /--act4/ then shortcut.act_4.arr + when /--act5/ then shortcut.act_5.arr + when /--act6/ then shortcut.act_6.arr + when /--act7/ then shortcut.act_7.arr + when /--act8/ then shortcut.act_8.arr + when /--act9/ then shortcut.act_9.arr + when /--act/ then shortcut.act_info + end + end + end + if not sel_init.empty? \ + and sel_init.inspect =~/"--pdf-/ + select_arr << '--pdf' + sel_init.each do |s| + if s =~ /^--pdf-(?:(?:l|landscape)(?:-(?:a4|letter|a5|b5|legal))?|(?:a4|letter|a5|b5|legal)-(?:l|landscape))$/ + select_arr << '--landscape' + end + if s =~ /^--pdf-(?:(?:p|portrait)(?:-(?:a4|letter|a5|b5|legal))?|(?:a4|letter|a5|b5|legal)-(?:p|portrait))$/ + select_arr << '--portrait' + end + if s =~ /^--pdf(?:-(?:a4|letter|a5|b5|legal)(?:-(?:[lp]|landscape|portrait))?|(?:-(?:[lp]|landscape|portrait))(?:-(?:a4|letter|a5|b5|legal)))$/ + if s =~ /^--pdf(?:-a4(?:-(?:[lp]|landscape|portrait))?|(?:-(?:[lp]|landscape|portrait))-a4)$/ + select_arr << '--papersize-a4' + end + if s =~ /^--pdf(?:-a5(?:-(?:[lp]|landscape|portrait))?|(?:-(?:[lp]|landscape|portrait))-a5)$/ + select_arr << '--papersize-a5' + end + if s =~ /^--pdf(?:-b5(?:-(?:[lp]|landscape|portrait))?|(?:-(?:[lp]|landscape|portrait))-b5)$/ + select_arr << '--papersize-b5' + end + if s =~ /^--pdf(?:-letter(?:-(?:[lp]|landscape|portrait))?|(?:-(?:[lp]|landscape|portrait))-letter)$/ + select_arr << '--papersize-letter' + end + if s =~ /^--pdf(?:-legal(?:-(?:[lp]|landscape|portrait))?|(?:-(?:[lp]|landscape|portrait))-legal)$/ + select_arr << '--papersize-legal' + end + end + end + select_arr=select_arr.uniq + end + if ch.empty? \ + and sel_init.length == 0 + select_arr << shortcut.act_0.arr ################ & --flag empty + elsif not ch.empty? + if ch =~/c/ then select_arr << '--color-toggle' + ch=ch.gsub(/[c]/,'') + end + if ch =~/k/ then select_arr << '--color-off' + ch=ch.gsub(/[k]/,'') + end + if ch =~/C/ then select_arr << '--config' + ch=ch.gsub(/[C]+/,'') + end + if ch =~/m/ then select_arr << '--dal' + ch=ch.gsub(/[m]/,'') + end + if ch =~/t/ then select_arr << '--txt' + ch=ch.gsub(/[t]/,'') + end + if ch =~/h/ then select_arr << '--html' + ch=ch.gsub(/[h]/,'') + end + if ch =~/e/ then select_arr << '--epub' + ch=ch.gsub(/[e]/,'') + end + if ch =~/o/ then select_arr << '--odt' + ch=ch.gsub(/[o]/,'') + end + if ch =~/d/ then select_arr << '--docbook' + ch=ch.gsub(/[d]/,'') + end + if ch =~/p/ then select_arr << '--pdf' + ch=ch.gsub(/[p]/,'') + end + if ch =~/w/ then select_arr << '--concordance' + ch=ch.gsub(/[w]/,'') + end + if ch =~/i/ then select_arr << '--manpage' + ch=ch.gsub(/[i]/,'') + end + if ch =~/I/ then select_arr << '--texinfo' + ch=ch.gsub(/[I]/,'') + end + if ch =~/b/ then select_arr << '--xhtml' + ch=ch.gsub(/[b]/,'') + end + if ch =~/x/ then select_arr << '--xml-sax' + ch=ch.gsub(/[x]/,'') + end + if ch =~/X/ then select_arr << '--xml-dom' + ch=ch.gsub(/[X]/,'') + end + if ch =~/j/ then select_arr << '--images' + ch=ch.gsub(/[j]/,'') + end + if ch =~/J/ then select_arr << '--json' + ch=ch.gsub(/[J]/,'') + end + if ch =~/N/ then select_arr << '--digests' + ch=ch.gsub(/[N]/,'') + end + if ch =~/P/ then select_arr << '--po4a-sst' + ch=ch.gsub(/[P]/,'') + end + if ch =~/d/ then select_arr << '--sqlite' + ch=ch.gsub(/[d]/,'') + end + if ch =~/D/ then select_arr << '--pg' + ch=ch.gsub(/[D]/,'') + end + if ch =~/Q/ then select_arr << '--qrcode' + ch=ch.gsub(/[Q]/,'') + end + if ch =~/s/ then select_arr << '--source' + ch=ch.gsub(/[s]/,'') + end + if ch =~/S/ then select_arr << '--sisupod' + ch=ch.gsub(/[S]/,'') + end + if ch =~/m/ then select_arr << '--manifest' + ch=ch.gsub(/[m]/,'') + end + if ch =~/R/ then select_arr << '--rsync' + ch=ch.gsub(/[R]/,'') + end + if ch =~/r/ then select_arr << '--scp' + ch=ch.gsub(/[r]/,'') + end + if ch =~/g/ then select_arr << '--git' + ch=ch.gsub(/[g]/,'') + end + if ch =~/U/ then select_arr << '--urls' + ch=ch.gsub(/[u]/,'') + end + if ch =~/Z/ then select_arr << '--zap' + ch=ch.gsub(/[Z]/,'') + end + if ch =~/F/ then select_arr << '--sample-search-form' + ch=ch.gsub(/[F]/,'') + end + if ch =~/W/ then select_arr << '--webrick' + ch=ch.gsub(/[w]/,'') + end + if ch =~/M/ then select_arr << '--maintenance' + ch=ch.gsub(/[M]/,'') + end + if ch =~/V/ then select_arr << '--very-verbose' + ch=ch.gsub(/[V]/,'') + end + if ch =~/v/ then select_arr << '--verbose' + ch=ch.gsub(/[v]/,'') + end + if ch =~/q/ then select_arr << '--quiet' + ch=ch.gsub(/[q]/,'') + end + if select_arr.inspect !~/--urls/ \ + and select_arr.inspect \ + !~/"--harvest/ + select_arr << '--urls' + end + if select_arr.inspect !~/--dal/ \ + and select_arr.inspect =~/txt|text|html|odt|epub|docbook|xml|pdf|manpage|texinfo|concordance|qrcode|source|sisupod|pg|sqlite|zap/ + select_arr << '--dal' + end + if select_arr.inspect !~/--manifest/ \ + and select_arr.inspect =~/txt|text|html|odt|epub|docbook|xml|pdf|manpage|texinfo|concordance|qrcode|source|sisupod|pg|sqlite|zap/ + select_arr << '--manifest' + end + if select_arr.inspect !~/--images/ \ + and select_arr.inspect =~/html|odt|docbook|xml|qrcode/ + select_arr << '--images' + end + end + else + if not sel_init.empty? \ + and sel_init.inspect =~/"--acts?/ + shortcut.act_info + exit + end + if ch =~/c/ then select_arr << '--color-toggle' + ch=ch.gsub(/[c]/,'') + end + if ch =~/k/ then select_arr << '--color-off' + ch=ch.gsub(/[k]/,'') + end + if ch =~/C/ then select_arr << '--config' + ch=ch.gsub(/[C]+/,'') + end + if sel_init.inspect =~/"--createdb"|"--create(?:all)?"|"--dropall"|"--recreate(?:all)?"/ + if ch =~/d/ then select_arr << '--sqlite' + ch=ch.gsub(/[d]/,'') + end + if ch =~/D/ then select_arr << '--pg' + ch=ch.gsub(/[D]/,'') + end + end + if ch =~/W/ then select_arr << '--webrick' + ch=ch.gsub(/[w]/,'') + end + if ch =~/v/ then select_arr << '--version' + ch=ch.gsub(/[v]/,'') + end + if ch =~/M/ then select_arr << '--maintenance' + ch=ch.gsub(/[M]/,'') + end + if ch =~/V/ then select_arr << '--very-verbose' + ch=ch.gsub(/[V]/,'') + end + if ch =~/q/ then select_arr << '--quiet' + ch=ch.gsub(/[q]/,'') + end + end + select_arr=select_arr.flatten.compact.uniq.sort + end + def opt_act + select_arr=@select_arr + @@act=if @@act + @act=@@act + else + act={} + act[:no_stop]=if select_arr.inspect \ + =~/"--no-stop"|"--errors-as-warnings"/ + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:license]=(select_arr.inspect \ + =~/"--license/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:site_init]=(select_arr.inspect \ + =~/"--init"|"--initialize"|"--init-site"|"--conf"|"--config"|"--configure"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:rc]=if select_arr.inspect \ + =~/"--rc=/ + x=Dir.pwd + '/' + select_arr.join.gsub(/--rc=/,'') + { bool: true, set: :on, inst: x } + else + { bool: false, set: :na, inst: '' } + end + act[:processing_path]=if select_arr.inspect \ + =~/"--processing-path=/ + base_pth=select_arr.join(';').gsub(/^.*--processing-path=['"]?(.+?)(?:['"]?;.+)?$/,'\1') + { bool: true, set: :on, inst: base_pth } + elsif select_arr.inspect \ + =~/"--processing-path/ + { bool: true, set: :on, inst: @base_path } + else + { bool: false, set: :na, inst: nil } + end + act[:dump]=if select_arr.inspect \ + =~/"--dump=/ + base_pth=select_arr.join(';'). + gsub(/^.*--dump=['"]?(.+?)(?:['"]?;.+)?$/,'\1') + { bool: true, set: :on, inst: base_pth } + elsif select_arr.inspect =~/"--dump/ + { bool: true, set: :on, inst: @base_path } + else + { bool: false, set: :na, inst: nil } + end + act[:redirect]=if select_arr.inspect \ + =~/"--redirect=/ + base_pth=select_arr.join(';'). + gsub(/^.*--redirect=['"]?(.+?)(?:['"]?;.+)?$/,'\1') + { bool: true, set: :on, inst: base_pth } + elsif select_arr.inspect \ + =~/"--redirect/ + { bool: true, set: :on, inst: @base_path } + else + { bool: false, set: :na, inst: nil } + end + act[:switch]=if select_arr.inspect \ + =~/"--switch-off=/ + off_list=select_arr.join(';'). + gsub(/^.*--switch-off=['"]?(.+?)(?:['"];.+)?$/,'\1') + off_list=off_list.scan(/[^,;\s]+/) + { bool: false, set: :off, off: off_list} + else { bool: true, set: :na, off: [] } + end + act[:default_language]=if select_arr.inspect \ + =~/"--(?:default-)?language[-=](\S{2})"/ + { set: :on, code: $1 } + elsif lng_base + { set: :on, code: lng_base } + else { set: :na, code: 'en' } + end + act[:i18n]=if select_arr.inspect \ + =~/"(?:--monolingual|--i18n-mono(?:lingual)?)"/ #if monolingual possible outputs output_by :filename & :filetype only, without language code in default language name; give warning of conflict settings if monolingual & :language selected + @lingual=:mono + { set: :mono } + elsif select_arr.inspect \ + =~/"(?:--multilingual|--i18n-multi(?:lingual)?)"/ + @lingual=:multi + { set: :multi } + else { set: :na } + end + act[:output_by]=if select_arr.inspect \ + =~/"--(?:output-)?by-language"/ + @dir_structure_by=:language + { set: :language } + elsif select_arr.inspect \ + =~/"--(?:output-)?by-filename"/ + @dir_structure_by=:filename + { set: :filename } + elsif select_arr.inspect \ + =~/"--(?:output-)?by-filetype"/ + @dir_structure_by=:filetype + { set: :filetype } + else { set: :na } + end + act[:ocn]=if select_arr.inspect \ + =~/"--ocn"|"--inc-ocn"|"--numbering"|"--inc-numbering"/ + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--no-ocn"|"--exc-ocn"|"--no-numbering"|"--exc-numbering"/ \ + || act[:switch][:off].inspect =~/"ocn"|"--numbering"/ + { bool: false, set: :off } + else { bool: true, set: :na } + end + act[:toc]=if select_arr.inspect \ + =~/"--inc-toc"/ + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--(?:exc|no)-toc"/ \ + || act[:switch][:off].inspect =~/"toc"/ + { bool: false, set: :off } + else { bool: true, set: :na } + end + act[:minitoc]=if select_arr.inspect \ + =~/"--minitoc"|"--inc-minitoc"/ + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--(?:exc|no)-minitoc"/ \ + || act[:switch][:off].inspect =~/"minitoc"/ + { bool: false, set: :off } + else { bool: false, set: :na } + end + act[:links_to_manifest]=if select_arr.inspect \ + =~/"--inc-links-to-manifest"|"--inc-manifest-links"/ + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--(?:exc|no)-manifest"/ \ + || act[:switch][:off].inspect =~/"manifest"/ #place lower + { bool: false, set: :off } + elsif select_arr.inspect \ + =~/"--(?:exc|no)-links-to-manifest"|"--(?:exc|no)-manifest-links"/ \ + || act[:switch][:off].inspect \ + =~/"links_to_manifest"|"manifest_links"|"--(?:exc|no)-manifest"/ \ + || select_arr.inspect \ + =~/"--(?:redirect|dump)/ + { bool: false, set: :off } + else { bool: true, set: :na } + end + act[:manifest_minitoc]=if select_arr.inspect \ + =~/"--inc-manifest-minitoc"|"--inc-minitoc"/ + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--(?:exc|no)-manifest-minitoc"|"--(?:exc|no)-minitoc"/ \ + || act[:switch][:off].inspect =~/"manifest_minitoc"|"minitoc"/ + { bool: false, set: :off } + else { bool: false, set: :na } + end + act[:metadata]=if select_arr.inspect \ + =~/"--metadata"|"--inc-metadata"/ + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--(?:exc|no)-metadata"/ \ + || act[:switch][:off].inspect =~/"metadata"/ + { bool: false, set: :off } + else { bool: true, set: :na } + end + act[:html_minitoc]=if select_arr.inspect \ + =~/"--inc-html-minitoc"|"--inc-minitoc"/ + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--(?:exc|no)-html-minitoc"|"--(?:exc|no)-minitoc"/ \ + || act[:switch][:off].inspect =~/"html_minitoc"|"minitoc"/ + { bool: false, set: :off } + else { bool: false, set: :na } + end + act[:html_navigation]=if select_arr.inspect \ + =~/"--inc-html-navigation"|"--inc-navigation"/ + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--(?:exc|no)-html-navigation"|"--(?:exc|no)-navigation"/ \ + || act[:switch][:off].inspect =~/"html_navigation"|"nav"/ + { bool: false, set: :off } + else { bool: true, set: :na } + end + act[:html_navigation_bar]=if select_arr.inspect \ + =~/"--inc-html-navigation-bar"|"--inc-navigation-bar"/ + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--(?:exc|no)-html-navigation-bar"|"--(?:exc|no)-navigation-bar"/ \ + || act[:switch][:off].inspect =~/"html_navigation_bar"|"navbar"/ + { bool: false, set: :off } + else { bool: false, set: :na } + end + act[:segsubtoc]=if select_arr.inspect \ + =~/"--inc-segsubtoc"/ + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--(?:exc|no)-segsubtoc"/ \ + || act[:switch][:off].inspect =~/"segsubtoc"/ + { bool: false, set: :off } + else { bool: true, set: :na } + end + act[:search_form]=if select_arr.inspect \ + =~/"--inc-search-form"/ + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--(?:exc|no)-search-form"/ \ + || act[:switch][:off].inspect =~/"search_form"|"search"/ + { bool: false, set: :off } + else { bool: true, set: :na } + end + act[:html_search_form]=if select_arr.inspect \ + =~/"--inc-html-search-form"|"--inc-search-form"/ + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--(?:exc|no)-html-search-form"|"--(?:exc|no)-search-form"/ \ + || act[:switch][:off].inspect \ + =~/"html_search_form"|"search_form"|"search"/ + { bool: false, set: :off } + else { bool: true, set: :na } + end + act[:html_right_pane]=if select_arr.inspect \ + =~/"--inc-html-right-pane"|"--inc-right-pane"|"--inc-html-right-column"|"--inc-right-column"/ + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--(?:exc|no)-html-right-pane"|"--(?:exc|no)-right-pane"|"--(?:exc|no)-html-right-column"|"--(?:exc|no)-right-column"/ \ + || act[:switch][:off].inspect =~/"html_right_pane"|"html_right_column"|"promo"/ + { bool: false, set: :off } + else { bool: true, set: :na } + end + act[:html_top_band]=if select_arr.inspect \ + =~/"--inc-html-top-band"|"--inc-top-band"/ + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--(?:exc|no)-html-top-band"|"--(?:exc|no)-top-band"/ \ + || act[:switch][:off].inspect =~/"html-top-band"|"top-band"/ + { bool: false, set: :off } + else { bool: true, set: :na } + end + act[:html]=if select_arr.inspect \ + =~/"--html-strict"/ \ + or ((select_arr.inspect \ + =~/"--html"/) \ + && select_arr.inspect \ + =~/"--strict"/) + act[:html_strict]={ bool: true, set: :on } + act[:html_scroll]={ bool: true, set: :on } + act[:html_seg]={ bool: true, set: :on } + { bool: true, set: :on } + elsif (select_arr.inspect \ + =~/"--html"/) + act[:html_strict]={ bool: false, set: :off } + act[:html_scroll]={ bool: true, set: :on } + act[:html_seg]={ bool: true, set: :on } + { bool: true, set: :on } + else + act[:html_strict]=(select_arr.inspect \ + =~/"--strict"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:html_scroll]=(select_arr.inspect \ + =~/"--html-scroll"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:html_seg]=(select_arr.inspect \ + =~/"--html-seg"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + { bool: false, set: :na } + end + act[:concordance]=(select_arr.inspect \ + =~/"--concordance"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:images]=(select_arr.inspect \ + =~/"--images"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:json]=(select_arr.inspect \ + =~/"--json"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + if select_arr.inspect \ + =~/"--pdf"/ + if select_arr.inspect \ + =~/"--portrait"/ + act[:pdf]= { bool: false, set: :na } + act[:pdf_l]={ bool: false, set: :na } + act[:pdf_p]={ bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--landscape"/ + act[:pdf]= { bool: false, set: :na } + act[:pdf_l]={ bool: true, set: :on } + act[:pdf_p]={ bool: false, set: :na } + else + act[:pdf]= { bool: true, set: :on } + act[:pdf_l]={ bool: true, set: :on } + act[:pdf_p]={ bool: true, set: :on } + end + else + act[:pdf]= { bool: false, set: :na } + act[:pdf_p]= { bool: false, set: :na } + act[:pdf_l]= { bool: false, set: :na } + act[:pdf_a4]= { bool: false, set: :na } + act[:pdf_a5]= { bool: false, set: :na } + act[:pdf_b5]= { bool: false, set: :na } + act[:pdf_letter]={ bool: false, set: :na } + act[:pdf_legal]= { bool: false, set: :na } + end + if act[:pdf][:set]==:on \ + or act[:pdf_p][:set]==:on \ + or act[:pdf_l][:set]==:on + act[:pdf_a4]=if select_arr.inspect \ + =~/"--a4"|--papersize-a4"/ \ + or select_arr.inspect \ + =~/"--papersize=\S*a4\b\S*"/ #--papersize=a4,a5 + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:pdf_a5]=if select_arr.inspect \ + =~/"--a5"|"--papersize-a5"/ \ + or select_arr.inspect \ + =~/"--papersize=\S*a5\b\S*"/ #--papersize=a4,a5 + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:pdf_b5]=if select_arr.inspect \ + =~/"--b5"|"--papersize-b5"/ \ + or select_arr.inspect \ + =~/"--papersize=\S*b5\b\S*"/ + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:pdf_letter]=if select_arr.inspect \ + =~/"--letter"|"--papersize-letter"/ \ + or select_arr.inspect \ + =~/"--papersize=\S*letter\b\S*"/ + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:pdf_legal]=if select_arr.inspect \ + =~/"--legal"|"--papersize-legal"/ \ + or select_arr.inspect \ + =~/"--papersize=\S*legal\b\S*"/ + { bool: true, set: :on } + else + { bool: false, set: :na } + end + end + act[:epub]=(select_arr.inspect \ + =~/"--epub"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:odt]=if select_arr.inspect \ + =~/"--odt"|"--odf"|"--odt-(?:ocn|numbering)"|"--odf-(?:ocn|numbering)"/ + act[:odt_ocn]=if (select_arr.inspect \ + =~/"--odt-(?:ocn|numbering)"|"--odf-(?:ocn|numbering)"/ \ + or select_arr.inspect \ + =~/"--ocn"|"--inc-ocn"|"--numbering"|"--inc-numbering"/) + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--no-ocn"|"--exc-ocn"|"--no-numbering"|"--exc-numbering"/ + { bool: false, set: :off } + else + { bool: false, set: :na } + end + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:xml_sax]=(select_arr.inspect \ + =~/"--xml-sax"|"--sax"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:xml_dom]=(select_arr.inspect \ + =~/"--xml-dom"|"--dom"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:xml_docbook_book]=(select_arr.inspect \ + =~/"--docbook"|"--docbook-book"|"--xml-docbook"|"--xml-docbook_book"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:xml_fictionbook]=(select_arr.inspect \ + =~/"--fictionbook"|"--xml-fictionbook"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:xml_scaffold_structure_sisu]=select_arr.inspect \ + =~/"--xml-scaffold"|"--xml-scaffold-sisu"/ \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:xml_scaffold_structure_collapse]=select_arr.inspect \ + =~/"--xml-scaffold-collapse"/ \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:xhtml]=(select_arr.inspect \ + =~/"--xhtml"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:txt]=if select_arr.inspect \ + =~/"--txt"|"--text"|"--plaintext"|"--txt-(?:ocn|numbering)"|"--text-(?:ocn|numbering)"|"--plaintext-(?:ocn|numbering)"/ + act[:txt_ocn]=if (select_arr.inspect \ + =~/"--txt-(?:ocn|numbering)"|"--text-(?:ocn|numbering)"|"--plaintext-(?:ocn|numbering)"/ \ + or select_arr.inspect \ + =~/"--ocn"|"--inc-ocn"|"--numbering"|"--inc-numbering"/) + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--no-ocn"|"--exc-ocn"|"--no-numbering"|"--exc-numbering"/ + { bool: false, set: :off } + else + { bool: false, set: :na } + end + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:txt_textile]=(select_arr.inspect \ + =~/"--textile"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:txt_asciidoc]=(select_arr.inspect \ + =~/"--asciidoc"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:txt_markdown]=(select_arr.inspect \ + =~/"--markdown"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:txt_rst]=(select_arr.inspect \ + =~/"--rst"|"--rest"|"--restructuredtext"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:txt_orgmode]=(select_arr.inspect \ + =~/"--org"|"--orgmode"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:manpage]=(select_arr.inspect \ + =~/"--manpage"|"--man"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:texinfo]=(select_arr.inspect \ + =~/"--texinfo"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:psql]=if select_arr.inspect \ + =~/"--pg-\S+"/ \ + or ((select_arr.inspect =~/"--pg"/) \ + && (select_arr.inspect \ + =~/"--createdb"|"--create(?:all)?"|"--dropall"|"--recreate(?:all)?"|"--import"|"--update"|"--remove"/)) + act[:psql_createdb]=if select_arr.inspect \ + =~/"--pg-createdb"|"--createdb"/ + { bool: true, set: :on } + else + { bool: false, set: :na } + end + if select_arr.inspect \ + =~/"--pg-recreate(?:all)?"|"--recreate(?:all)?"/ + act[:psql_drop]={ bool: true, set: :on } + act[:psql_create]={ bool: true, set: :on } + else + act[:psql_drop]=if select_arr.inspect \ + =~/"--pg-dropall"|"--dropall"/ + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:psql_create]=if select_arr.inspect \ + =~/"--pg-create(?:all)?"|"--create(?:all)?"/ + { bool: true, set: :on } + else + { bool: false, set: :na } + end + end + act[:psql_import]=if select_arr.inspect \ + =~/"--pg-import"|"--import"/ + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:psql_update]=if select_arr.inspect \ + =~/"--pg-update"|"--update"/ + act[:psql_remove]={ bool: true, set: :on } + { bool: true, set: :on } + else + act[:psql_remove]=if select_arr.inspect \ + =~/"--pg-remove"|"--remove"/ + { bool: true, set: :on } + else + { bool: false, set: :na } + end + { bool: false, set: :na } + end + { bool: true, set: :on } + else + act[:psql_createdb]= + { bool: false, set: :na } + act[:psql_drop]= + { bool: false, set: :na } + act[:psql_create]= + { bool: false, set: :na } + act[:psql_import]= + { bool: false, set: :na } + act[:psql_update]= + { bool: false, set: :na } + act[:psql_remove]= + { bool: false, set: :na } + { bool: false, set: :na } + end + act[:sqlite]=if select_arr.inspect \ + =~/"--sqlite-\S+"/ \ + or (select_arr.inspect \ + =~/"--sqlite"/ \ + && select_arr.inspect \ + =~/"--createdb"|"--create(?:all)?"|"--dropall"|"--recreate(?:all)?"|"--import"|"--update"|"--remove"/) + act[:sqlite_createdb]=if select_arr.inspect \ + =~/"--sqlite-createdb"|"--createdb"/ + { bool: true, set: :on } + else + { bool: false, set: :na } + end + if select_arr.inspect \ + =~/"--sqlite-recreate(?:all)?"|"--recreate(?:all)?"/ + act[:sqlite_drop]={ bool: true, set: :on } + act[:sqlite_create]={ bool: true, set: :on } + else + act[:sqlite_create]=if select_arr.inspect \ + =~/"--sqlite-create(?:all)?"|"--create(?:all)?"/ + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:sqlite_drop]=if select_arr.inspect \ + =~/"--sqlite-dropall"|"--dropall"/ + { bool: true, set: :on } + else + { bool: false, set: :na } + end + end + act[:sqlite_import]=if select_arr.inspect \ + =~/"--sqlite-import"|"--import"/ + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:sqlite_update]=if select_arr.inspect \ + =~/"--sqlite-update"|"--update"/ + act[:sqlite_remove]={ bool: true, set: :on } + { bool: true, set: :on } + else + act[:sqlite_remove]=if select_arr.inspect \ + =~/"--sqlite-remove"|"--sqlite-remove"/ + { bool: true, set: :on } + else + { bool: false, set: :na } + end + { bool: false, set: :na } + end + { bool: true, set: :on } + else + act[:sqlite_createdb]= + { bool: false, set: :na } + act[:sqlite_drop]= + { bool: false, set: :na } + act[:sqlite_create]= + { bool: false, set: :na } + act[:sqlite_import]= + { bool: false, set: :na } + act[:sqlite_update]= + { bool: false, set: :na } + act[:sqlite_remove]= + { bool: false, set: :na } + { bool: false, set: :na } + end + act[:sqlite_discrete]=select_arr.inspect \ + =~/"--sql"|"--sqlite"/ \ + && (select_arr.inspect \ + !~/"--createdb"|"--create(?:all)?"|"--dropall"|"--recreate(?:all)?"|"--import"|"--update"|"--remove"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:harvest]=(select_arr.inspect \ + =~/"--harvest"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:po4a_sstm]=(select_arr.inspect \ + =~/"--po4a-ss[tm]"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:po4a_sst_ao_sst]=(select_arr.inspect \ + =~/"--po4a-ao(?:-ss[tm])?"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:po4a_shelf]=(select_arr.inspect \ + =~/"--po4a-shelf"|"--pot?-shelf"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + if act[:po4a_shelf][:set]==:on \ + or act[:po4a_sst_ao_sst][:set]==:on \ + or act[:po4a_sstm][:set]==:on + act[:po4a_lang]=if select_arr.inspect \ + =~/"--(?:trans|init)-([a-z]{2}):((?:(?:[a-z]{2}\b),?)+)/ + lng_src,lng_trn=$1,$2.split(',') + { bool: true, set: :on, src: lng_src, trn: lng_trn } + elsif select_arr.inspect \ + =~/"--trans"/ + { bool: true, set: :on } + { bool: true, set: :on, src: 'en', trn: [] } + else + { bool: false, set: :na } + end + act[:po4a_lang_trans]=if select_arr.inspect \ + =~/"--trans-([a-z]{2}):((?:(?:[a-z]{2}\b),?)+)/ + lng_src,lng_trn=$1,$2.split(',') + { bool: true, set: :on, src: lng_src, trn: lng_trn } + elsif select_arr.inspect \ + =~/"--trans"/ + { bool: true, set: :on } + { bool: true, set: :on, src: 'en', trn: [] } + else + { bool: false, set: :na } + end + act[:po4a_lang_init]=if select_arr.inspect \ + =~/"--init-([a-z]{2}):((?:(?:[a-z]{2}\b),?)+)/ + lng_src,lng_trn=$1,$2.split(',') + { bool: true, set: :on, src: lng_src, trn: lng_trn } + else + { bool: false, set: :na } + end + else + act[:po4a_lang_trans]= \ + { bool: false, set: :na } + act[:po4a_lang_init]= \ + { bool: false, set: :na } + end + act[:git]=(select_arr.inspect \ + =~/"--git"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:hash_digests]=(select_arr.inspect \ + =~/"--digests?"|"--hash-digests"/) \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:pdf_font_size]=if select_arr.inspect \ + =~/"--(?:pdf-)?font-?size[=-](\d{1,2})(?:pt)?"/ + $1 + else :na + end + act[:pdf_hyperlink_colors]=if select_arr.inspect \ + =~/"--pdf-hyperlinks-(?:mono(?:chrome)?|no-color)"/ + :mono + elsif select_arr.inspect \ + =~/"--pdf-hyperlinks-color"/ + :color + else :na + end + act[:hash_digest_algo]=if select_arr.inspect \ + =~/"--hash-(?:sha)?512"/ + :sha512 + elsif select_arr.inspect \ + =~/"--hash-(?:sha)?256"/ + :sha256 + elsif select_arr.inspect \ + =~/"--hash-md5"/ + :md5 + else :na + end + act[:sample_search_form]=if select_arr.inspect \ + =~/"--sample-search-form"/ + if select_arr.inspect \ + =~/"--db[-=]pg"/ + { bool: true, set: :on, db: :pg } + elsif select_arr.inspect \ + =~/"--db[-=]sqlite"/ + { bool: true, set: :on, db: :sqlite } + else + { bool: true, set: :on, db: :na } + end + else + { bool: false, set: :na, db: :na } + end + act[:webrick]=select_arr.inspect \ + =~/"--webrick"/ \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:share_source]=select_arr.inspect \ + =~/"--source"/ \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:sisupod]=select_arr.inspect \ + =~/"--sisupod"/ \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:scp]=select_arr.inspect \ + =~/"--scp"/ \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:rsync]=select_arr.inspect \ + =~/"--rsync"|"--remote"/ \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:zap]=select_arr.inspect \ + =~/"--zap"|"--delete"/ \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:urls_all]=select_arr.inspect \ + =~/"--urls-all"/ \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:urls_selected]=if select_arr.inspect \ + =~/"--urls"/ + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--harvest/ + { bool: false, set: :off } + elsif select_arr.inspect \ + =~/"--verbose"|"--maintenance"/ + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:sitemap]=select_arr.inspect \ + =~/"--sitemap"/ \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:qrcode]=select_arr.inspect \ + =~/"--qrcode"/ \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:help]=select_arr.inspect \ + =~/"--help/ \ + ? { bool: true, set: :on } + : { bool: false, set: :na } + act[:ao]=if select_arr.inspect \ + =~/"--ao"|"--dal"/ + { bool: true, set: :on } + elsif (act[:txt][:set]==:on \ + || act[:txt_textile][:set]==:on \ + || act[:txt_asciidoc][:set]==:on \ + || act[:txt_markdown][:set]==:on \ + || act[:txt_rst][:set]==:on \ + || act[:txt_orgmode][:set]==:on \ + || act[:xhtml][:set]==:on \ + || act[:epub][:set]==:on \ + || act[:html][:set]==:on \ + || act[:html_seg][:set]==:on \ + || act[:html_scroll][:set]==:on \ + || act[:json][:set]==:on \ + || act[:texinfo][:set]==:on \ + || act[:manpage][:set]==:on \ + || act[:hash_digests][:set]==:on \ + || act[:odt][:set]==:on \ + || act[:pdf][:set]==:on \ + || act[:pdf_p][:set]==:on \ + || act[:pdf_l][:set]==:on \ + || act[:qrcode][:set]==:on \ + || act[:sisupod][:set]==:on \ + || act[:share_source][:set]==:on \ + || act[:po4a_sstm][:set]==:on \ + || act[:concordance][:set]==:on \ + || act[:sqlite_discrete][:set]==:on \ + || act[:sqlite_import][:set]==:on \ + || act[:sqlite_update][:set]==:on \ + || act[:sqlite_remove][:set]==:on \ + || act[:psql_import][:set]==:on \ + || act[:psql_update][:set]==:on \ + || act[:psql_remove][:set]==:on \ + || act[:xml_dom][:set]==:on \ + || act[:xml_sax][:set]==:on \ + || act[:xml_docbook_book][:set]==:on \ + || act[:xml_fictionbook][:set]==:on \ + || act[:xml_scaffold_structure_sisu][:set]==:on \ + || act[:xml_scaffold_structure_collapse][:set]==:on ) + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:manifest]=if select_arr.inspect \ + =~/"--inc-manifest"/ + { bool: true, set: :on } + elsif select_arr.inspect \ + =~/"--(?:exc|no)-manifest"/ \ + || act[:switch][:off].inspect =~/"manifest"/ + { bool: false, set: :off } + elsif select_arr.inspect \ + =~/"--manifest"/ + { bool: true, set: :on } + elsif (act[:txt][:set]==:on \ + || act[:txt_textile][:set]==:on \ + || act[:txt_asciidoc][:set]==:on \ + || act[:txt_markdown][:set]==:on \ + || act[:txt_rst][:set]==:on \ + || act[:txt_orgmode][:set]==:on \ + || act[:xhtml][:set]==:on \ + || act[:epub][:set]==:on \ + || act[:html][:set]==:on \ + || act[:html_seg][:set]==:on \ + || act[:html_scroll][:set]==:on \ + || act[:json][:set]==:on \ + || act[:texinfo][:set]==:on \ + || act[:manpage][:set]==:on \ + || act[:hash_digests][:set]==:on \ + || act[:odt][:set]==:on \ + || act[:pdf][:set]==:on \ + || act[:pdf_p][:set]==:on \ + || act[:pdf_l][:set]==:on \ + || act[:qrcode][:set]==:on \ + || act[:sisupod][:set]==:on \ + || act[:share_source][:set]==:on \ + || act[:po4a_sstm][:set]==:on \ + || act[:concordance][:set]==:on \ + || act[:xml_dom][:set]==:on \ + || act[:xml_sax][:set]==:on \ + || act[:xml_docbook_book][:set]==:on \ + || act[:xml_fictionbook][:set]==:on \ + || act[:xml_scaffold_structure_sisu][:set]==:on \ + || act[:xml_scaffold_structure_collapse][:set]==:on ) + { bool: true, set: :on } + else { bool: true, set: :na } + end + act[:console_messages] = '' + act[:verbose]=if select_arr.inspect \ + =~/"--verbose"/ + act[:console_messages] << ' --verbose ' + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:verbose_plus]=if select_arr.inspect \ + =~/"--very-verbose"|"--verbose-very"/ + act[:console_messages] << ' --very-verbose ' + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:version_info]=if select_arr.inspect \ + =~/"--version"|"--verbose"|"--maintenance"/ + act[:console_messages] << ' --maintenance ' + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:quiet]=if (select_arr.inspect =~/"--quiet"/) + act[:console_messages] << ' --quiet ' + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:color_state]=if select_arr.inspect =~/"--color-on"|"--color"/ + act[:console_messages] << ' --color-on ' + { bool: true, set: :on } + elsif (select_arr.inspect =~/"--color-off"/) + act[:console_messages] << ' --color-off ' + { bool: false, set: :off } + else { bool: true, set: :na } #fix default color + end +# act[:color_toggle]=if select_arr.inspect =~/"--color-toggle"/ +# true +# else false +# end + act[:maintenance]=if (select_arr.inspect =~/"--maintenance|--keep-processing-files"/) + act[:console_messages] << ' --maintenance ' + { bool: true, set: :on } + else + { bool: false, set: :na } + end + act[:profile]=if (select_arr.inspect =~/"--profile"/) + act[:console_messages] << ' --color-off ' + { bool: true, set: :on } + else + { bool: false, set: :na } + end + @act=act + end + end + def opt_ch + @opt_ch + end + def selections + def arr + @select_arr.sort + end + def str + @select_str ||= arr.join(' ') + end + self + end + def act + @@act + end + def files_mod + files_mod=files + @files_mod=files_mod + end + def files + @files + end + def f_pth + @f_pth + end + def pth + @pth + end + def sub_location + pth.gsub(/#{base_path}/,'') + end + def lng + @lng + end + def lng_base + @lng_base + end + def fno + @fno=(fns.nil? || fns.empty?) \ + ? '' \ + : (fns[/(.+?(?:sst|ssm))(?:\.sst)?/,1]) + end + def fng + @fng=(fno.nil? || fno.empty?) \ + ? '' \ + : (fno.gsub(/(?:~(?:#{Px[:lng_lst_rgx]}))?(\.ss[tm])$/,'\1')) + end + def fns + @fns + end + def fnl + @fns.gsub(/(\S+?)((?:\.ssm)?\.sst)/,"\\1.#{lng}\\2") + end + def what + @what + end + def fnb + (fns.nil? || fns.empty?) \ + ? '' \ + : (fns[/(.+?)\.(?:(?:-|ssm\.)?sst|ssm)$/,1]) + end + def fnc + @fnc=(@fns =~/\.(?:ssm\.sst|ssm)$/) \ + ? fnb + '.ssm.sst' + : @fns + end + def fncb + @fncb=(@fns =~/(?:\~\S{2,3})?\.(?:ssm\.sst|ssm)$/) \ + ? fnb + '.ssm.sst' + : @fns.gsub(/(?:\~\S{2,3})?(\.sst)$/,'\1') + end + end +end +__END__ +note usually named @opt is carried in dp document parameters (usually as @md.opt), @opt is a +subset of @md where @md is passed, contents of @opt are available as @md.opt +passing @opt as well is duplication check for fns & fnb +#+END_SRC + +** hub_actions.rb + +#+BEGIN_SRC ruby :tangle "../lib/sisu/hub_actions.rb" +# <<sisu_document_header>> +module SiSU_Hub_Actions + class HubActions + require_relative 'utils_composite' # utils_composite.rb + include SiSU_Composite_Doc_Utils # composite doc, .ssm, extract all related insert files, array of filenames test + def initialize(opt) + @opt=opt + end + def report + def version_info? + if @opt.act[:version_info][:set]==:on + SiSU_Env::InfoAbout.new(@opt).sisu_version + end + end + def version_number_git? + if @opt.act[:version_info][:set]==:on \ + || @opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on + SiSU_Screen::Ansi.new( + @opt.act[:color_state][:set], + ' ' + SiSU_is.git_version_info? + ).grey + end + end + def version_dir? + if @opt.act[:version_info][:set]==:on \ + || @opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on + SiSU_Screen::Ansi.new( + @opt.act[:color_state][:set], + ' ' + File.dirname(__FILE__) + ).grey + end + end + def version_info_extra? + if @opt.act[:version_info][:set]==:on \ + || @opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on + if SiSU_is.git_version_info? + SiSU_Screen::Ansi.new( + @opt.act[:color_state][:set], + ' ' + File.dirname(__FILE__) + \ + ' vcr: ' + SiSU_is.git_version_info? + ).grey + else + SiSU_Screen::Ansi.new( + @opt.act[:color_state][:set], + ' ' + File.dirname(__FILE__) + ).grey + end + end + end + self + end + def prepare + def site? + if @opt.act[:site_init][:set]==:on #% --init-site, -C initialize/configure + require_relative 'conf' #% --init-site, -C initialize/configure + SiSU_Initialize::Source.new(@opt).read + if @opt.act[:rsync][:set]==:on + if @opt.selections.str =~/--init(?:ialize)?=site/ \ + and @opt.selections.str =~/RZ/ + SiSU_Hub_Actions::Operations.new(@opt).remote_put_base_site_rsync_match + else SiSU_Hub_Actions::Operations.new(@opt).remote_put_base_site_rsync + end + elsif @opt.act[:scp][:set]==:on + if @opt.selections.str =~/--init(?:ialize)?=site/ \ + and @opt.selections.str =~/CCr/ + SiSU_Hub_Actions::Operations.new(@opt).remote_put_base_site_all + else SiSU_Hub_Actions::Operations.new(@opt).remote_put_base_site + end + end + end + end + def remote_site? + if @opt.act[:site_init][:set]==:on + if @opt.act[:site_init][:set]==:on #% --init-site, -C initialize/configure + #require_relative 'conf' #% --init-site, -C initialize/configure + #SiSU_Initialize::Source.new(@opt).read + #if @opt.act[:rsync][:set]==:on + # if @opt.selections.str =~/--init(?:ialize)?=site/ \ + # and @opt.selection =~/RZ/ + # SiSU_Hub_Actions::Operations.new(@opt).remote_put_base_site_rsync_match + # else SiSU_Hub_Actions::Operations.new(@opt).remote_put_base_site_rsync + # end + #elsif @opt.act[:scp][:set]==:on + # if @opt.selections.str =~/--init(?:ialize)?=site/ \ + # and @opt.selection =~/CCr/ + # SiSU_Hub_Actions::Operations.new(@opt).remote_put_base_site_all + # else SiSU_Hub_Actions::Operations.new(@opt).remote_put_base_site + # end + #end + end + end + end + def sql? + if @opt.act[:psql_createdb][:set]==:on \ + or @opt.act[:psql_create][:set]==:on \ + or @opt.act[:psql_drop][:set]==:on + done=:ok + if @opt.act[:psql][:set]==:on + require_relative 'dbi' + SiSU_DBI::SQL.new(@opt).connect + end + end + if @opt.act[:sqlite_createdb][:set]==:on \ + or @opt.act[:sqlite_create][:set]==:on \ + or @opt.act[:sqlite_drop][:set]==:on + done=:ok + if @opt.act[:sqlite][:set]==:on + require_relative 'dbi' + SiSU_DBI::SQL.new(@opt).connect + end + end + end + def search_form? + if @opt.act[:sample_search_form][:set]==:on #% --sample-search-form, -F cgi sample search form + SiSU_Hub_Actions::Operations.new(@opt).cgi + end + end + def webrick? + if @opt.act[:webrick][:set]==:on #% --webrick, -W webrick + SiSU_Hub_Actions::Operations.new(@opt).webrick + end + end + self + end + def outputs + def each_file + def abstract_objects? + if @opt.act[:ao][:set]==:on #% --ao --dal, -m + if @opt.f_pths.length > 0 + unless @opt.act[:po4a_shelf][:set]==:on # --po4a-shelf + if @opt.fno =~ /\.ssm$/ + require_relative 'ao_composite' # ao_composite.rb #pre-processing + SiSU_Assemble::Composite.new(@opt).read + end + require_relative 'ao' # ao.rb + SiSU_AO::Source.new(@opt).read + end + else + msg='document abstraction request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + end + def qrcode? + if @opt.act[:qrcode][:set]==:on #% --qrcode, -Q + if @opt.f_pths.length > 0 + require_relative 'qrcode' # qrcode.rb + SiSU_QRcode::Source.new(@opt).read + else + msg='qrcode request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + end + def hash_digests? + if @opt.act[:hash_digests][:set]==:on #% --hash-digests, -N digest tree + if @opt.f_pths.length > 0 + require_relative 'digests' # digests.rb + SiSU_DigestView::Source.new(@opt).read + else + msg='hash digest request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + end + def text? + if @opt.act[:txt][:set]==:on #% --txt, -t -a + if @opt.f_pths.length > 0 + require_relative 'txt_plain' # txt_plain.rb + SiSU_Txt_Plain::Source.new(@opt).read + else + msg='text request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + if @opt.act[:txt_textile][:set]==:on #% --textile + if @opt.f_pths.length > 0 + require_relative 'txt_textile' #txt_textile.rb + SiSU_Txt_Textile::Source.new(@opt).read + else + msg='textile request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + if @opt.act[:txt_asciidoc][:set]==:on #% --asciidoc + if @opt.f_pths.length > 0 + require_relative 'txt_asciidoc' # txt_asciidoc.rb + SiSU_Txt_AsciiDoc::Source.new(@opt).read + else + msg='asciidoc request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + if @opt.act[:txt_markdown][:set]==:on #% --markdown + if @opt.f_pths.length > 0 + require_relative 'txt_markdown' # txt_markdown.rb + SiSU_Txt_Markdown::Source.new(@opt).read + else + msg='markdown request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + if @opt.act[:txt_rst][:set]==:on #% --rst, --rest + if @opt.f_pths.length > 0 + require_relative 'txt_rst' # txt_rst.rb + SiSU_Txt_rST::Source.new(@opt).read + else + msg='rst request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + if @opt.act[:txt_orgmode][:set]==:on #% --orgmode + if @opt.f_pths.length > 0 + require_relative 'txt_orgmode' # txt_orgmode.rb + SiSU_Txt_OrgMode::Source.new(@opt).read + else + msg='orgmode request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + end + def html? + if @opt.act[:html][:set]==:on #% --html, -h + if @opt.f_pths.length > 0 + require_relative 'html' # html.rb + SiSU_HTML::Source.new(@opt).read + else + msg='html request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + else + if @opt.act[:html_seg][:set]==:on #% --html-seg + if @opt.f_pths.length > 0 + require_relative 'html' # html.rb + SiSU_HTML::Source.new(@opt).read + else + msg='html seg request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + if @opt.act[:html_scroll][:set]==:on #% --html-scroll + if @opt.f_pths.length > 0 + require_relative 'html' # html.rb + SiSU_HTML::Source.new(@opt).read + else + msg='html scroll request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + end + if @opt.act[:concordance][:set]==:on #% --concordance, -w + if @opt.f_pths.length > 0 + require_relative 'html_concordance' # html_concordance.rb + SiSU_Concordance::Source.new(@opt).read + else + msg='concordance request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + end + def json? + if @opt.act[:json][:set]==:on #% --js, -J + if @opt.f_pths.length > 0 + require_relative 'json' # json.rb + SiSU_JSON::Source.new(@opt).read + else + msg='json request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + end + def xhtml? + if @opt.act[:xhtml][:set]==:on #% --xhtml, -b + if @opt.f_pths.length > 0 + require_relative 'xhtml' # xhtml.rb + SiSU_XHTML::Source.new(@opt).read + else + msg='xhtml request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + if @opt.act[:epub][:set]==:on #% --epub, -e + if @opt.f_pths.length > 0 + require_relative 'xhtml_epub2' # xhtml_epub2.rb + SiSU_XHTML_EPUB2::Source.new(@opt).read + else + msg='epub request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + end + def xml? + if @opt.act[:odt][:set]==:on #% --odt, -o + if @opt.f_pths.length > 0 + require_relative 'xml_odf_odt' # xml_odf_odt.rb + SiSU_XML_ODF_ODT::Source.new(@opt).read + else + msg='odt request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + if @opt.act[:xml_scaffold_structure_sisu][:set]==:on #% --xml-scaffold --xml-scaffold-sisu + if @opt.f_pths.length > 0 + require_relative 'xml_scaffold_structure_sisu' # xml_scaffold_structure_sisu.rb + SiSU_XML_Scaffold_Structure_Sisu::Source.new(@opt).read + else + msg='xml scaffold request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + if @opt.act[:xml_scaffold_structure_collapse][:set]==:on #% --xml-scaffold-collapse + if @opt.f_pths.length > 0 + require_relative 'xml_scaffold_structure_collapsed' # xml_scaffold_structure_collapsed.rb + SiSU_XML_Scaffold_Structure_Collapse::Source.new(@opt).read + else + msg='xml scaffold request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + if @opt.act[:xml_docbook_book][:set]==:on #% --xml-docbook + if @opt.f_pths.length > 0 + require_relative 'xml_docbook5' # xml_docbook5.rb + SiSU_XML_Docbook_Book::Source.new(@opt).read + else + msg='docbook request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + if @opt.act[:xml_fictionbook][:set]==:on #% --xml-fictionbook + if @opt.f_pths.length > 0 + require_relative 'xml_fictionbook2' # xml_fictionbook2.rb + SiSU_XML_Fictionbook::Source.new(@opt).read + else + msg='fictionbook request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + if @opt.act[:xml_sax][:set]==:on #% --xml-sax, -x + if @opt.f_pths.length > 0 + require_relative 'xml_sax' # xml_sax.rb + SiSU_XML_SAX::Source.new(@opt).read + else + msg='xml sax request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + if @opt.act[:xml_dom][:set]==:on #% --xml-dom, -X + if @opt.f_pths.length > 0 + require_relative 'xml_dom' # xml_dom.rb + SiSU_XML_DOM::Source.new(@opt).read + else + msg='xml dom request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + end + def pdf? + if @opt.act[:pdf][:set]==:on \ + or @opt.act[:pdf_p][:set]==:on \ + or @opt.act[:pdf_l][:set]==:on #% --pdf-l --pdf, -p + if @opt.f_pths.length > 0 + require_relative 'texpdf' # texpdf.rb + SiSU_TeX::Source.new(@opt).read + else + msg='pdf request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + end + def man_or_info? + if @opt.act[:manpage][:set]==:on #% --manpage, -i + if @opt.f_pths.length > 0 + require_relative 'manpage' # manpage.rb + SiSU_Manpage::Source.new(@opt).read + else + msg='manpage request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + if @opt.act[:texinfo][:set]==:on #% --texinfo, -I + if @opt.f_pths.length > 0 + require_relative 'texinfo' # texinfo.rb + SiSU_TexInfo::Source.new(@opt).read + else + msg='texinfo request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + end + def sqlite_discrete? + if @opt.act[:sqlite_discrete][:set]==:on #% --sqlite, -d + if @opt.f_pths.length > 0 + require_relative 'dbi_discrete' # dbi_discrete.rb + SiSU_DBI_Discrete::SQL.new(@opt).build + else + msg='sqlite (discrete) request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + end + def po4a_make? + if @opt.act[:po4a_sst_ao_sst][:set]==:on #% --po4a-ao + if @opt.f_pths.length > 0 + require_relative 'src_po4a_sst_ao_sst' + SiSU_SStm_AO_SStm::Source.new(@opt).read_process_src_files # src_po4a_sst_ao_sst.rb + else + msg='sst request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + end + end + def elasticsearch? + if @opt.act[:elasticsearch][:set]==:on #% --elastic, -x + if @opt.f_pths.length > 0 + require_relative 'json_elastic' # json_elastic.rb + SiSU_Elastic::Source.new(@opt).read + else + msg='easticsearch request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + end + def manifest? + if @opt.act[:manifest][:set]==:on #% --manifest, -y + if @opt.f_pths.length > 0 + begin + require_relative 'html_manifest' # html_manifest.rb + ((@opt.act[:sisupod][:set]==:on \ + || @opt.act[:share_source][:set]==:on \ + || @opt.act[:po4a_sstm][:set]==:on) \ + && @opt.f_pths.length < 2 ) \ + ? nil + : SiSU_Manifest::Source.new(@opt).read + rescue + end + else + msg='manifest request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + end + def harvest? + if @opt.act[:harvest][:set]==:on #% --harvest + if @opt.f_pths.length > 0 + require_relative 'html_harvest' # html_harvest.rb + SiSU_Harvest::Source.new(@opt).read + else + msg='harvest request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). + mark(msg) + else puts msg + end + end + end + end + self + end + def loop_files + def share_source? + if @opt.act[:sisupod][:set]==:on \ + or @opt.act[:share_source][:set]==:on \ + or @opt.act[:po4a_sstm][:set]==:on \ + or @opt.act[:git][:set]==:on + begin + if @opt.f_pths.length > 0 + require_relative 'src_shared' + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option do + SiSU_Source::SiSUpodSource.new(@opt).read + end + else + msg='share markup source request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + if @opt.act[:sisupod][:set]==:on #% --sisupod, -S + if @opt.f_pths.length > 0 + require_relative 'src_sisupod_make' # src_sisupod_make.rb + begin + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option_bundle do + SiSU_Doc::Source.new(@opt).sisupod_tar_xz + end + ensure + end + else + msg='sisupod (share markup source) request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + end + if @opt.act[:git][:set]==:on #% --git, -g + if @opt.f_pths.length > 0 + require_relative 'git' # git.rb + begin + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option do + SiSU_Git::Source.new(@opt).read + end + ensure + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option_bundle do + SiSU_Git::Source.new(@opt).git_commit + end + end + else + msg='git request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + end + if (@opt.act[:sisupod][:set]==:on \ + || @opt.act[:share_source][:set]==:on \ + || @opt.act[:po4a_sstm][:set]==:on) \ + and @opt.act[:manifest][:set]==:on #% --manifest, -y + if @opt.f_pths.length > 0 + require_relative 'html_manifest' # html_manifest.rb + begin + ensure + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option_bundle do + SiSU_Manifest::Source.new(@opt).read + end + end + else + msg='manifest request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + end + ensure + if @opt.f_pths.length > 0 + env=SiSU_Env::InfoEnv.new(@opt.fns) + path_pod=env.processing_path.processing_sisupod(@opt).paths + unless @opt.act[:maintenance][:set]==:on + FileUtils::rm_rf("#{path_pod[:sisupod]}/*") \ + if FileTest.directory?(path_pod[:sisupod]) + end + else + #SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + # mark('*** request requires sisu markup files') + end + end + end + if @opt.act[:share_source][:set]==:on + if @opt.f_pths.length > 0 + require_relative 'src_sisupod_sstm' # src_sisupod_sstm.rb + begin + ensure + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option_bundle do + SiSU_Markup::Source_Sisupod.new(@opt).read + end + end + else + msg='share markup source request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + end + if @opt.act[:po4a_sstm][:set]==:on #% --po4a-sst + if @opt.f_pths.length > 0 + require_relative 'src_po4a_sstm' + begin + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option do + SiSU_Markup::Source_Po4a.new(@opt).read # src_po4a_sstm.rb + end + ensure + end + else + msg='sst request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + end + if @opt.act[:po4a_sst_ao_sst][:set]==:on #% --po4a-ao + if @opt.f_pths.length > 0 + require_relative 'src_po4a_sst_ao_sst' + begin + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option do + SiSU_SStm_AO_SStm::Source.new(@opt).read_setup # src_po4a_sst_ao_sst.rb + end + ensure + end + else + msg='sst request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + end + if @opt.act[:po4a_shelf][:set]==:on #% --po4a-shelf + if @opt.f_pths.length > 0 + require_relative 'src_po4a_shelf' + begin + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option do + SiSU_Po4a::Source.new(@opt).read # src_po4a_shelf.rb + end + ensure + end + else + msg='src_po4a_shelf request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + end + if @opt.act[:images][:set]==:on #% --images, -j + if @opt.f_pths.length > 0 + require_relative 'shared_images' + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option do + SiSU_Images::Source.new(@opt).read # shared_images.rb + end + else + msg='place images request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + end + end + def run_termsheet? #broken, revisit later + if @opt.selections.str =~/--termsheet/ #% -T termsheet/standard form #fix later + if @opt.f_pths.length > 0 + @opt.files.each do |fns| + if FileTest.file?(fns) + @opt.fns=fns + case @opt.fns + when /\.(termsheet.rb)$/ + SiSU_Hub_Actions::Operations.new(@opt).termsheet + else #print "not processed --> ", fns, "\n" + end + else SiSU_Hub_Actions::Operations.new(@opt).not_found + end + end + else + msg='process termsheet request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + end + end + def sql? + if @opt.act[:psql][:set]==:on #% --pg, -D + if @opt.f_pths.length > 0 + require_relative 'dbi' + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option do + SiSU_DBI::SQL.new(@opt).connect # dbi.rb + end + else + msg='pgsql request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + end + if @opt.act[:sqlite][:set]==:on #% --sqlite, -d + if @opt.f_pths.length > 0 + require_relative 'dbi' + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option do + SiSU_DBI::SQL.new(@opt).connect # dbi.rb + end + else + msg='sqlite request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + end + end + def manifest? + if @opt.act[:manifest][:set]==:on #% --manifest, -y + if @opt.f_pths.length > 1 + require_relative 'html_manifest' + SiSU_Hub_Loops::OptionLoopFiles.new(@opt).manifest_on_files_translated do + SiSU_Manifest::Source.new(@opt).read # html_manifest.rb + end + end + end + end + def sitemaps? + if @opt.act[:sitemap][:set]==:on #% --sitemap, -Y + if @opt.f_pths.length > 0 + require_relative 'sitemaps' + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option do + SiSU_Sitemaps::Source.new(@opt).read # sitemaps.rb + end + end + end + end + def remote_placement? + if @opt.act[:harvest][:set] !=:on + if @opt.act[:scp][:set]==:on #% -r copy to remote server + if @opt.f_pths.length > 0 + require_relative 'remote' # remote.rb + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option do + SiSU_Remote::Put.new(@opt).scp + end + end + end + if @opt.act[:rsync][:set]==:on #% -R copy to remote server + if @opt.f_pths.length > 0 + require_relative 'remote' # remote.rb + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option do + SiSU_Remote::Put.new(@opt).rsync + end + end + end + else + end + end + def urls? + if @opt.act[:urls_selected][:set]==:on #% --urls + if @opt.f_pths.length > 0 + require_relative 'urls' + SiSU_Hub_Loops::OptionLoopFiles.new(@opt). + loop_files_on_given_option do + SiSU_Urls::Source.new(@opt).read #% urls.rb + end + else + msg='urls request requires sisu markup files' + if (@opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). + mark(msg) + else puts msg + end + end + end + end + self + end + def init? + SiSU_Env::InfoProcessingFlag.new + if @opt.act[:ao][:set]==:on \ + or @opt.act[:maintenance][:set]==:on #% --maintenance, -M + env=SiSU_Env::InfoEnv.new(@opt.fns) + path={} + path[:css]=env.path.output + '/_sisu/css' + path[:xml]=env.path.output + '/_sisu/xml' + path[:xsd]=path[:xml] + '/xsd' + path[:xsd]=path[:xml] + '/rnc' + path[:xsd]=path[:xml] + '/rng' + re_p3=/(sisupod(?:\.txz)?|\S+?\.ss[mt]\.txz|[^\/]+?\.ssp)$/ + unless @opt.files.join(',') =~ re_p3 #do not mix pods with source markup files in command line + if @opt.act[:maintenance][:set] ==:on + $VERBOSE=false #debug $VERBOSE=true + end + end + re_p2=/(sisupod(?:\.zip)?|\S+?\.ss[mt]\.zip)$/ + unless @opt.files.join(',') =~ re_p2 #do not mix pods with source markup files in command line + if @opt.act[:maintenance][:set] ==:on + $VERBOSE=false #debug $VERBOSE=true + end + end + end + if @opt.act[:ao][:set]==:on + @retry_count= -1 + begin + @get_s,@get_p,@get_pl=[],[],[] + re_s=/(\S+?\.-sst)$/ + re_p3=/((?:https?|file):\/\/\S+?(?:\/\S+?\.ss[mt]\.txz|sisupod(?:\.txz)?|\.ssp))/ + re_pl3=/^(\/\S+?\.ss[mt]\.txz)/ + @opt.files.each do |fns| + if fns =~re_s + @get_s << @opt.f_pths[0][:url] + end + if fns =~re_p3 + @get_p << re_p3.match(fns)[1] if re_p3 + end + if fns =~re_pl3 + @get_pl << re_pl3.match(fns)[1] if re_p3 + end + end + if @get_s.length > 0 #% remote markup file .sst + require_relative 'remote' # remote.rb + SiSU_Remote::Get.new(@opt,@get_s).fns + SiSU_Hub_Actions::Operations.new.counter + end + if @get_p.length > 0 #% remote sisupod + require_relative 'remote' # remote.rb + SiSU_Remote::Get.new(@opt,@get_p).sisupod + end + rescue + SiSU_Errors::Rescued.new($!,$@,@opt,@fns).location do + __LINE__.to_s + ':' + __FILE__ + end + @retry_count +=1 + retry unless @retry_count > 1 + ensure + end + end + end + self + end + end + class Operations + @@n_do=0 + def initialize(opt='') + @opt=opt + @cX=SiSU_Screen::Ansi.new(@opt).cX + end + def counter + @@n_do=0 + end + def remote_put_base_site_rsync # -CR + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark(:cyan) \ + if @opt.act[:maintenance][:set] ==:on + require_relative 'remote' # remote.rb + SiSU_Remote::Put.new(@opt).rsync_base + end + def remote_put_base_site_rsync_match # -CCRZ + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark(:cyan) \ + if @opt.act[:maintenance][:set] ==:on + require_relative 'remote' # remote.rb + SiSU_Remote::Put.new(@opt).rsync_base_sync + end + def remote_put_base_site # -Cr + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark(:cyan) \ + if @opt.act[:maintenance][:set] ==:on + require_relative 'remote' # remote.rb + SiSU_Remote::Put.new(@opt).scp_base + end + def remote_put_base_site_all # -CCr + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark(:cyan) \ + if @opt.act[:maintenance][:set] ==:on + require_relative 'remote' # remote.rb + SiSU_Remote::Put.new(@opt).scp_base_all + end + def cgi # -F + require_relative 'cgi' # cgi.rb + SiSU_CGI::SearchSQL.new(@opt).read + end + def termsheet # -t + system("sisu_termsheet #{@opt.selections.str} #{@opt.fns}\n") + @@n_do=@@n_do+1 + SiSU_Screen::Ansi.new( + @opt.selections.str,@@n_do, + 'Termsheet(s) processed' + ).term_sheet_title unless @opt.act[:quiet][:set] ==:on + end + def webrick # -W + prt=SiSU_Env::InfoEnv.new(@fns).port.webrick_port + puts %{#{@cX.blue}[#{@cX.off}#{@cX.green}Start Webrick web server on port: #{prt}#{@cX.off}#{@cX.blue}] #{@cX.off*2} } + require_relative 'webrick' + SiSU_Webserv::WebrickStart.new + end + def not_found + puts "\n#{@cX.fuchsia}FILE NOT FOUND:#{@cX.off} [ #{@opt.fns} ] - requested #{@opt.selections.str} processing skipped\n" + end + def convert_name_message(fns,type,i,o,rune) + %{\nIn filename: "#{@cX.fuchsia}#{fns}#{@cX.off}" [ #{type} ] #{@cX.fuchsia}is apre 0.36 markup filename.#{@cX.off} #{@cX.brown}Please rename your file.#{@cX.off}\n\tAs of sisu-0.37, SiSU markup files with #{@cX.brown}the extensions #{i} should be re-named #{o}#{@cX.off}\n\tif you have the program called 'rename' installed, the following rune should do the trick:\n\t\t#{rune}\n\talternatively try:\n\t\tsisu --convert --36to37 #{fns}\n\trequested #{@opt.selections.str} processing skipped\n} + end + def not_recognised + case @opt.fns + when /(\.s[123])$/ + type=@opt.fns.gsub(/\S+?(#{$1})/,'\1') + rune=%q{rename 's/\.s[123]$/\.sst/' *.s{1,2,3}} + puts convert_name_message(@opt.fns,type,'.s1 .s2 and .s3','.sst',rune) + when /(\.r[123])$/ + type=@opt.fns.gsub(/\S+?(#{$1})/,'\1') + rune=%q{rename 's/\.r[123]$/\.ssm/' *.r{1,2,3}} + puts convert_name_message(@opt.fns,type,'.r1 .r2 and .r3','.sst',rune) + puts %{\n\tNote also that you will need to change the names of the files called/required\n\twithin the document text to build the composite document\n\t\t.s1 .s2 .s3 should be .sst \n\t\t.si should be .ssi\n\trequested #{@opt.selections.str} processing skipped\n} + when /(\.ssi)$/ + puts "\n#{@cX.fuchsia}component filetype:#{@cX.off} [ #{@opt.fns} ] - is not a processed filetype, (it may be used as a component of a .ssm markup file)\n\trequested #{@opt.selections.str} processing skipped\n" + else + puts "\n#{@cX.fuchsia}FILETYPE NOT RECOGNISED:#{@cX.off} [ #{@opt.fns} ] - is not a recognized filetype,\n\trequested #{@opt.selections.str} processing skipped\n" + end + end + end +end +__END__ +#+END_SRC + +** hub_loop_markup_files.rb + +#+BEGIN_SRC ruby :tangle "../lib/sisu/hub_loop_markup_files.rb" +# <<sisu_document_header>> +module SiSU_Hub_Loops + require_relative 'constants' # constants.rb + require_relative 'se' # se.rb + include SiSU_Env + include SiSU_Screen + require_relative 'hub_actions' # hub_actions.rb + require_relative 'hub_options' # hub_options.rb + require_relative 'dp' # dp.rb + include SiSU_Param + require_relative 'utils' # utils.rb + begin + require 'uri' + rescue LoadError + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). + error('uri NOT FOUND (LoadError)') + end + class OptionLoopFiles + attr_reader :opt + def initialize(opt) + @opt=opt + @r=Px[:lng_lst_rgx] + end + def loop_files_on_given_option + @opt.files.each_with_index do |fno,i| + @opt.fno,@opt.fns=fno,fno + @opt.f_pth=@opt.f_pths[i] + if fno !~/\.-sst$/ + @opt.pth=@opt.paths[i] + @opt.lng=@opt.lngs[i] + end + @@pwd=@opt.pth + @opt.pth=@opt.f_pths[i][:pth] + @opt.lng=@opt.f_pths[i][:lng] + Dir.chdir(@opt.f_pth[:pth]) #watch + SiSU_Env::FilenameLanguageCodeInsert.new(@opt,@opt.lng).language_code_insert # ... track + @env=SiSU_Env::InfoEnv.new(fno) + yield + end + end + def loop_files_on_given_option_bundle + @files_bundle={} + @opt.files.each_with_index do |fno,i| + fn_base_bundle=fno.gsub(/(?:~(?:#{@r}))?\.ss[tm]$/,'') + unless @files_bundle[fn_base_bundle] + @files_bundle[fn_base_bundle]={ status: :todo } + end + end + @opt.files.each_with_index do |fno,i| + fn_base_bundle=fno.gsub(/(?:~(?:#{@r}))?\.ss[tm]$/,'') + unless @files_bundle[fn_base_bundle][:status] == :done + @files_bundle[fn_base_bundle][:status] = :done + @opt.fns=fno + @opt.fno=fno + @opt.f_pth=@opt.f_pths[i] + if fno !~/\.-sst$/ + @opt.pth=@opt.paths[i] + @opt.lng=@opt.lngs[i] + end + @@pwd=@opt.pth + @opt.pth=@opt.f_pths[i][:pth] + @opt.lng=@opt.f_pths[i][:lng] + Dir.chdir(@opt.f_pth[:pth]) #watch + @env=SiSU_Env::InfoEnv.new(fno) + yield + else next + end + end + end + def manifest_on_files_translated + number_of_files={} + @opt.files.each_with_index do |fns,i| + fn=fns.gsub(/(?:~(?:#{@r}))?\.ss[tm]$/,'') + (number_of_files[fn].is_a?(Array)) \ + ? (number_of_files[fn] << i) + : (number_of_files.store(fn,[i])) + end + files_translated_idx=[] + number_of_files.each do |x| + if x[1].length > 1 + files_translated_idx << x[1] + end + end + #files_translated_idx=number_of_files.select do |x| + # x[1] if x[1].length > 1 + #end + if files_translated_idx.flatten.length > 1 + SiSU_Screen::Ansi.new( + @opt.act[:color_state][:set], + 'Manifest re-run on (currently generated) translated files', + '' + ).grey_title_hi unless @opt.act[:quiet][:set] ==:on + files_translated_idx.flatten.each do |i| + @opt.fns=@opt.files[i] + @opt.f_pth=@opt.f_pths[i] + if @opt.fns =~/\.-sst$/ + @opt.pth=Dir.pwd + @opt.lng='en' + elsif @opt.fno =~/\.txz$/ + @opt.pth=@opt.f_pths[i][:pth] + @opt.lng=@opt.f_pths[i][:lng] + else + @opt.pth=@opt.f_pths[i][:pth] + @opt.lng=@opt.f_pths[i][:lng] + end + @@pwd=@opt.pth + Dir.chdir(@opt.pth) #watch + @env=SiSU_Env::InfoEnv.new(@opt.fns) + yield + end + end + end + end +end +__END__ +#+END_SRC + +* document header + +#+NAME: sisu_document_header +#+BEGIN_SRC text +encoding: utf-8 +- Name: SiSU + + - Description: documents, structuring, processing, publishing, search + hub + + - Author: Ralph Amissah + <ralph.amissah@gmail.com> + + - Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2019, + 2020, 2021, 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 + + - Homepages: + <http://www.sisudoc.org> + + - Git + <https://git.sisudoc.org/projects/> + <https://git.sisudoc.org/projects/?p=software/sisu.git;a=summary> + <https://git.sisudoc.org/projects/?p=markup/sisu-markup-samples.git;a=summary> +#+END_SRC |