diff options
Diffstat (limited to 'lib/sisu/develop/hub_options.rb')
| -rw-r--r-- | lib/sisu/develop/hub_options.rb | 1695 | 
1 files changed, 0 insertions, 1695 deletions
diff --git a/lib/sisu/develop/hub_options.rb b/lib/sisu/develop/hub_options.rb deleted file mode 100644 index 1c3f4e3d..00000000 --- a/lib/sisu/develop/hub_options.rb +++ /dev/null @@ -1,1695 +0,0 @@ -# encoding: utf-8 -=begin - -* Name: SiSU - -** Description: documents, structuring, processing, publishing, search -*** hub, command line options parsing - -*** hub - -** Author: Ralph Amissah -  <ralph@amissah.com> -  <ralph.amissah@gmail.com> - -** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -  2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 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> - -** Git -  <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> -  <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/hub_options.rb;hb=HEAD> - -=end -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 =~/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 \ -        =~/"--inc-minitoc"/ -          { bool: true, set: :on } -        elsif select_arr.inspect \ -        =~/"--(?:exc|no)-minitoc"/ \ -        || act[:switch][:off].inspect =~/"minitoc"/ -          { bool: false, set: :off } -        else { bool: true, 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: true, set: :na } -        end -        act[:metadata]=if select_arr.inspect \ -        =~/"--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: true, 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 } -        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[: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[: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  | 
