diff options
Diffstat (limited to 'lib')
98 files changed, 3431 insertions, 1969 deletions
| diff --git a/lib/sisu/v5/ao.rb b/lib/sisu/v5/ao.rb index d7b418f5..0a494184 100644 --- a/lib/sisu/v5/ao.rb +++ b/lib/sisu/v5/ao.rb @@ -124,7 +124,7 @@ module SiSU_AO          : @opt.fns          create_ao        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@@fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selection,@@fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -145,7 +145,7 @@ module SiSU_AO          ? read_fnc          : @@ao_array.dup        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selection,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -166,7 +166,7 @@ module SiSU_AO          ? read_idx_sst          : @@idx_arr[:sst].dup #check        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selection,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -187,7 +187,7 @@ module SiSU_AO          ? read_idx_raw          : @@idx_arr[:tex].dup #check        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selection,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -208,7 +208,7 @@ module SiSU_AO          ? read_idx_html          : @@idx_arr[:html].dup        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selection,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -229,7 +229,7 @@ module SiSU_AO          ? read_idx_xhtml          : @@idx_arr[:xhtml].dup        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selection,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -250,7 +250,7 @@ module SiSU_AO          ? read_map_nametags          : @@map_arr[:nametags].dup        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selection,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -271,7 +271,7 @@ module SiSU_AO          ? read_map_ocn_htmlseg          : @@map_arr[:ocn_htmlseg].dup        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selection,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/ao_composite.rb b/lib/sisu/v5/ao_composite.rb index af194db7..5a183d65 100644 --- a/lib/sisu/v5/ao_composite.rb +++ b/lib/sisu/v5/ao_composite.rb @@ -114,7 +114,7 @@ module SiSU_Assemble          end          Dir.chdir(pwd)        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -157,7 +157,7 @@ module SiSU_Assemble          end          tuned_file=tuned_file.flatten.compact        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -253,7 +253,7 @@ module SiSU_Assemble          fns_array=IO.readlines(@opt.fns,'')          insertions?(fns_array)        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/ao_doc_str.rb b/lib/sisu/v5/ao_doc_str.rb index 931e51d3..11990abf 100644 --- a/lib/sisu/v5/ao_doc_str.rb +++ b/lib/sisu/v5/ao_doc_str.rb @@ -1223,7 +1223,7 @@ module SiSU_AO_DocumentStructureExtract      end      def structure_info        def lv -        %w[A~ B~ C~ D~ 1 2 3] +        %w[A~ B~ C~ D~ 1 2 3 4]        end        def possible_parents(child)          case child @@ -1234,6 +1234,7 @@ module SiSU_AO_DocumentStructureExtract          when /1/  then 'A~, B~, C~, D~'          when /2/  then '1'          when /3/  then '2' +        when /4/  then '3'          end        end        def possible_children(parent) @@ -1244,20 +1245,21 @@ module SiSU_AO_DocumentStructureExtract          when /D~/ then '1'          when /1/  then '2'          when /2/  then '3' -        when /3/  then 'none' +        when /3/  then '4' +        when /4/  then 'none'          end        end        self      end      def document_structure_check_info(node,node_parent,status=:ok) -      node_ln=/^([0-6])/.match(node)[1].to_i -      node_parent_ln=/^([0-6])/.match(node_parent)[1].to_i +      node_ln=/^([0-7])/.match(node)[1].to_i +      node_parent_ln=/^([0-7])/.match(node_parent)[1].to_i        if status==:error \        or @md.opt.act[:maintenance][:set]==:on          puts %{node: #{node},    parent node: #{node_parent}  #{status.upcase}}          if status==:error -          node_ln=/^([0-6])/.match(node)[1].to_i -          node_parent_ln=/^([0-6])/.match(node_parent)[1].to_i +          node_ln=/^([0-7])/.match(node)[1].to_i +          node_parent_ln=/^([0-7])/.match(node_parent)[1].to_i            STDERR.puts %{current level: #{structure_info.lv[node_ln]} (possible parent levels: #{structure_info.possible_parents(structure_info.lv[node_ln])})  parent level:  #{structure_info.lv[node_parent_ln]} (possible child levels: #{structure_info.possible_children(structure_info.lv[node_parent_ln])})  SKIPPED processing file: [#{@md.opt.lng}] "#{@md.fns}"} @@ -1297,12 +1299,12 @@ SKIPPED processing file: [#{@md.opt.lng}] "#{@md.fns}"        required_headers_present?        data=@data        @o_array=[] -      node=ocn=ocn_dv=ocn_sp=ocnh=ocnh0=ocnh1=ocnh2=ocnh3=ocnh4=ocnh5=ocnh6=ocno=ocnp=ocnt=ocnc=ocng=ocni=ocnu=0 # h heading, o other, t table, g group, i image +      node=ocn=ocn_dv=ocn_sp=ocnh=ocnh0=ocnh1=ocnh2=ocnh3=ocnh4=ocnh5=ocnh6=ocnh7=ocno=ocnp=ocnt=ocnc=ocng=ocni=ocnu=0 # h heading, o other, t table, g group, i image        regex_exclude_ocn_and_node = /#{Rx[:meta]}|^@\S+?:\s|^4~endnotes|^#{Mx[:lv_o]}4:endnotes#{Mx[:lv_c]}|^\^~ |<:e[:_]\d+?>|^<:\#|<:- |<[:!]!4|<hr width|#{Mx[:br_endnotes]}|\A\s*\Z/mi #ocn here #  added with Tune.code #ยก -      parent=node1=node2=node3=node4=node5=node6=nil +      parent=node1=node2=node3=node4=node5=node6=node7=nil        node0='0:0;0'        @collapsed_lv0=0 -      @lev_occurences={ a: 0, b: 0, c: 0, d: 0, l1: 0, l2: 0, l3: 0 } +      @lev_occurences={ a: 0, b: 0, c: 0, d: 0, l1: 0, l2: 0, l3: 0, l4: 0 }        data.each do |dob|          h={}          if (dob.obj !~ regex_exclude_ocn_and_node || dob.is==:code) \ @@ -1336,7 +1338,8 @@ SKIPPED processing file: [#{@md.opt.lng}] "#{@md.fns}"            or ln.to_s =~@md.lv3 \            or ln.to_s =~@md.lv4 \            or ln.to_s =~@md.lv5 \ -          or ln.to_s =~@md.lv6) +          or ln.to_s =~@md.lv6 \ +          or ln.to_s =~@md.lv7)              if not dob.obj =~/~#|-#/                ocnh+=1              end @@ -1523,7 +1526,7 @@ or this level should be level :B~ rather than #{dob.lv}}                  warning_incorrect_parent_level_or_level(dob.obj)                  puts "parent is level 4~ & this level #{dob.lv}  either parent should be level 5~ -or this level should be 5~ rather #{dob.lv}" #level 6 +or this level should be 5~ rather #{dob.lv}"                  document_structure_check_info(node6,node4,:error)                  @collapsed_lv6=@collapsed_lv4+1                  node4 @@ -1549,6 +1552,59 @@ or this level should be 5~ rather #{dob.lv}" #level 6                end                collapsed_level=@collapsed_lv6                node,ocn_sp=node6,"h#{ocnh}" +            elsif ln==7 \ +            or ln=~@md.lv7 +              @lev_occurences[:l4] += 1 +              if not dob.obj =~/~#|-#/ +                ocn_flag=true +                ocnh7+=1 +                node7="7:#{ocnh7};#{ocn}" +              else +                ocn_flag=false +                node7="7:0;0" +              end +              parent=if node6 +                document_structure_check_info(node7,node6) +                @collapsed_lv7=@collapsed_lv6+1 +                node5 +              elsif node5 +                warning_incorrect_parent_level_or_level(dob.obj) +                puts "parent is level 5~ & this level #{dob.lv} +either parent should be level 6~ +or this level should be 6~ rather #{dob.lv}" +                document_structure_check_info(node7,node5,:error) +                @collapsed_lv6=@collapsed_lv5+1 +                node5 +              elsif node4 +                warning_incorrect_parent_level_or_level(dob.obj) +                puts "parent is level 4~ & this level #{dob.lv} +either parent should be level 6~ +or this level should be 6~ rather #{dob.lv}" +                document_structure_check_info(node7,node4,:error) +                @collapsed_lv6=@collapsed_lv4+1 +                node4 +              elsif node3 +                warning_incorrect_parent_level_or_level(dob.obj) +                document_structure_check_info(node7,node3,:error) +                @collapsed_lv6=@collapsed_lv3+1 +                node3 +              elsif node2 +                warning_incorrect_parent_level_or_level(dob.obj) +                document_structure_check_info(node7,node2,:error) +                @collapsed_lv6=@collapsed_lv2+1 +                node2 +              elsif node1 +                warning_incorrect_parent_level_or_level(dob.obj) +                document_structure_check_info(node7,node1,:error) +                @collapsed_lv6=@collapsed_lv1+1 +                node1 +              else +                warning_incorrect_parent_level_or_level(dob.obj) +                document_structure_check_info(node7,node0,:error) +                node0 +              end +              collapsed_level=@collapsed_lv7 +              node,ocn_sp=node7,"h#{ocnh}"              end            else              unless @lev_occurences[:l1] > 0 diff --git a/lib/sisu/v5/ao_endnotes.rb b/lib/sisu/v5/ao_endnotes.rb index 5517cd87..e83cdfc3 100644 --- a/lib/sisu/v5/ao_endnotes.rb +++ b/lib/sisu/v5/ao_endnotes.rb @@ -76,11 +76,11 @@ module SiSU_AO_Endnotes        endnote_ref=1        data.each do |dob|                                                                                 # manually numbered endnotes <!e(\d)!> <!e_(\d)!> --> -        if @md.opt.mod.inspect =~/--no-asterisk|--no-annotate/ +        if @md.opt.selections.str =~/--no-asterisk|--no-annotate/            dob.obj=dob.obj.              gsub(/#{Mx[:en_b_o]}\s.+?#{Mx[:en_b_c]}/,'')          end -        if @md.opt.mod.inspect =~/--no-dagger|--no-annotate/ +        if @md.opt.selections.str =~/--no-dagger|--no-annotate/            dob.obj=dob.obj.              gsub(/#{Mx[:en_b_o]}[+]\s.+?#{Mx[:en_b_c]}/,'')          end diff --git a/lib/sisu/v5/ao_expand_insertions.rb b/lib/sisu/v5/ao_expand_insertions.rb index dce14ee4..47ac9887 100644 --- a/lib/sisu/v5/ao_expand_insertions.rb +++ b/lib/sisu/v5/ao_expand_insertions.rb @@ -66,14 +66,18 @@ module SiSU_AO_Insertions        @md,@data=md,data      end      def output_filetypes_in_cmd(cmd_shortcut,lnk=nil) #make list of file types in shortcut command (as configured), e.g. when sisu -3 is used -      cf_defaults=SiSU_Env::InfoProcessingFlag.new -      cmd_list=case cmd_shortcut.inspect -      when /0/ then cf_defaults.cf_0 -      when /1/ then cf_defaults.cf_1 -      when /2/ then cf_defaults.cf_2 -      when /3/ then cf_defaults.cf_3 -      when /4/ then cf_defaults.cf_4 -      when /5/ then cf_defaults.cf_5 +      act_defaults=SiSU_Env::InfoProcessingFlag.new +      cmd_list=case cmd_shortcut.inspect #check on expectation, string v array +      when /0/ then act_defaults.act_0.str +      when /1/ then act_defaults.act_1.str +      when /2/ then act_defaults.act_2.str +      when /3/ then act_defaults.act_3.str +      when /4/ then act_defaults.act_4.str +      when /5/ then act_defaults.act_5.str +      when /6/ then act_defaults.act_6.str +      when /7/ then act_defaults.act_7.str +      when /8/ then act_defaults.act_8.str +      when /9/ then act_defaults.act_9.str        end        file_type_names={}        file_type_names[:gen],file_type_names[:src]=[],[] diff --git a/lib/sisu/v5/cgi.rb b/lib/sisu/v5/cgi.rb index efea863c..201f028b 100644 --- a/lib/sisu/v5/cgi.rb +++ b/lib/sisu/v5/cgi.rb @@ -61,7 +61,7 @@      (pgsql sqlite)  =end -module  SiSU_CGI                                                                 #% database building documents +module  SiSU_CGI                                        #% database building documents    require_relative 'se'                                 # se.rb    require_relative 'cgi_pgsql'                          # cgi_pgsql.rb    require_relative 'cgi_sqlite'                         # cgi_sqlite.rb @@ -71,9 +71,9 @@ module  SiSU_CGI        @webserv=@opt.files[0].to_s.strip      end      def read -      if @opt.mod.inspect =~/--db[=-]["']?(?:pg|pg?sql|postgres(?:ql)?)["']+/ +      if @opt.act[:psql][:set]==:on          SiSU_CGI_PgSQL::SearchPgSQL.new(@opt,@webserv).pgsql -      elsif @opt.mod.inspect =~/--db[=-](?:sqlite)/ +      elsif @opt.act[:sqlite][:set]==:on          SiSU_CGI_SQLite::SearchSQLite.new(@opt,@webserv).sqlite        else          puts <<-WOK diff --git a/lib/sisu/v5/cgi_pgsql.rb b/lib/sisu/v5/cgi_pgsql.rb index 633e20fc..e5b61cc1 100644 --- a/lib/sisu/v5/cgi_pgsql.rb +++ b/lib/sisu/v5/cgi_pgsql.rb @@ -60,7 +60,7 @@   ** Description: generates naive cgi search form for search of sisu database (pgsql)  =end -module  SiSU_CGI_PgSQL                                                            #% database building documents +module  SiSU_CGI_PgSQL                                  #% database building documents    require_relative 'se'                                 # se.rb    require_relative 'cgi_sql_common'                     # cgi_sql_common.rb      include SiSU_CGI_SQL diff --git a/lib/sisu/v5/cgi_sql_common.rb b/lib/sisu/v5/cgi_sql_common.rb index c760a9db..7fadb68e 100644 --- a/lib/sisu/v5/cgi_sql_common.rb +++ b/lib/sisu/v5/cgi_sql_common.rb @@ -64,7 +64,6 @@ module SiSU_CGI_SQL    class CGI_Common      def initialize(webserv,opt,image_src,dir)        @webserv,@opt,@image_src,@env=webserv,opt,image_src,dir -      @cmd=opt.cmd      end      def about        <<-'WOK_SQL' diff --git a/lib/sisu/v5/cgi_sqlite.rb b/lib/sisu/v5/cgi_sqlite.rb index 531071c4..4644dbc0 100644 --- a/lib/sisu/v5/cgi_sqlite.rb +++ b/lib/sisu/v5/cgi_sqlite.rb @@ -60,7 +60,7 @@   ** Description: generates naive cgi search form for search of sisu database (sqlite)  =end -module  SiSU_CGI_SQLite                                                            #% database building documents +module  SiSU_CGI_SQLite                                 #% database building documents    require_relative 'se'                                 # se.rb    require_relative 'cgi_sql_common'                     # cgi_sql_common.rb      include SiSU_CGI_SQL diff --git a/lib/sisu/v5/conf.rb b/lib/sisu/v5/conf.rb index 820d0941..b126d320 100644 --- a/lib/sisu/v5/conf.rb +++ b/lib/sisu/v5/conf.rb @@ -206,10 +206,10 @@ module SiSU_Initialize        rnc.close        #xsd        schema=SiSU_Env::SystemCall.new(rnc_src,xsd_file) -      schema.relaxng(@opt.cmd) +      schema.relaxng(@opt.selections.str)        #rng        schema=SiSU_Env::SystemCall.new(rnc_src,rng_file) -      schema.relaxng(@opt.cmd) +      schema.relaxng(@opt.selections.str)        #rnc        if FileTest.file?(rnc_src)          FileUtils::cp(rnc_src,rnc_file) @@ -228,10 +228,10 @@ module SiSU_Initialize        rnc.close        #xsd        schema=SiSU_Env::SystemCall.new(rnc_src,xsd_file) -      schema.relaxng(@opt.cmd) +      schema.relaxng(@opt.selections.str)        #rng        schema=SiSU_Env::SystemCall.new(rnc_src,rng_file) -      schema.relaxng(@opt.cmd) +      schema.relaxng(@opt.selections.str)        #rnc        if FileTest.file?(rnc_src)          FileUtils::cp(rnc_src,rnc_file) @@ -250,10 +250,10 @@ module SiSU_Initialize        rnc.close        #xsd        schema=SiSU_Env::SystemCall.new(rnc_src,xsd_file) -      schema.relaxng(@opt.cmd) +      schema.relaxng(@opt.selections.str)        #rng        schema=SiSU_Env::SystemCall.new(rnc_src,rng_file) -      schema.relaxng(@opt.cmd) +      schema.relaxng(@opt.selections.str)        #rnc        if FileTest.file?(rnc_src)          FileUtils::cp(rnc_src,rnc_file) @@ -268,7 +268,7 @@ module SiSU_Initialize        rnc << @rxng.rnc_model_output_sax        rnc.close        schema=SiSU_Env::SystemCall.new(rnc_file,dtd_file) -      schema.relaxng(@opt.cmd) +      schema.relaxng(@opt.selections.str)      end      def trang_rnc_model_input_dom        rnc_file=@env.processing_path.ao + '/dom.rnc' @@ -277,7 +277,7 @@ module SiSU_Initialize        rnc << @rxng.rnc_model_output_dom        rnc.close        schema=SiSU_Env::SystemCall.new(rnc_file,dtd_file) -      schema.relaxng(@opt.cmd) +      schema.relaxng(@opt.selections.str)      end      def trang_rnc_model_input_node        rnc_file=@env.processing_path.ao + '/node.rnc' @@ -286,7 +286,7 @@ module SiSU_Initialize        rnc << @rxng.rnc_model_input_node        rnc.close        schema=SiSU_Env::SystemCall.new(rnc_file,dtd_file) -      schema.relaxng(@opt.cmd) +      schema.relaxng(@opt.selections.str)      end    end  end diff --git a/lib/sisu/v5/constants.rb b/lib/sisu/v5/constants.rb index 55c3ff2a..e0f28a6d 100644 --- a/lib/sisu/v5/constants.rb +++ b/lib/sisu/v5/constants.rb @@ -267,8 +267,8 @@ else    }  end  Db={ -  name_prefix:               "SiSU#{SiSU_is[:version_dir]}b_", -  name_prefix_db:            "sisu_#{SiSU_is[:version_dir]}b_", +  name_prefix:               "SiSU#{SiSU_is[:version_dir]}c_", +  name_prefix_db:            "sisu_#{SiSU_is[:version_dir]}c_",    col_title:                  800,    col_title_part:             400,    col_title_edition:           10, diff --git a/lib/sisu/v5/css.rb b/lib/sisu/v5/css.rb index b99359aa..f1598550 100644 --- a/lib/sisu/v5/css.rb +++ b/lib/sisu/v5/css.rb @@ -236,7 +236,7 @@ WOK      margin-bottom: 0px;      text-indent: 0mm;    } -  p, h0, h1, h2, h3, h4, h5, h6 { +  p, h0, h1, h2, h3, h4, h5, h6, h7 {      display: block;      font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman;      font-size: 100%; @@ -447,7 +447,7 @@ WOK      padding-left: 0em;      text-indent: 0em;    } -  p, h0, h1, h2, h3, h4, h5, h6 { +  p, h0, h1, h2, h3, h4, h5, h6, h7 {      display: block;      font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman;      font-size: 100%; @@ -1307,18 +1307,18 @@ WOK      font-weight: bold;    } -  h0, h1, h2, h3, h4, h5, h6 { +  h0, h1, h2, h3, h4, h5, h6, h7 {      font-weight: bold;      line-height: 120%;      text-align: left;      margin-top: 20px;      margin-bottom: 10px;    } -  h4.norm, h5.norm, h6.norm { +  h4.norm, h5.norm, h6.norm, h7.norm {      margin-top: 10px;      margin-bottom: 0px;    } -  h1.center, h2.center, h3.center, h4.center, h5.center, h6.center { +  h1.center, h2.center, h3.center, h4.center, h5.center, h6.center, h7.center {      text-align: center;    }    h1 { font-size: 120%; } @@ -1327,6 +1327,7 @@ WOK    h4 { font-size: 105%; }    h5 { font-size: 100%; }    h6 { font-size: 100%; } +  h7 { font-size: 100%; }    h0 { font-size: 80%; }    h1.i {margin-left: 2em;} @@ -1418,6 +1419,8 @@ WOK    }    h6.banner {    } +  h7.banner { +  }    .toc {      font-weight: normal; @@ -1454,6 +1457,11 @@ WOK      font-size: 90%;      line-height: 110%;    } +  h7.toc { +    margin-left: 7em; +    font-size: 85%; +    line-height: 100%; +  }    .microtoc {      margin-top: 2px; @@ -1487,6 +1495,11 @@ WOK      font-weight: normal;      font-size: 90%;    } +  h7.microtoc { +    margin-left: 30mm; +    font-weight: normal; +    font-size: 85%; +  }    .subtoc {      margin-right: 34%; @@ -1504,6 +1517,12 @@ WOK      margin-top: 0px;      margin-bottom: 0px;    } +  h7.subtoc { +    margin-left: 4em; +    font-size: 70%; +    margin-top: 0px; +    margin-bottom: 0px; +  }    div.substance {      width: 100%; @@ -1629,15 +1648,19 @@ WOK      margin-left: 2em;      font-size: 85%;    } +  h7.minitoc { +    margin-left: 3em; +    font-size: 80%; +  }    h0.minitoc {      margin-left: 0em;      font-size: 90%;    } -  h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, p.c { +  h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, h7.c, p.c {      text-align: center    } -  h1.red, h2.red, h3.red, h4.red, h5.red, h6.red { +  h1.red, h2.red, h3.red, h4.red, h5.red, h6.red, h7.red {      text-align: center;      color: #ff0000;      margin-left: 5mm; @@ -1646,7 +1669,7 @@ WOK      margin-bottom: 20px;      margin-right: 15mm;    } -  h1.ruby, h2.ruby, h3.ruby, h4.ruby, h5.ruby, h6.ruby { +  h1.ruby, h2.ruby, h3.ruby, h4.ruby, h5.ruby, h6.ruby, h7.ruby {      text-align: center;      color: #990000;      margin-left: 5mm; @@ -1856,6 +1879,11 @@ WOK        font-weight: bold;        text-align: left;      } +    text[class|="h7"] { +      font-size: 110%; +      font-weight: bold; +      text-align: left; +    }      text[class|="indent0"] {        padding-left: 10%;      } @@ -2591,6 +2619,11 @@ WOK        font-weight: bold;        text-align: left;      } +    text[class|="h7"] { +      font-size: 110%; +      font-weight: bold; +      text-align: left; +    }      text[class|="indent0"] {        padding-left: 10%;      } @@ -3271,6 +3304,11 @@ WOK        font-weight: bold;        text-align: left;      } +    para.h7 { +      font-size: 110%; +      font-weight: bold; +      text-align: left; +    }      table {        margin-left: 5%;        display: block; @@ -3427,6 +3465,11 @@ WOK        font-weight: bold;        text-align: left;      } +    p.h7 { +      font-size: 150%; +      font-weight: bold; +      text-align: left; +    }      ocn {        display: block;        text-align: right; diff --git a/lib/sisu/v5/db_create.rb b/lib/sisu/v5/db_create.rb index 35b15ada..956a470a 100644 --- a/lib/sisu/v5/db_create.rb +++ b/lib/sisu/v5/db_create.rb @@ -264,6 +264,7 @@ module SiSU_DbCreate              lev4            SMALLINT,              lev5            SMALLINT,              lev6            SMALLINT, +            lev7            SMALLINT,              en_a            SMALLINT NULL,              en_z            SMALLINT NULL,              en_a_asterisk   SMALLINT NULL, @@ -506,9 +507,9 @@ module SiSU_DbCreate            %{COMMENT ON COLUMN doc_objects.metadata_tid              IS 'tie to title in metadata_and_text';},            %{COMMENT ON COLUMN doc_objects.lev_an -            IS 'doc level A-D 1-6';}, +            IS 'doc level A-D 1-4';},            %{COMMENT ON COLUMN doc_objects.lev -            IS 'doc level 0-6 \d\~';}, +            IS 'doc level 0-7 \d\~';},            %{COMMENT ON COLUMN doc_objects.seg              IS 'segment name from level number 4 (lv 1)';},            %{COMMENT ON COLUMN doc_objects.ocn @@ -547,6 +548,8 @@ module SiSU_DbCreate              IS 'document structure, level number 5';},            %{COMMENT ON COLUMN doc_objects.lev6              IS 'document structure, level number 6';}, +          %{COMMENT ON COLUMN doc_objects.lev7 +            IS 'document structure, level number 7';},            %{COMMENT ON COLUMN doc_objects.t_of              IS 'document structure, type of object (object is of)';},            %{COMMENT ON COLUMN doc_objects.t_is diff --git a/lib/sisu/v5/db_import.rb b/lib/sisu/v5/db_import.rb index 791eef43..5bb886ff 100644 --- a/lib/sisu/v5/db_import.rb +++ b/lib/sisu/v5/db_import.rb @@ -79,7 +79,7 @@ module SiSU_DbImport        @env=SiSU_Env::InfoEnv.new(@opt.fns)        @dal="#{@env.processing_path.ao}"        @fnb=if @opt.fns.empty? \ -      or @opt.cmd.empty? +      or @opt.selections.str.empty?          ''        else          @md=SiSU_Param::Parameters.new(@opt).get @@ -118,7 +118,7 @@ module SiSU_DbImport          puts "#{__FILE__}:#{__LINE__}" if @opt.act[:maintenance][:set]==:on        end        @id_n =0 if @col[:lid].nil? or @col[:lid].to_s.empty? -      @col[:lv0]=@col[:lv1]=@col[:lv2]=@col[:lv3]=@col[:lv4]=@col[:lv5]=@col[:lv6]=0 +      @col[:lv0]=@col[:lv1]=@col[:lv2]=@col[:lv3]=@col[:lv4]=@col[:lv5]=@col[:lv6]=@col[:lv7]=0        @db=SiSU_Env::InfoDb.new        @pdf_fn=SiSU_Env::FileOp.new(@md).base_filename        @@dl ||=SiSU_Env::InfoEnv.new.digest.length @@ -233,7 +233,7 @@ module SiSU_DbImport              @conn.exec("COMMIT")            end          rescue -          SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +          SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do              __LINE__.to_s + ':' + __FILE__            end            sqlfn="#{@env.processing_path.sql}/#{@md.fnb}.sql" @@ -390,6 +390,7 @@ module SiSU_DbImport                when /1/ then @col[:lv1]+=1                when /2/ then @col[:lv2]+=1                when /3/ then @col[:lv3]+=1 +              when /4/ then @col[:lv4]+=1                end                @col[:lev]=@col[:plaintext]=@col[:body]=''              elsif data.is==:heading \ @@ -480,7 +481,8 @@ module SiSU_DbImport                @col[:lev]=@col[:plaintext]=@col[:body]=''              elsif data.is==:heading \              && data.ln==6 -              txt,@col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.obj,data.ocn,data.lv,data.odv,data.osp,data.of,data.is,data.node,data.parent,'','' +              txt,       @col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]= +                data.obj,data.ocn,  data.lv,      data.odv,   data.osp,   data.of,    data.is,    data.node,  data.parent,  '',                 ''                @@seg_full=data.name if data.is==:heading && data.ln==6 && data.name #check data.name                @@seg ||='' #nil # watch                @col[:seg]=@@seg @@ -508,6 +510,37 @@ module SiSU_DbImport                t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file_maint)                @tuple_array << t.tuple                @col[:lev]=@col[:plaintext]=@col[:body]='' +            elsif data.is==:heading \ +            && data.ln==7 +              txt,       @col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]= +                data.obj,data.ocn,  data.lv,      data.odv,   data.osp,   data.of,    data.is,    data.node,  data.parent,  '',                 '' +              @@seg_full=data.name if data.is==:heading && data.ln==7 && data.name #check data.name +              @@seg ||='' #nil # watch +              @col[:seg]=@@seg +              @col[:lv7]+=1 +              @col[:lid]+=1 +              @col[:lev]=7 +              @hname=if @col[:seg] \ +              and not @col[:seg].to_s.empty? +                @@hname=@col[:seg].to_s +              else @@hname +              end +              @env=SiSU_Env::InfoEnv.new(@md.fns) +              @base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html" +              txt=endnotes(txt).extract_any +              body=SiSU_FormatShared::CSS_Format.new(@md,data).lev4_plus +              @col[:body]=special_character_escape(body) +              plaintext=@col[:body].dup +              plaintext=strip_markup(plaintext) +              @col[:plaintext]=clean_searchable_text(plaintext) +              book_idx=book_idx_hash_to_str(data.idx) +              @col[:book_idx]=clean_searchable_text(book_idx) +              @en_a,@en_z=@en[0].first,@en[0].last if @en[0] +              @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0] +              @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last if @en_pls[0] +              t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file_maint) +              @tuple_array << t.tuple +              @col[:lev]=@col[:plaintext]=@col[:body]=''                                                                                 #% :structure :layout :comment              elsif data.of==:structure \              || data.of==:layout \ @@ -700,7 +733,7 @@ module SiSU_DbImport            end          end        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -833,7 +866,7 @@ module SiSU_DbImport          t=SiSU_DbTuple::LoadUrls.new(@conn,f,u,@@id_t,@opt,@file_maint)          tuple=t.tuple        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/db_load_tuple.rb b/lib/sisu/v5/db_load_tuple.rb index 98310bfd..36c8fddf 100644 --- a/lib/sisu/v5/db_load_tuple.rb +++ b/lib/sisu/v5/db_load_tuple.rb @@ -69,8 +69,8 @@ module SiSU_DbTuple      def initialize(conn,col,opt,file_maint)        @conn,@col,@opt,@file_maint=conn,col,opt,file_maint        @col[:lev]=@col[:lev].to_i -      unless @col[:lev].inspect=~/^[0-6]/ \ -      or @col[:lev]==0..6 +      unless @col[:lev].inspect=~/^[0-7]/ \ +      or @col[:lev]==0..7          @col[:lev]=9        end        @col[:ocn]=0 unless @col[:ocn].inspect=~/\d+/ @@ -78,11 +78,11 @@ module SiSU_DbTuple      end      def tuple                                                                    #% import line        sql_entry=if @col[:en_a] -        "INSERT INTO doc_objects (lid, metadata_tid, lev, lev_an, clean, body, book_idx, ocn, ocnd, ocns, seg, lev0, lev1, lev2, lev3, lev4, lev5, lev6, en_a, en_z, t_of, t_is, node, parent, digest_clean, digest_all) " + -        "VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:lev_an]}', '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:book_idx]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv0]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:en_a]}', '#{@col[:en_z]}', '#{@col[:t_of]}', '#{@col[:t_is]}', '#{@col[:node]}', '#{@col[:parent]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');" +        "INSERT INTO doc_objects (lid, metadata_tid, lev, lev_an, clean, body, book_idx, ocn, ocnd, ocns, seg, lev0, lev1, lev2, lev3, lev4, lev5, lev6, lev7, en_a, en_z, t_of, t_is, node, parent, digest_clean, digest_all) " + +        "VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:lev_an]}', '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:book_idx]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv0]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:lv7]}', '#{@col[:en_a]}', '#{@col[:en_z]}', '#{@col[:t_of]}', '#{@col[:t_is]}', '#{@col[:node]}', '#{@col[:parent]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');"        else -        "INSERT INTO doc_objects (lid, metadata_tid, lev, lev_an, clean, body, book_idx, ocn, ocnd, ocns, seg, lev0, lev1, lev2, lev3, lev4, lev5, lev6, t_of, t_is, node, parent, digest_clean, digest_all) " + -        "VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:lev_an]}', '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:book_idx]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv0]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:t_of]}', '#{@col[:t_is]}', '#{@col[:node]}', '#{@col[:parent]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');" +        "INSERT INTO doc_objects (lid, metadata_tid, lev, lev_an, clean, body, book_idx, ocn, ocnd, ocns, seg, lev0, lev1, lev2, lev3, lev4, lev5, lev6, lev7, t_of, t_is, node, parent, digest_clean, digest_all) " + +        "VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:lev_an]}', '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:book_idx]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv0]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:lv7]}', '#{@col[:t_of]}', '#{@col[:t_is]}', '#{@col[:node]}', '#{@col[:parent]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');"        end        if @opt.act[:verbose_plus][:set]==:on          if @opt.act[:maintenance][:set]==:on @@ -97,7 +97,7 @@ module SiSU_DbTuple          end        end        if @opt.act[:verbose][:set]==:on -        if @col[:lev].inspect =~/[0-356]/ +        if @col[:lev].inspect =~/[0-35-7]/            lev=case @col[:lev].inspect            when /0/ then ':A'            when /1/ then ':B' @@ -105,10 +105,11 @@ module SiSU_DbTuple            when /3/ then ':D'            when /5/ then ' 2'            when /6/ then ' 3' +          when /7/ then ' 4'            end -          puts %{#{lev}>\t#{@col[:lv0]}\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:ocn]}\t#{@col[:node]}\t#{@col[:ocns]}} +          puts %{#{lev}>\t#{@col[:lv0]}\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:lv7]}\t#{@col[:ocn]}\t#{@col[:node]}\t#{@col[:ocns]}}          elsif @col[:lev].inspect =~/[4]/ -          puts %{ #{@cX.green}1>#{@cX.off}\t#{@col[:lv0]}\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:ocn]}\t#{@col[:node]}\t#{@col[:ocns]}\t#{@col[:seg]}} +          puts %{ #{@cX.green}1>#{@cX.off}\t#{@col[:lv0]}\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:lv7]}\t#{@col[:ocn]}\t#{@col[:node]}\t#{@col[:ocns]}\t#{@col[:seg]}}          end        end        sql_entry diff --git a/lib/sisu/v5/db_remove.rb b/lib/sisu/v5/db_remove.rb index cff42409..324dbee4 100644 --- a/lib/sisu/v5/db_remove.rb +++ b/lib/sisu/v5/db_remove.rb @@ -178,7 +178,7 @@ module SiSU_DbRemove          || @opt.act[:verbose_plus][:set]==:on \          || @opt.act[:maintenance][:set]==:on)            SiSU_Screen::Ansi.new( -            @opt.cmd, +            @opt.selections.str,              "no such file in database #{@db.psql.db}::#{@opt.fns}"            ).puts_grey          end diff --git a/lib/sisu/v5/dbi.rb b/lib/sisu/v5/dbi.rb index 75b07372..a7bbd822 100644 --- a/lib/sisu/v5/dbi.rb +++ b/lib/sisu/v5/dbi.rb @@ -97,8 +97,7 @@ module  SiSU_DBI        end      end      def maintenance_check(opt,file,line) -      p opt.mod -      p opt.cmd +      p opt.selections.str        p "at #{file} #{line}"      end      def read_psql @@ -134,7 +133,7 @@ manually create the database: "#{cX.green}#{@db.db}#{cX.off}" if it does not yet        end        SiSU_Screen::Ansi.new(          @opt.act[:color_state][:set], -        "DBI (#{@sql_type}) #{@opt.mod}", +        "SQL DB #{@sql_type.upcase}",          @opt.fno        ).dbi_title unless @opt.act[:quiet][:set]==:on        begin diff --git a/lib/sisu/v5/dbi_discrete.rb b/lib/sisu/v5/dbi_discrete.rb index 73976756..79d3f70a 100644 --- a/lib/sisu/v5/dbi_discrete.rb +++ b/lib/sisu/v5/dbi_discrete.rb @@ -127,7 +127,7 @@ module  SiSU_DBI_Discrete                               #% database building        begin          SiSU_Screen::Ansi.new(            @opt.act[:color_state][:set], -          'SQLite', +          'SQLite (discrete)',            "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}"          ).green_title_hi unless @opt.act[:quiet][:set]==:on          sdb.create_db diff --git a/lib/sisu/v5/digests.rb b/lib/sisu/v5/digests.rb index 83f26714..e1d51b1d 100644 --- a/lib/sisu/v5/digests.rb +++ b/lib/sisu/v5/digests.rb @@ -111,7 +111,7 @@ module SiSU_DigestView            SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error('*EXITED* hash digests will not run without openssl')          end        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/dp.rb b/lib/sisu/v5/dp.rb index 0dde14b8..ef61f6b4 100644 --- a/lib/sisu/v5/dp.rb +++ b/lib/sisu/v5/dp.rb @@ -103,8 +103,7 @@ module SiSU_Param      def initialize(opt)        @opt=opt        @cX||=SiSU_Screen::Ansi.new(@opt.act[:color_state][:set]) -      @cmd,@mod=opt.cmd,opt.mod -      @fns=if @opt.cmd =~/P/ #revisit CHECK +      @fns=if @opt.act[:psql][:set] == [:on] #revisit CHECK          opt.fns        else opt.fns.gsub(/\.ssm$/,'.ssm.sst')        end @@ -886,7 +885,7 @@ module SiSU_Param          Dir.chdir(@opt.f_pth[:pth])          begin          rescue -          SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@fns).location do +          SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@fns).location do              __LINE__.to_s + ':' + __FILE__            end          ensure @@ -951,10 +950,10 @@ module SiSU_Param            end            @concord_make=(@wc_words > @env.concord_max) ? false : true            @locale=@sys.locale -          @file_encoding=@sys.file_encoding(fns,@opt.cmd) +          @file_encoding=@sys.file_encoding(fns,@opt.act)            # programs set here for things that affect output appearance only            @programs[:pdf]=SiSU_Env::SystemCall.new.program_found?('pdflatex') -          if @opt.cmd =~/P/ #if @env.multilingual? +          if @opt.act[:psql][:set] == [:ok]              m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm|ssi)$/ #watch added match for sss              @fnn,@fnb,@fnt=@fns[m,1],@fns[m,2],@fns[m,3]              @flv=@env.document_language_versions_found[:f] @@ -967,7 +966,7 @@ module SiSU_Param            @papersize=@env.papersize #'A4' #default size #get first from SiSU_Env:: # @env is probably no longer most appropriate name! as default info is more general            @sfx_src=@fns[m,2]            if @fns =~ /(?:-|ssm\.)?sst$/ \ -          and not @opt.cmd =~/P/ #watch +          and not @opt.act[:psql][:set] == [:ok]              @env_out_root=@env.path.output              @dir_out="#{@env.path.output}/#{@fnb}"              @dir_tex=@env.processing_path.tex @@ -1485,6 +1484,9 @@ module SiSU_Param            Store.new(self,@env).store                                             #% pstore            self          rescue +          if @opt.act[:harvest][:set]==:on +            exit +          end          end        end        private @@ -1510,7 +1512,7 @@ module SiSU_Param              end              @@md=@md=nil            rescue -            SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +            SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do                __LINE__.to_s + ':' + __FILE__              end            ensure diff --git a/lib/sisu/v5/dp_identify_markup.rb b/lib/sisu/v5/dp_identify_markup.rb index f6884c7d..82e63fd4 100644 --- a/lib/sisu/v5/dp_identify_markup.rb +++ b/lib/sisu/v5/dp_identify_markup.rb @@ -51,7 +51,7 @@   * Git     <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> -   <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/param_identify_markup.rb;hb=HEAD> +   <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/dp_identify_markup.rb;hb=HEAD>   * Ralph Amissah     <ralph@amissah.com> diff --git a/lib/sisu/v5/dp_make.rb b/lib/sisu/v5/dp_make.rb index 05b5cbdf..bba58847 100644 --- a/lib/sisu/v5/dp_make.rb +++ b/lib/sisu/v5/dp_make.rb @@ -51,7 +51,7 @@   * Git     <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> -   <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/param_make.rb;hb=HEAD> +   <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/dp_make.rb;hb=HEAD>   * Ralph Amissah     <ralph@amissah.com> diff --git a/lib/sisu/v5/embedded.rb b/lib/sisu/v5/embedded.rb index b46975fd..325d7780 100644 --- a/lib/sisu/v5/embedded.rb +++ b/lib/sisu/v5/embedded.rb @@ -83,7 +83,7 @@ module SiSU_Embedded        multimedia        begin        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -103,7 +103,7 @@ module SiSU_Embedded            src_ec=@f.place_file.images.rel + '/' + @md.ec[:image].join(" #{@f.output_path.images.rel}/")            unless @opt.fns =~/\.-sst$/              SiSU_Env::SystemCall.new(src_ec,ldest,'q').rsync('--relative',@opt.base_path) -            #if @md.opt.cmd.inspect =~/R/ #rsync to remote image directory +            #if @md.opt.selections.str.inspect =~/R/ #rsync to remote image directory              #  SiSU_Env::SystemCall.new(src_ec,remote_rel,'q').rsync('--relative')              #end            end diff --git a/lib/sisu/v5/harvest.rb b/lib/sisu/v5/harvest.rb index cc12b08e..ddc85055 100644 --- a/lib/sisu/v5/harvest.rb +++ b/lib/sisu/v5/harvest.rb @@ -76,7 +76,7 @@ module SiSU_Harvest      end      def read        begin -        harvest_pth="#{@env.path.webserv}/#{@opt.base_stub}" +        harvest_pth=@env.path.webserv + '/' + @opt.base_stub          FileUtils::mkdir_p(harvest_pth) unless FileTest.directory?(harvest_pth)          cases(@opt,@env)        rescue @@ -99,7 +99,7 @@ WOK        style.close      end      def cases(opt,env) -      case opt.mod.inspect +      case opt.selections.str.inspect        when/--harvest/i          css(opt) if @opt.act[:maintenance][:set]==:on          SiSU_HarvestAuthors::Songsheet.new(opt,env).songsheet diff --git a/lib/sisu/v5/harvest_authors.rb b/lib/sisu/v5/harvest_authors.rb index 7904ab15..26a0a9e3 100644 --- a/lib/sisu/v5/harvest_authors.rb +++ b/lib/sisu/v5/harvest_authors.rb @@ -88,20 +88,36 @@ module SiSU_HarvestAuthors          end          lang_hash_file_array.each_pair do |lang,a|            idx_array[lang] ||= [] -          idx_array=SiSU_HarvestAuthors::Harvest.new(@opt,@env,a,filename,name,idx_array,lang).extract_harvest +          idx_array=SiSU_HarvestAuthors::Harvest.new( +            @opt, +            @env, +            a, +            filename, +            name, +            idx_array, +            lang +          ).extract_harvest          end        end -      the_idx=SiSU_HarvestAuthors::Index.new(idx_array,@@the_idx_authors).construct_book_author_index -      SiSU_HarvestAuthors::OutputIndex.new(@opt,the_idx).html_print.html_songsheet +      the_idx=SiSU_HarvestAuthors::Index.new( +        idx_array, +        @@the_idx_authors +      ).construct_book_author_index +      SiSU_HarvestAuthors::OutputIndex.new( +        @opt, +        the_idx +      ).html_print.html_songsheet      end    end    class Harvest      def initialize(opt,env,data,filename,name,idx_array,lang) -      @opt,@env,@data,@filename,@name,@idx_array,@lang=opt,env,data,filename,name,idx_array,lang +      @opt, @env,@data,@filename,@name,@idx_array,@lang= +        opt,env, data, filename, name, idx_array, lang      end      def extract_harvest -      data,filename,name,idx_array,lang=@data,@filename,@name,@idx_array,@lang -      @title,@subtitle,@fulltitle,@author,@author_format,@date=nil,nil,nil,nil,nil,nil +      data,   filename, name, idx_array, lang = +        @data,@filename,@name,@idx_array,@lang +      @title=@subtitle=@fulltitle=@author=@author_format=@date=nil        @authors=[]        rgx={}        rgx[:author]=/^@creator:(?:[ ]+|.+?:author:[ ]+)(.+?)(?:\||\n)/m @@ -123,7 +139,9 @@ module SiSU_HarvestAuthors          end          break if @title && @subtitle && @author && @date        end -      @fulltitle=@subtitle ? (@title + ' - ' + @subtitle) : @title +      @fulltitle=@subtitle \ +      ? (@title + ' - ' + @subtitle) +      : @title        if @title \        and @author_format          creator=SiSU_FormatAuthor::Author.new(@author_format.strip).author_details @@ -138,7 +156,15 @@ module SiSU_HarvestAuthors          else            "sisu_manifest.#{lang}.html"          end -        idx_array[lang] <<= { filename: filename, file: file, date: @date, title: @fulltitle, author: creator, page: page, lang: lang } +        idx_array[lang] <<= { +          filename: filename, +          file: file, +          date: @date, +          title: @fulltitle, +          author: creator, +          page: page, +          lang: lang +        }        else          #p "missing author field: #{@filename} title: #{@title}; author: #{@author_format}"        end @@ -164,7 +190,15 @@ module SiSU_HarvestAuthors              if @@the_idx_authors[lang][author].is_a?(NilClass)                @@the_idx_authors[lang][author]={ md: [] }              end -            @@the_idx_authors[lang][author][:md] << { filename: idx[:filename], file: idx[:file], author: idx[:author], title: idx[:title], date: idx[:date], page: idx[:page], lang: idx[:lang] } +            @@the_idx_authors[lang][author][:md] << { +              filename: idx[:filename], +              file: idx[:file], +              author: idx[:author], +              title: idx[:title], +              date: idx[:date], +              page: idx[:page], +              lang: idx[:lang] +            }            end          end        end @@ -188,18 +222,26 @@ module SiSU_HarvestAuthors          @output[lng] ||={}          harvest_pth,file='',''          if @env.output_dir_structure.by? == :language -          harvest_pth="#{@env.path.webserv}/#{@opt.base_stub}/#{lng}/manifest" +          harvest_pth=@env.path.webserv + '/' \ +          + @opt.base_stub + '/' \ +          + lng + '/' \ +          + 'manifest'            file="#{harvest_pth}/authors.html"          elsif @env.output_dir_structure.by? == :filetype -          harvest_pth="#{@env.path.webserv}/#{@opt.base_stub}/manifest" +          harvest_pth=@env.path.webserv + '/' \ +          + @opt.base_stub + '/' \ +          + 'manifest'            file="#{harvest_pth}/authors.#{lng}.html"          elsif @env.output_dir_structure.by? == :filename -          harvest_pth="#{@env.path.webserv}/#{@opt.base_stub}" +          harvest_pth=@env.path.webserv + '/' \ +          + @opt.base_stub            file="#{harvest_pth}/authors.#{lng}.html"          end -        FileUtils::mkdir_p(harvest_pth) unless FileTest.directory?(harvest_pth) +        FileUtils::mkdir_p(harvest_pth) \ +          unless FileTest.directory?(harvest_pth)          fileinfo=(@opt.act[:verbose][:set]==:on \          || @opt.act[:verbose_plus][:set]==:on \ +        || @opt.act[:urls_selected][:set]==:on \          || @opt.act[:maintenance][:set]==:on) \          ? ("file://#{file}") : ''          SiSU_Screen::Ansi.new( @@ -213,7 +255,8 @@ module SiSU_HarvestAuthors      def html_file_close        @the_idx.keys.each do |lng|          @output[lng][:html].close -        @output[lng][:html_mnt].close if @output[lng][:html_mnt].is_a?(File) +        @output[lng][:html_mnt].close \ +          if @output[lng][:html_mnt].is_a?(File)        end      end      def html_print @@ -257,18 +300,22 @@ module SiSU_HarvestAuthors              file="#{harvest_pth}/authors.#{lg}.html"            end            l=ln[lg][:t] -          harvest_languages += %{<a href="#{file}">#{l}</a>   } +          harvest_languages += +            %{<a href="#{file}">#{l}</a>   }          end          sv=SiSU_Env::InfoVersion.instance.get_version          if @env.output_dir_structure.by? == :language            home_pth='../..' -          output_structure_by='(output organised by language & filetype)' +          output_structure_by= +            '(output organised by language & filetype)'          elsif @env.output_dir_structure.by? == :filetype            home_pth='..' -          output_structure_by='(output organised by filetype)' +          output_structure_by= +            '(output organised by filetype)'          elsif @env.output_dir_structure.by? == :filename            home_pth='.' -          output_structure_by='(output organised by filename)' +          output_structure_by= +            '(output organised by filename)'          else            home_pth='.'            output_structure_by='(output organised by ?)' @@ -301,8 +348,11 @@ WOK        end        def html_head          @the_idx.keys.each do |lng| -          @output[lng][:html_mnt] << html_head_adjust(lng,'maintenance') if @opt.act[:maintenance][:set]==:on -          @output[lng][:html] << html_head_adjust(lng) +          @output[lng][:html_mnt] \ +          << html_head_adjust(lng,'maintenance') \ +            if @opt.act[:maintenance][:set]==:on +          @output[lng][:html] \ +          << html_head_adjust(lng)          end        end        def html_alph @@ -315,7 +365,8 @@ WOK          end          a=a.join          @the_idx.keys.each do |lng| -          @output[lng][:html_mnt] << a if @opt.act[:maintenance][:set]==:on +          @output[lng][:html_mnt] << a \ +            if @opt.act[:maintenance][:set]==:on            @output[lng][:html] << a          end        end @@ -333,12 +384,14 @@ WOK  </html>  WOK          @the_idx.keys.each do |lng| -          @output[lng][:html_mnt] << a if @output[lng][:html_mnt].is_a?(File) +          @output[lng][:html_mnt] << a \ +            if @output[lng][:html_mnt].is_a?(File)            @output[lng][:html] << a          end        end        def do_html(lng,html) -        @output[lng][:html_mnt] << html if @output[lng][:html_mnt].is_a?(File) +        @output[lng][:html_mnt] << html \ +          if @output[lng][:html_mnt].is_a?(File)          @output[lng][:html] << html        end        def do_string_name(lng,attrib,string) @@ -353,9 +406,11 @@ WOK              if @alph.length > 0                @letter=@alph.shift                if @output[lng][:html_mnt].is_a?(File) -                @output[lng][:html_mnt] << %{\n<p class="letter"><a name="#{@letter}"></p>#{@letter}</a><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>} +                @output[lng][:html_mnt] \ +                << %{\n<p class="letter"><a name="#{@letter}"></p>#{@letter}</a><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>}                end -              @output[lng][:html] << %{\n<p class="letter"><a name="#{@letter}">#{@letter}</a></p><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>} +              @output[lng][:html] \ +              << %{\n<p class="letter"><a name="#{@letter}">#{@letter}</a></p><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>}              else break              end            end @@ -383,14 +438,18 @@ WOK                  "./#{i[:file]}/#{i[:page]}"                else '' #error                end -              work=[ "#{i[:date]} #{i[:title]}", %{<p class="publication">#{i[:date]} <a href="#{manifest_at}">#{i[:title]}</a>, #{i[:author][:authors_s]}</p>} ] +              work=[ +                "#{i[:date]} #{i[:title]}", +                %{<p class="publication">#{i[:date]} <a href="#{manifest_at}">#{i[:title]}</a>, #{i[:author][:authors_s]}</p>} +              ]                works<<=(@output[lng][:html_mnt].is_a?(File)) \                ? (work.concat([%{<p class="publication">[<a href="#{i[:file]}.sst">src</a>]  #{i[:date]} <a href="file://#{manifest_at}">#{i[:title]}</a>, #{i[:author][:authors_s]} -- [<a href="#{i[:file]}.sst">#{i[:file]}.sst</a>]</p>}]))                : work              end              works.sort_by {|y| y[0]}.each do |z|                @output[lng][:html] << z[1] -              @output[lng][:html_mnt] << z[2] if @output[lng][:html_mnt].is_a?(File) +              @output[lng][:html_mnt] << z[2] \ +                if @output[lng][:html_mnt].is_a?(File)              end            end          end diff --git a/lib/sisu/v5/harvest_topics.rb b/lib/sisu/v5/harvest_topics.rb index cd507f63..62103618 100644 --- a/lib/sisu/v5/harvest_topics.rb +++ b/lib/sisu/v5/harvest_topics.rb @@ -90,11 +90,27 @@ module SiSU_HarvestTopics          end          lang_hash_file_array.each_pair do |lang,a|            idx_array[lang] ||=[] -          idx_array=SiSU_HarvestTopics::Harvest.new(@opt,@env,a,filename,name,idx_array,lang).extract_harvest +          idx_array=SiSU_HarvestTopics::Harvest.new( +            @opt, +            @env, +            a, +            filename, +            name, +            idx_array, +            lang +          ).extract_harvest          end        end -      the_hash=SiSU_HarvestTopics::Index.new(@opt,@env,idx_array,@@the_idx_topics).song -      SiSU_HarvestTopics::OutputIndex.new(@opt,the_hash).html_print.html_songsheet +      the_hash=SiSU_HarvestTopics::Index.new( +        @opt, +        @env, +        idx_array, +        @@the_idx_topics +      ).song +      SiSU_HarvestTopics::OutputIndex.new( +        @opt, +        the_hash +      ).html_print.html_songsheet      end    end    class Mix @@ -104,11 +120,13 @@ module SiSU_HarvestTopics    end    class Harvest      def initialize(opt,env,data,filename,name,idx_array,lang) -      @opt,@env,@data,@filename,@name,@idx_array,@lang=opt,env,data,filename,name,idx_array,lang +      @opt, @env,@data,@filename,@name,@idx_array,@lang= +        opt,env, data, filename, name, idx_array, lang      end      def extract_harvest -      data,filename,name,idx_array,lang=@data,@filename,@name,@idx_array,@lang -      @idx_lst,@title,@subtitle,@fulltitle,@author,@author_format=nil,nil,nil,nil,nil,nil +      data,   filename, name, idx_array, lang= +        @data,@filename,@name,@idx_array,@lang +      @idx_lst=@title=@subtitle=@fulltitle=@author=@author_format=nil        rgx={}        rgx[:author]=/^@creator:(?:[ ]+|.+?:author:[ ]+)(.+?)(?:\||\n)/m        rgx[:title]=/^@title:[ ]+(.+)/ @@ -150,10 +168,26 @@ module SiSU_HarvestTopics            idxl=[]            g.each do |i|              i=i.strip -            idxl << { filename: filename, file: file, rough_idx: i, title: @fulltitle, author: creator, page: page, lang: lang  } +            idxl << { +              filename: filename, +              file: file, +              rough_idx: i, +              title: @fulltitle, +              author: creator, +              page: page, +              lang: lang +            }            end            idxl -        else { filename: filename, file: file, rough_idx: @idx_list, title: @fulltitle, author: creator, page: page, lang: lang  } +        else { +            filename: filename, +            file: file, +            rough_idx: @idx_list, +            title: @fulltitle, +            author: creator, +            page: page, +            lang: lang, +          }          end        else          if (@opt.act[:verbose_plus][:set]==:on \ @@ -167,7 +201,8 @@ module SiSU_HarvestTopics    end    class Index < Mix      def initialize(opt,env,idx_array,the_idx) -      @opt,@env,@idx_array,@the_idx=opt,env,idx_array,the_idx +      @opt, @env,@idx_array,@the_idx= +        opt,env, idx_array, the_idx        @@the_idx_topics=@the_idx      end      def song @@ -195,7 +230,13 @@ module SiSU_HarvestTopics            names += %{<a href="authors.#{lang}.html##{s}">#{n}</a>, }          end        end -      { filename: idx[:filename], file: idx[:file], author: names, title: idx[:title], page: idx[:page] } +      { +        filename: idx[:filename], +        file: idx[:file], +        author: names, +        title: idx[:title], +        page: idx[:page] +      }      end      def capital_(txt)        txt[0].chr.capitalize + txt[1,txt.length] @@ -471,18 +512,26 @@ module SiSU_HarvestTopics          @output[lng] ||={}          harvest_pth,file='',''          if @env.output_dir_structure.by? == :language -          harvest_pth="#{@env.path.webserv}/#{@opt.base_stub}/#{lng}/manifest" -          file="#{harvest_pth}/topics.html" +          harvest_pth=@env.path.webserv + '/' \ +          + @opt.base_stub + '/' \ +          + lng + '/' \ +          + 'manifest' +          file=harvest_pth + '/' + 'topics.html'          elsif @env.output_dir_structure.by? == :filetype -          harvest_pth="#{@env.path.webserv}/#{@opt.base_stub}/manifest" -          file="#{harvest_pth}/topics.#{lng}.html" +          harvest_pth=@env.path.webserv + '/' \ +          + @opt.base_stub + '/' \ +          + 'manifest' +          file=harvest_pth + '/' + 'topics.' + lng + '.html'          elsif @env.output_dir_structure.by? == :filename -          harvest_pth="#{@env.path.webserv}/#{@opt.base_stub}" -          file="#{harvest_pth}/topics.#{lng}.html" +          harvest_pth=@env.path.webserv + '/' \ +          + @opt.base_stub +          file=harvest_pth + '/' + 'topics.' + lng + '.html'          end -        FileUtils::mkdir_p(harvest_pth) unless FileTest.directory?(harvest_pth) +        FileUtils::mkdir_p(harvest_pth) \ +          unless FileTest.directory?(harvest_pth)          fileinfo=(@opt.act[:verbose][:set]==:on \          || @opt.act[:verbose_plus][:set]==:on \ +        || @opt.act[:urls_selected][:set]==:on \          || @opt.act[:maintenance][:set]==:on) \          ? ("file://#{file}")          : '' @@ -615,16 +664,17 @@ module SiSU_HarvestTopics          @the_idx.keys.each do |lg|            if @env.output_dir_structure.by? == :language              harvest_pth="../../#{lg}/manifest" -            file="#{harvest_pth}/topics.html" +            file=harvest_pth + '/' + 'topics.html'            elsif @env.output_dir_structure.by? == :filetype              harvest_pth='.' -            file="#{harvest_pth}/topics.#{lg}.html" +            file=harvest_pth + '/' + 'topics.' + lg + '.html'            elsif @env.output_dir_structure.by? == :filename              harvest_pth='.' -            file="#{harvest_pth}/topics.#{lg}.html" +            file=harvest_pth + '/topics.' + lg + '.html'            end            l=ln[lg][:t] -          harvest_languages += %{<a href="#{file}">#{l}</a>   } +          harvest_languages += +            %{<a href="#{file}">#{l}</a>   }          end          sv=SiSU_Env::InfoVersion.instance.get_version          if @env.output_dir_structure.by? == :language @@ -668,7 +718,9 @@ WOK        end        def html_head          @the_idx.keys.each do |lng| -          @output[lng][:html_mnt] << html_head_adjust(lng,'maintenance') if @opt.act[:maintenance][:set]==:on +          @output[lng][:html_mnt] \ +          << html_head_adjust(lng,'maintenance') \ +            if @opt.act[:maintenance][:set]==:on            @output[lng][:html] << html_head_adjust(lng)          end        end @@ -682,7 +734,8 @@ WOK          end          a=a.join          @the_idx.keys.each do |lng| -          @output[lng][:html_mnt] << a if @opt.act[:maintenance][:set]==:on +          @output[lng][:html_mnt] << a \ +            if @opt.act[:maintenance][:set]==:on            @output[lng][:html] << a          end        end @@ -700,7 +753,8 @@ WOK  </html>  WOK          @the_idx.keys.each do |lng| -          @output[lng][:html_mnt] << a if @output[lng][:html_mnt].is_a?(File) +          @output[lng][:html_mnt] << a \ +            if @output[lng][:html_mnt].is_a?(File)            @output[lng][:html] << a          end        end @@ -708,12 +762,14 @@ WOK          @output[lng][:html] << html        end        def do_html_maintenance(lng,html) -        @output[lng][:html_mnt] << html if @output[lng][:html_mnt].is_a?(File) +        @output[lng][:html_mnt] << html \ +          if @output[lng][:html_mnt].is_a?(File)        end        def do_string(lng,attrib,string)          html=%{<p class="#{attrib}">#{string}</p>}          do_html(lng,html) -        do_html_maintenance(lng,html) if @output[lng][:html_mnt].is_a?(File) +        do_html_maintenance(lng,html) \ +          if @output[lng][:html_mnt].is_a?(File)        end        def do_string_default(lng,attrib,string)          html=%{<p class="#{attrib}">#{string}</p>} @@ -721,7 +777,8 @@ WOK        end        def do_string_maintenance(lng,attrib,string)          html=%{<p class="#{attrib}">#{string}</p>} -        do_html_maintenance(lng,html) if @output[lng][:html_mnt].is_a?(File) +        do_html_maintenance(lng,html) \ +          if @output[lng][:html_mnt].is_a?(File)        end        def do_string_name(lng,attrib,string)          f=/^(\S)/.match(string)[1] @@ -735,9 +792,11 @@ WOK              if @alph.length > 0                @letter=@alph.shift                if @output[lng][:html_mnt].is_a?(File) -                @output[lng][:html_mnt] << %{\n<p class="letter"><a name="#{@letter}">#{@letter}</a></p><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>} +                @output[lng][:html_mnt] \ +                << %{\n<p class="letter"><a name="#{@letter}">#{@letter}</a></p><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>}                end -              @output[lng][:html] << %{\n<p class="letter"><a name="#{@letter}">#{@letter}</a></p><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>} +              @output[lng][:html] \ +              << %{\n<p class="letter"><a name="#{@letter}">#{@letter}</a></p><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>}              else break              end            end @@ -745,7 +804,8 @@ WOK          name=string.strip.gsub(/\s+/,'_')          html=%{<p class="#{attrib}"><a name="#{name}">#{string}</a></p>}          do_html(lng,html) -        do_html_maintenance(lng,html) if @output[lng][:html_mnt].is_a?(File) +        do_html_maintenance(lng,html) \ +          if @output[lng][:html_mnt].is_a?(File)        end        def do_array(lng,lv,array)          lv+=1 diff --git a/lib/sisu/v5/html.rb b/lib/sisu/v5/html.rb index a613f56f..683eba96 100644 --- a/lib/sisu/v5/html.rb +++ b/lib/sisu/v5/html.rb @@ -150,7 +150,7 @@ module SiSU_HTML            SiSU_HTML::Source::Output.new(scroll,@md).scroll          end        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -163,7 +163,7 @@ module SiSU_HTML              end            end          end -        SiSU_Env::Clear.new(@opt.cmd,@opt.fns,@md).param_instantiate +        SiSU_Env::Clear.new(@opt.selections.str,@opt.fns,@md).param_instantiate          @@flag,@@scr,@@seg,@@seg_endnotes,@@seg_subtoc,@@seg_ad={},{},{},{},{},{}          @@seg_total,@@tracker,@@loop_count,@@tablehead,@@number_of_cols=0,0,0,0,0          @@seg_name,@@seg_name_html,@@seg_subtoc_array,@@seg_endnotes_array,@@segtocband,@@tablefoot=Array.new(7){[]} @@ -305,7 +305,7 @@ module SiSU_HTML                  @@toc[:seg_mini] << toc[:seg_mini] if toc[:seg_mini]                  @@toc[:scr] << toc[:scr] if toc[:scr]                rescue -                SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +                SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do                    __LINE__.to_s + ':' + __FILE__                  end                end @@ -729,7 +729,7 @@ WOK                end              end            rescue -            SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +            SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do                __LINE__.to_s + ':' + __FILE__              end            ensure @@ -751,7 +751,7 @@ WOK                end              end            rescue -            SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +            SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do                __LINE__.to_s + ':' + __FILE__              end            ensure diff --git a/lib/sisu/v5/html_concordance.rb b/lib/sisu/v5/html_concordance.rb index dbaf83cf..c02b8f5c 100644 --- a/lib/sisu/v5/html_concordance.rb +++ b/lib/sisu/v5/html_concordance.rb @@ -51,7 +51,7 @@   * Git     <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> -   <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/concordance.rb;hb=HEAD> +   <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/html_concordance.rb;hb=HEAD>   * Ralph Amissah     <ralph@amissah.com> @@ -118,7 +118,7 @@ module SiSU_Concordance            SiSU_Concordance::Source::Words.new(@particulars).songsheet          end        rescue -        SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -236,18 +236,19 @@ WOK            @alphlst=SiSU_i18n::Alphabet.new(@md.opt.lng).hash_strings            @rgx_scanlist=%r{#{Mx[:fa_italics_o]}[#{@alphlst[:l]}#{@alphlst[:u]}0-9"\s]{2,12}#{Mx[:fa_italics_c]}|#{Mx[:fa_bold_o]}[#{@alphlst[:l]}#{@alphlst[:u]}0-9"\s]{2,12}#{Mx[:fa_bold_c]}|(?:https?|file)://\S+|<\S+?>|[#{@alphlst[:l]}#{@alphlst[:u]}]+|\w+}mi          rescue -          SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +          SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do              __LINE__.to_s + ':' + __FILE__            end          end        end        def songsheet          begin -          FileUtils::mkdir_p(@file.output_path.html_concordance.dir) unless FileTest.directory?(@file.output_path.html_concordance.dir) +          FileUtils::mkdir_p(@file.output_path.html_concordance.dir) \ +            unless FileTest.directory?(@file.output_path.html_concordance.dir)            @file_concordance=File.open(@file.place_file.html_concordance.dir,'w')            map_para          rescue -          SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +          SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do              __LINE__.to_s + ':' + __FILE__            end          ensure diff --git a/lib/sisu/v5/html_format.rb b/lib/sisu/v5/html_format.rb index 058a8f34..7731464a 100644 --- a/lib/sisu/v5/html_format.rb +++ b/lib/sisu/v5/html_format.rb @@ -1065,6 +1065,9 @@ WOK      def heading_body6        heading_normal('h6','norm')      end +    def heading_body7 +      heading_normal('h7','norm') +    end      def title_heading(tag,attrib)        cl=(@make.build.html_minitoc?) \        ? 'content' @@ -1228,6 +1231,8 @@ WOK      end      def navigation_toc_lev6      end +    def navigation_toc_lev7 +    end      def endnote_seg_body(fn='')  #FIX                                                #url construction keep within single line... BUG WATCH 200408        fn='doc' if fn.to_s.empty? #you may wish to reconsider, sends to 'doc' where no segment info        %{ @@ -1265,6 +1270,9 @@ WOK      def subtoc_lev6        subtoc_lev('h6','subtoc') if @txt      end +    def subtoc_lev7 +      subtoc_lev('h7','subtoc') if @txt +    end      def heading_sub(tag,attrib)        @txt=@txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')        %{ @@ -1357,6 +1365,9 @@ WOK      def lev6        lev('h6','toc')      end +    def lev7 +      lev('h7','toc') +    end      def strip_endnotes(txt)        txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')        txt @@ -1389,6 +1400,10 @@ WOK        @txt=strip_endnotes(@txt)        lev('h6','minitoc')      end +    def mini_lev7 +      @txt=strip_endnotes(@txt) +      lev('h7','minitoc') +    end      def mini_lev0 #docinfo        lev('h1','minitoc')      end diff --git a/lib/sisu/v5/html_scroll.rb b/lib/sisu/v5/html_scroll.rb index 01fe2940..c11a532a 100644 --- a/lib/sisu/v5/html_scroll.rb +++ b/lib/sisu/v5/html_scroll.rb @@ -76,7 +76,7 @@ module SiSU_HTML_Scroll          scr[:tails]=SiSU_HTML_Scroll::Scroll.new(@md).tails          scr        rescue -        SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -88,11 +88,13 @@ module SiSU_HTML_Scroll        @rcdc=false        @scr={ body: [], metadata: [], owner_details: [] }        data.each do |dob| -        dob.obj=dob.obj.gsub(/#{@md.file.output_path.html_seg.rel_image}/m,@md.file.output_path.html_scroll.rel_image) +        dob.obj=dob.obj.gsub(/#{@md.file.output_path.html_seg.rel_image}/m, +          @md.file.output_path.html_scroll.rel_image)          if defined? dob.name and dob.name =~/^meta/ \          and dob.obj =~/Document Information/ -          dob.obj=dob.obj.gsub(/(Document Information(?: \(metadata\))?)/, -            '\1<a name="docinfo"></a>') +          dob.obj=dob.obj. +            gsub(/(Document Information(?: \(metadata\))?)/, +              '\1<a name="docinfo"></a>')          end          if dob.obj =~/^Metadata$/ \          and dob.lv =='B' @@ -108,7 +110,8 @@ module SiSU_HTML_Scroll            gsub(/href="#{Xx[:segment]}/m,'href="')          if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]})/            unless dob.is ==:code -            dob.obj=dob.obj.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ') +            dob.obj=dob.obj. +              gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')            end            if defined? dob.ocn              @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,dob.ocn) @@ -129,6 +132,8 @@ module SiSU_HTML_Scroll                sto.heading_body5              elsif dob.ln==6                sto.heading_body6 +            elsif dob.ln==7 +              sto.heading_body7              end            elsif dob.is==:break \            and dob.from==:markup @@ -162,7 +167,8 @@ module SiSU_HTML_Scroll              elsif dob.ln==4 \              and dob.obj=='Index'                sto.heading_body4 -              book_idx=SiSU_Particulars::CombinedSingleton.instance.get_idx_html(@md.opt).html_idx +              book_idx=SiSU_Particulars::CombinedSingleton. +                instance.get_idx_html(@md.opt).html_idx                book_idx.each do |y| #takes book index prepared for segments & strips segment identifying info                  y.gsub!(/<a href="\S+?\.html#(\d+)">(\1(?:-\d+)?)<\/a>/,                    '<a href="#\1">\2</a>') @@ -176,6 +182,10 @@ module SiSU_HTML_Scroll                unless dob.obj.empty?                  sto.heading_body6                end +            elsif dob.ln==7 +              unless dob.obj.empty? +                sto.heading_body7 +              end              end            elsif dob.is==:para              if dob.indent \ @@ -222,7 +232,9 @@ module SiSU_HTML_Scroll      def tails        scr_tail=[]        format_head_scroll=SiSU_HTML_Format::HeadToc.new(@md) -      scr_tail << format_head_scroll.scroll_tail << format_head_scroll.html_close +      scr_tail \ +      << format_head_scroll.scroll_tail \ +      << format_head_scroll.html_close        scr_tail      end    end diff --git a/lib/sisu/v5/html_segments.rb b/lib/sisu/v5/html_segments.rb index 5826163e..9b0cc1c7 100644 --- a/lib/sisu/v5/html_segments.rb +++ b/lib/sisu/v5/html_segments.rb @@ -67,7 +67,8 @@ module SiSU_HTML_Seg    require_relative 'shared_metadata'                    # shared_metadata.rb    class Output      def initialize(md,outputfile,seg,minitoc,type='') -      @md,@output_seg_file,@seg,@minitoc,@type=md,outputfile,seg,minitoc,type +      @md, @output_seg_file,@seg,@minitoc,@type= +        md,outputfile,      seg,minitoc,  type        @title_banner_=SiSU_Env::CreateSite.new(@md.opt).html_seg_title_banner?        @file=SiSU_Env::FileOp.new(@md)        @make=SiSU_Env::ProcessingSettings.new(@md) @@ -79,59 +80,97 @@ module SiSU_HTML_Seg        if @seg[:title] =~/\S/          filename_seg=[]          if @make.build.html_top_band? -          filename_seg << @seg[:title] << @seg[:tocband_banner] +          filename_seg \ +          << @seg[:title] \ +          << @seg[:tocband_banner]          else -          filename_seg << @seg[:title] +          filename_seg \ +          << @seg[:title]          end          if @type=='endnotes'            @seg[:headings]=[]            format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)            if @title_banner_ -            @seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author) +            @seg[:headings] \ +            << format_head_seg. +              title_banner(@md.title.main,@md.title.sub,@author)            end            txt_obj={ txt: 'Endnotes', ocn_display: '' }            format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) -          @seg[:headings] << format_seg.title_heading1 -          filename_seg << @seg[:heading_endnotes] << @minitoc << @seg[:headings] << %{\n<div class="#{@cl}">\n} << @seg[:endnote_all] << '</div>' # << '</div>' +          @seg[:headings] \ +          << format_seg.title_heading1 +          filename_seg \ +          << @seg[:heading_endnotes] \ +          << @minitoc << @seg[:headings] \ +          << %{\n<div class="#{@cl}">\n} \ +          << @seg[:endnote_all] \ +          << '</div>' # << '</div>'          elsif @type=='idx'            @seg[:headings]=[]            format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)            if @title_banner_ -            @seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author) +            @seg[:headings] \ +            << format_head_seg. +              title_banner(@md.title.main,@md.title.sub,@author)            end            txt_obj={ txt: 'Index', ocn_display: '' }            format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)            @seg[:headings] << format_seg.title_heading1 -          filename_seg << @seg[:heading_idx] << @minitoc << @seg[:headings] << %{\n<div class="#{@cl}">\n} << @seg[:idx] << '</div>' # << '</div>' +          filename_seg \ +          << @seg[:heading_idx] \ +          << @minitoc << @seg[:headings] \ +          << %{\n<div class="#{@cl}">\n} \ +          << @seg[:idx] \ +          << '</div>' # << '</div>'          elsif @type=='metadata'            metadata=SiSU_Metadata::Summary.new(@md).xhtml_display.metadata            @seg[:headings]=[]            format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)            if @title_banner_ -            @seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author) +            @seg[:headings] \ +            << format_head_seg. +              title_banner(@md.title.main,@md.title.sub,@author)            end            txt_obj={ txt: 'Metadata', ocn_display: '' }            format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)            @seg[:headings] << format_seg.title_heading1 -          filename_seg << @seg[:heading_idx] << @minitoc << @seg[:headings] << %{\n<div class="#{@cl}">\n} << metadata << '</div>' # << '</div>' +          filename_seg \ +          << @seg[:heading_idx] \ +          << @minitoc \ +          << @seg[:headings] \ +          << %{\n<div class="#{@cl}">\n} \ +          << metadata \ +          << '</div>' # << '</div>'          else            if @make.build.html_top_band? -            filename_seg << @minitoc << @seg[:headings] << @seg[:main] << "\n</div>\n" +            filename_seg \ +            << @minitoc \ +            << @seg[:headings] \ +            << @seg[:main] \ +            << "\n</div>\n"            else -            filename_seg << @minitoc << @seg[:main] << "\n</div>\n" +            filename_seg \ +            << @minitoc \ +            << @seg[:main] \ +            << "\n</div>\n"            end          end          filename_seg <<=if @make.build.html_top_band? -          @seg[:tail] << @seg[:tocband_bannerless] << @seg[:credits] +          @seg[:tail] \ +          << @seg[:tocband_bannerless] \ +          << @seg[:credits]          else -          @seg[:tail] << @seg[:credits] +          @seg[:tail] \ +          << @seg[:credits]          end          filename_seg=filename_seg.flatten.compact #watch          filename_seg.each do |str|            unless str =~/\A\s*\Z/              str=str.strip. -              gsub(Xx[:html_relative2],@file.path_rel_links.html_seg_2). -              gsub(Xx[:html_relative1],@file.path_rel_links.html_seg_1) +              gsub(Xx[:html_relative2], +                @file.path_rel_links.html_seg_2). +              gsub(Xx[:html_relative1], +                @file.path_rel_links.html_seg_1)              @output_seg_file << str            end          end @@ -146,7 +185,17 @@ module SiSU_HTML_Seg      @@loop_count=@@seg_total=@@tracker=0      @@is4=@@is3=@@is2=@@is1=@@is0=0      @@heading0=@@heading1=@@heading2=@@heading3=@@heading4=0 -    @@seg[:tocband_banner],@@seg[:tocband_bannerless],@@seg[:title],@@seg[:headings],@@seg[:main],@@seg[:idx],@@seg[:tail],@@seg[:credits],@@seg_subtoc_array,@@seg_endnotes_array,@@seg[:endnote_all]=Array.new(11){[]} +    @@seg[:tocband_banner], +      @@seg[:tocband_bannerless], +      @@seg[:title],@@seg[:headings], +      @@seg[:main], +      @@seg[:idx], +      @@seg[:tail], +      @@seg[:credits], +      @@seg_subtoc_array, +      @@seg_endnotes_array, +      @@seg[:endnote_all]= +      Array.new(11){[]}      @@seg[:heading_endnotes]=''      @@tablehead,@@number_of_cols=0,0      @@dp,@@segtocband=nil,nil @@ -177,7 +226,7 @@ module SiSU_HTML_Seg          SiSU_HTML_Seg::Seg.new.cleanup # (((( added ))))          #### (((( END )))) ####        rescue -        SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -192,7 +241,8 @@ module SiSU_HTML_Seg        idx_html=nil        if @md.book_idx          #my_make_source_file=SiSU_Env::CreateFile.new(@md.fns) -        idx_html=SiSU_Particulars::CombinedSingleton.instance.get_idx_html(@md.opt).html_idx +        idx_html=SiSU_Particulars::CombinedSingleton. +          instance.get_idx_html(@md.opt).html_idx          idx_html.each {|x| @@seg[:idx] << x }          @@seg[:heading_idx]=''        end @@ -215,7 +265,8 @@ module SiSU_HTML_Seg            @@seg_name.length          ).segmented        end -      map_nametags=SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map #p map_nametags +      map_nametags=SiSU_Particulars::CombinedSingleton. +        instance.get_map_nametags(@md).nametags_map #p map_nametags        data.each do |dob|          if defined? dob.obj \          and dob.obj =~/href="#{Xx[:segment]}#+\S+?"/ @@ -227,10 +278,12 @@ module SiSU_HTML_Seg                lng=(inf.output_dir_structure.by_language_code?) \                ? ''                : '.' + @md.opt.lng -              dob.obj.sub!(/href="#{Xx[:segment]}#+(\S+?)"/,%{href="#{map_nametags[m][:segname]}#{lng}#{Sfx[:html]}#\\1"}) +              dob.obj.sub!(/href="#{Xx[:segment]}#+(\S+?)"/, +                %{href="#{map_nametags[m][:segname]}#{lng}#{Sfx[:html]}#\\1"})              else                p "NOT FOUND name_tags: #{m}" -              dob.obj.sub!(/href="#{Xx[:segment]}#+(\S+?)"/,%{href="#\\1"}) # not satisfactory +              dob.obj.sub!(/href="#{Xx[:segment]}#+(\S+?)"/, +                %{href="#\\1"}) # not satisfactory              end            end          end @@ -281,7 +334,8 @@ module SiSU_HTML_Seg                if tracking != 0                  @file=SiSU_Env::FileOp.new(@md)                  unless FileTest.directory?(@file.output_path.html_seg.dir) -                  FileUtils::mkdir_p(@file.output_path.html_seg.dir) if File.writable?("#{@file.output_path.base.dir}/.") +                  FileUtils::mkdir_p(@file.output_path.html_seg.dir) \ +                    if File.writable?("#{@file.output_path.base.dir}/.")                  end                  SiSU_HTML_Seg::Seg.new(@md).tail                  fnh={ @@ -357,7 +411,7 @@ module SiSU_HTML_Seg        && (@make.build.html_navigation_bar?)          x=if (dob.is==:heading \          || dob.is==:heading_insert) \ -        && (dob.ln.to_s =~/^[0-6]/) +        && (dob.ln.to_s =~/^[0-7]/)            x=if @@tracker < @@seg_total-1              format_head_seg.dot_control_pre_next            else @@ -387,10 +441,14 @@ module SiSU_HTML_Seg        @p_num ||= ''        if @@is0==1          @author=%{<b>#{@md.author}</b>\n} if @md.author.to_s =~/\S/ -        @@seg[:tocband_banner] << format_head_seg.navigation_band(@@segtocband,@@seg[:dot_nav]) -        @@seg[:tocband_bannerless] << '<br />' << format_head_seg.navigation_band_bottom(@@segtocband,@@seg[:dot_nav]) +        @@seg[:tocband_banner] \ +        << format_head_seg.navigation_band(@@segtocband,@@seg[:dot_nav]) +        @@seg[:tocband_bannerless] \ +        << '<br />' \ +        << format_head_seg.navigation_band_bottom(@@segtocband,@@seg[:dot_nav])          if @title_banner_ -          @@seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author).gsub(clean,'') +          @@seg[:headings] \ +          << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author).gsub(clean,'')          end          ocn=(@@heading0[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \          ? $1 @@ -398,8 +456,10 @@ module SiSU_HTML_Seg          @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)          txt_obj={ txt: @@heading0, ocn_display: @p_num.ocn_display }          format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) -        @@seg[:headings] << format_seg.title_heading0.gsub(clean,'') -        @@heading0=@@heading0.gsub(/ <a name="-[\d*+]+" href="#_[\d*+]+"> <sup>[\d*+]+<\/sup> <\/a>/,'') +        @@seg[:headings] \ +        << format_seg.title_heading0.gsub(clean,'') +        @@heading0=@@heading0. +          gsub(/ <a name="-[\d*+]+" href="#_[\d*+]+"> <sup>[\d*+]+<\/sup> <\/a>/,'')        end        if @@is1==1          heading1=@@heading1 @@ -409,8 +469,10 @@ module SiSU_HTML_Seg          @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)          txt_obj={ txt: heading1, ocn_display: @p_num.ocn_display }          format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) -        @@seg[:headings] << format_seg.title_heading1.gsub(clean,'') -        @@heading1=@@heading1.gsub(/ <a name="-[\d*+]+" href="#_[\d*+]+"> <sup>[\d*+]+<\/sup> <\/a>/,'') +        @@seg[:headings] \ +        << format_seg.title_heading1.gsub(clean,'') +        @@heading1=@@heading1. +          gsub(/ <a name="-[\d*+]+" href="#_[\d*+]+"> <sup>[\d*+]+<\/sup> <\/a>/,'')        end        if @@is2==1          heading2=@@heading2 @@ -420,8 +482,10 @@ module SiSU_HTML_Seg          @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)          txt_obj={ txt: heading2, ocn_display: @p_num.ocn_display }          format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) -        @@seg[:headings] << format_seg.title_heading2.gsub(clean,'') -        @@heading2=@@heading2.gsub(/ <a name="-[\d*+]+" href="#_[\d*+]+"> <sup>[\d*+]+<\/sup> <\/a>/,'') +        @@seg[:headings] \ +        << format_seg.title_heading2.gsub(clean,'') +        @@heading2=@@heading2. +          gsub(/ <a name="-[\d*+]+" href="#_[\d*+]+"> <sup>[\d*+]+<\/sup> <\/a>/,'')        end        if @@is3==1          heading3=@@heading3 @@ -431,8 +495,10 @@ module SiSU_HTML_Seg          @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)          txt_obj={ txt: heading3, ocn_display: @p_num.ocn_display }          format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) -        @@seg[:headings] << format_seg.title_heading3.gsub(clean,'') -        @@heading3=@@heading3.gsub(/ <a name="-[\d*+]+" href="#_[\d*+]+"> <sup>[\d*+]+<\/sup> <\/a>/,'') +        @@seg[:headings] \ +        << format_seg.title_heading3.gsub(clean,'') +        @@heading3=@@heading3. +          gsub(/ <a name="-[\d*+]+" href="#_[\d*+]+"> <sup>[\d*+]+<\/sup> <\/a>/,'')        end        if @@is4==1          heading4=@@heading4 @@ -442,7 +508,8 @@ module SiSU_HTML_Seg          @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)          txt_obj={ txt: heading4, ocn_display: @p_num.ocn_display }          format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) -        @@seg[:headings] << format_seg.title_heading4.gsub(clean,'') +        @@seg[:headings] \ +        << format_seg.title_heading4.gsub(clean,'')        end        @@tracker=@@tracker+1      end @@ -467,6 +534,8 @@ module SiSU_HTML_Seg                sto.seg_heading5              elsif dob.ln==6                sto.seg_heading6 +            elsif dob.ln==7 +              sto.seg_heading6              end            elsif dob.is==:para              if dob.indent \ @@ -589,7 +658,7 @@ module SiSU_HTML_Seg            end          end          if dob.is==:heading \ -        && (dob.ln.to_s =~/^[56]/) +        && (dob.ln.to_s =~/^[5-7]/)            case dob.ln            when 5              txt_obj={ txt: dob.obj.strip, ocn: dob.ocn } @@ -599,6 +668,10 @@ module SiSU_HTML_Seg              txt_obj={ txt: dob.obj.strip, ocn: dob.ocn }              format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)              subtoc=format_seg.subtoc_lev6 #keep and make available, this is the subtoc +          when 7 +            txt_obj={ txt: dob.obj.strip, ocn: dob.ocn } +            format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) +            subtoc=format_seg.subtoc_lev7 #keep and make available, this is the subtoc            end            @@seg_subtoc_array << subtoc          end diff --git a/lib/sisu/v5/html_tune.rb b/lib/sisu/v5/html_tune.rb index 1a2c9dee..3e8c2d68 100644 --- a/lib/sisu/v5/html_tune.rb +++ b/lib/sisu/v5/html_tune.rb @@ -150,7 +150,7 @@ module SiSU_HTML_Tune          end          SiSU_HTML_Tune::Tune.new(@data,@md).output        rescue -        SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/hub.rb b/lib/sisu/v5/hub.rb index 785da84d..fed4ae55 100644 --- a/lib/sisu/v5/hub.rb +++ b/lib/sisu/v5/hub.rb @@ -66,6 +66,7 @@ module SiSU    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 @@ -82,10 +83,12 @@ module SiSU      def initialize(argv,call_path)        begin                                            #% select what to do (set options & start processing (files selected if any))          opt=SiSU_Commandline::Options.new(argv,call_path) #  command line selection of what to do, files & operations set -        SiSU::Processing.new(opt).actions              #  do it +        SiSU::Processing.new(opt).version_info +        SiSU::Processing.new(opt).actions_without_files  #  do it +        SiSU::Processing.new(opt).actions_on_files       #  do it        rescue -        cmd=(opt ? opt.cmd : '') -        SiSU_Screen::Ansi.new(cmd,$!,$@).rescue do +        selection=(opt ? opt.selection : '') +        SiSU_Screen::Ansi.new(selection,$!,$@).rescue do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -202,81 +205,6 @@ module SiSU        end      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.cmd} #{@opt.fns}\n") -      @@n_do=@@n_do+1 -      SiSU_Screen::Ansi.new( -        @opt.cmd,@@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.cmd} 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.cmd} 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.cmd} 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.cmd} processing skipped\n" -      else -        puts "\n#{@cX.fuchsia}FILETYPE NOT RECOGNISED:#{@cX.off} << #{@opt.fns} >> - is not a recognized filetype,\n\trequested #{@opt.cmd} processing skipped\n" -      end -    end -  end    class Processing      begin        require 'fileutils' @@ -292,7 +220,11 @@ module SiSU        @@env=@env=SiSU_Env::InfoEnv.new        @msg,@msgs='',nil        @tell=lambda { -        SiSU_Screen::Ansi.new(@opt.cmd,@msg,"#{@msgs.inspect if @msgs}") +        SiSU_Screen::Ansi.new( +          @opt.selections.str, +          @msg, +          "#{@msgs.inspect if @msgs}" +        )        }      end      def remove_skipped_files_if_any_from_processing_files_array @@ -307,16 +239,6 @@ module SiSU            @remove_faulty_markup_files_array.join(',')        end      end -    def do_loops -      @remove_faulty_markup_files_array=[] -      if @opt.act[:zap][:set]==:on                     #% --zap, -Z -        do_loop_files_on_given_option_pre -      end -      do_each_file_loop_options -      remove_skipped_files_if_any_from_processing_files_array -      do_loop_files_on_given_option_post -      print_error_message_if_files_skipped -    end      def do_each_file_loop_options        @opt.files.each_with_index do |fno,i|          @opt.fno=fno @@ -336,129 +258,18 @@ module SiSU            Dir.chdir(@opt.pth) #watch          end          @env=SiSU_Env::InfoEnv.new(@opt.fns) -        if @opt.act[:ao][:set]==:on                   #% --ao --dal, -m -          $process_document = :ok -          unless @opt.act[:po4a][:set]==:on            # --po4a, -P -            if @opt.fno =~ /\.ssm$/ -              require_relative 'ao_composite'          # ao_composite.rb #pre-processing -              SiSU_Assemble::Composite.new(@opt).read -            end -            require_relative 'ao'                      # -m     ao.rb -            SiSU_AO::Source.new(@opt).read -          end -        end -        if $process_document == :ok -          if @opt.act[:qrcode][:set]==:on                #% --qrcode, -Q -            require_relative 'qrcode'                    #  qrcode.rb -            SiSU_QRcode::Source.new(@opt).read -          end -          if @opt.act[:hash_digests][:set]==:on          #% --hash-digests, -N digest tree -            require_relative 'digests'                   #  digests.rb -            SiSU_DigestView::Source.new(@opt).read -          end -          if @opt.act[:txt][:set]==:on                   #% --txt, -t -a -            require_relative 'txt_plain'                 #  txt_plain.rb -            SiSU_Txt_Plain::Source.new(@opt).read -          end -          if @opt.act[:txt_textile][:set]==:on           #% --textile -            require_relative 'txt_textile'               #  txt_textile.rb -            SiSU_Txt_Textile::Source.new(@opt).read -          end -          if @opt.act[:txt_asciidoc][:set]==:on          #% --asciidoc -            require_relative 'txt_asciidoc'              #  txt_asciidoc.rb -            SiSU_Txt_AsciiDoc::Source.new(@opt).read -          end -          if @opt.act[:txt_markdown][:set]==:on          #% --markdown -            require_relative 'txt_markdown'              #  txt_markdown.rb -            SiSU_Txt_Markdown::Source.new(@opt).read -          end -          if @opt.act[:txt_rst][:set]==:on               #% --rst, --rest -            require_relative 'txt_rst'                   #  txt_rst.rb -            SiSU_Txt_rST::Source.new(@opt).read -          end -          if @opt.act[:html][:set]==:on                  #% --html, -h -H -            require_relative 'html'                      #  html.rb -            SiSU_HTML::Source.new(@opt).read -          else -            if @opt.act[:html_seg][:set]==:on            #% --html-seg (-h -H) -              require_relative 'html'                    #  html.rb -              SiSU_HTML::Source.new(@opt).read -            end -            if @opt.act[:html_scroll][:set]==:on         #% --html-scroll (-h -H) -              require_relative 'html'                    #  html.rb -              SiSU_HTML::Source.new(@opt).read -            end -          end -          if @opt.act[:concordance][:set]==:on           #% --concordance, -w -            require_relative 'html_concordance'          #  html_concordance.rb -            SiSU_Concordance::Source.new(@opt).read -          end -          if @opt.act[:epub][:set]==:on                  #% --epub, -e -            require_relative 'xhtml_epub2'               # xhtml_epub2.rb -            SiSU_XHTML_EPUB2::Source.new(@opt).read -          end -          if @opt.act[:odt][:set]==:on                   #% --odt, -o opendocument -            require_relative 'xml_odf_odt'               #  xml_odf_odt.rb -            SiSU_XML_ODF_ODT::Source.new(@opt).read -          end -          if @opt.act[:xhtml][:set]==:on                 #% --xhtml, -b xhtml -            require_relative 'xhtml'                     #  xhtml.rb -            SiSU_XHTML::Source.new(@opt).read -          end -          if @opt.act[:xml_scaffold_structure_sisu][:set]==:on #% --xml-scaffold --xml-scaffold-sisu -            require_relative 'xml_scaffold_structure_sisu' #  xml_scaffold_structure_sisu.rb -            SiSU_XML_Scaffold_Structure_Sisu::Source.new(@opt).read -          end -          if @opt.act[:xml_scaffold_structure_collapse][:set]==:on #% --xml-scaffold-collapse -            require_relative 'xml_scaffold_structure_collapsed' # xml_scaffold_structure_collapsed.rb -            SiSU_XML_Scaffold_Structure_Collapse::Source.new(@opt).read -          end -          if @opt.act[:xml_docbook_book][:set]==:on      #% --xml-docbook -            require_relative 'xml_docbook5'              # xml_docbook5.rb -            SiSU_XML_Docbook_Book::Source.new(@opt).read -          end -          if @opt.act[:xml_fictionbook][:set]==:on       #% --xml-fictionbook -            require_relative 'xml_fictionbook2'          # xml_fictionbook2.rb -            SiSU_XML_Fictionbook::Source.new(@opt).read -          end -          if @opt.act[:xml_sax][:set]==:on               #% --xml-sax, -x xml sax type -            require_relative 'xml_sax'                   #  xml_sax.rb -            SiSU_XML_SAX::Source.new(@opt).read -          end -          if @opt.act[:xml_dom][:set]==:on               #% --xml-dom, -X xml dom type -            require_relative 'xml_dom'                   #  xml_dom.rb -            SiSU_XML_DOM::Source.new(@opt).read -          end -          if @opt.act[:pdf][:set]==:on \ -          or @opt.act[:pdf_p][:set]==:on \ -          or @opt.act[:pdf_l][:set]==:on                 #% --pdf-l --pdf, -p latex/ texpdf -            require_relative 'texpdf'                    #  texpdf.rb -            SiSU_TeX::Source.new(@opt).read -          end -          if @opt.act[:manpage][:set]==:on               #% --manpage, -i -            require_relative 'manpage'                   #  manpage.rb -            SiSU_Manpage::Source.new(@opt).read -          end -          if @opt.act[:texinfo][:set]==:on               #% --texinfo, -I -            require_relative 'texinfo'                   #  texinfo.rb -            SiSU_TexInfo::Source.new(@opt).read -          end -          if @opt.act[:sqlite_discrete][:set]==:on       #% --sqlite, -d DB sqlite -            require_relative 'dbi_discrete'              #  dbi_discrete.rb -            SiSU_DBI_Discrete::SQL.new(@opt).build -          end -          if @opt.act[:manifest][:set]==:on              #% --manifest, -y -            require_relative 'manifest'                  #  manifest.rb -            ((@opt.act[:sisupod][:set]==:on \ -            || @opt.act[:share_source][:set]==:on) \ -            && @opt.files.length < 2 ) \ -            ? nil -            : SiSU_Manifest::Source.new(@opt).read -          end -        else -          @remove_faulty_markup_files_array << fno -          $process_document=:ok -        end +        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.pdf? +        actions.outputs.each_file.man_or_info? +        actions.outputs.each_file.sqlite_discrete? +        actions.outputs.each_file.manifest?        end      end      def do_loop_files_on_given_option_pre @@ -473,234 +284,27 @@ module SiSU        end      end      def do_loop_files_on_given_option_post -      if @opt.act[:share_source][:set]==:on \ -      or  @opt.act[:sisupod][:set]==:on \ -      or  @opt.act[:git][:set]==:on -        begin -          require_relative 'src_shared' -          OptionLoopFiles.new(@opt).loop_files_on_given_option do -            SiSU_Source::SiSUpodSource.new(@opt).read -          end -          if @opt.act[:share_source][:set]==:on -            require_relative 'src_share'               # -s     src_share.rb -            begin -            ensure -              OptionLoopFiles.new(@opt).loop_files_on_given_option_bundle do -                SiSU_Markup::Source.new(@opt).read -              end -            end -          end -          if @opt.act[:sisupod][:set]==:on             #% --sisupod, -S make sisupod -            require_relative 'src_sisupod_make'        # -S     src_sisupod_make.rb -            begin -            ensure -              OptionLoopFiles.new(@opt).loop_files_on_given_option_bundle do -                SiSU_Doc::Source.new(@opt).sisupod_tar_xz -              end -            end -          end -          if @opt.act[:git][:set]==:on                 #% --git, -g sisu git -            require_relative 'git'                     # -g     git.rb -            begin -              OptionLoopFiles.new(@opt).loop_files_on_given_option do -                SiSU_Git::Source.new(@opt).read -              end -            ensure -              OptionLoopFiles.new(@opt).loop_files_on_given_option_bundle do -                SiSU_Git::Source.new(@opt).git_commit -              end -            end -          end -          if (@opt.act[:sisupod][:set]==:on \ -          || @opt.act[:share_source][:set]==:on) \ -          and @opt.act[:manifest][:set]==:on           #% --manifest, -y -            require_relative 'manifest'                # -y     manifest.rb -            begin -            ensure -              OptionLoopFiles.new(@opt).loop_files_on_given_option_bundle do -                SiSU_Manifest::Source.new(@opt).read -              end -            end -          end -        ensure -          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 -        end -      end -      if @opt.act[:po4a][:set]==:on                    #% --po4a, -P -        require_relative 'po4a' -        begin -          OptionLoopFiles.new(@opt).loop_files_on_given_option do -            SiSU_Po4a::Source.new(@opt).read             # -P     po4a.rb -          end -        ensure -        end -      end -      if @opt.act[:images][:set]==:on                  #% --images, -j -        require_relative 'shared_images' -        OptionLoopFiles.new(@opt).loop_files_on_given_option do -          SiSU_Images::Source.new(@opt).read           # -j     shared_images.rb -        end -      end -      if @opt.cmd =~/T/                                #% -T termsheet/standard form -        @opt.files.each do |fns| -          if FileTest.file?(fns) -            @opt.fns=fns -            case @opt.fns -            when /\.(termsheet.rb)$/ -              SiSU::Operations.new(@opt).termsheet -            else                                       #print "not processed --> ", fns, "\n" -            end -          else SiSU::Operations.new(@opt).not_found -          end -        end -        SiSU::Operations.new.counter -      end -      if @opt.act[:psql][:set]==:on                    #% --pg, -D DB postgresql -        require_relative 'dbi' -        OptionLoopFiles.new(@opt).loop_files_on_given_option do -          SiSU_DBI::SQL.new(@opt).connect              # -D -d  dbi.rb -        end -      end -      if @opt.act[:sqlite][:set]==:on                  #% --sqlite, -d DB sqlite -        require_relative 'dbi' -        OptionLoopFiles.new(@opt).loop_files_on_given_option do -          SiSU_DBI::SQL.new(@opt).connect              # -D -d  dbi.rb -        end -      end -      if @opt.act[:manifest][:set]==:on                #% --manifest, -y -        require_relative 'manifest' -        OptionLoopFiles.new(@opt).manifest_on_files_translated do -          SiSU_Manifest::Source.new(@opt).read         # -y     manifest.rb -        end -      end -      if @opt.act[:sitemap][:set]==:on                 #% --sitemap, -Y -        require_relative 'sitemaps' -        OptionLoopFiles.new(@opt).loop_files_on_given_option do -          SiSU_Sitemaps::Source.new(@opt).read         # -Y     sitemaps.rb -        end -      end -      if @opt.act[:harvest][:set] !=:on -        if @opt.act[:scp][:set]==:on                   #% -r copy to remote server -          require_relative 'remote'                    # -r     remote.rb -          OptionLoopFiles.new(@opt).loop_files_on_given_option do -            SiSU_Remote::Put.new(@opt).scp -          end -        end -        if @opt.act[:rsync][:set]==:on                 #% -R copy to remote server -          require_relative 'remote'                    # -R     remote.rb -          OptionLoopFiles.new(@opt).loop_files_on_given_option do -            SiSU_Remote::Put.new(@opt).rsync -          end -        end -      else -      end -      if @opt.act[:urls_selected][:set]==:on           #% --sitemap, -Y -        require_relative 'urls' -        OptionLoopFiles.new(@opt).loop_files_on_given_option do -          SiSU_Urls::Source.new(@opt).read              #% -u -v -V -M -        end -      end +      actions=SiSU_Hub_Actions::HubActions.new(@opt) +      actions.outputs.loop_files.share_source? +      actions.outputs.loop_files.run_termsheet? +      actions.outputs.loop_files.sql? +      SiSU_Hub_Actions::Operations.new.counter +      actions.outputs.loop_files.manifest? +      actions.outputs.loop_files.sitemaps? +      actions.outputs.loop_files.urls?      end -    def do_initialization -      @cX=SiSU_Screen::Ansi.new(@opt.act[:color_state][:set]).cX -      SiSU_Env::InfoProcessingFlag.new -      if @opt.act[:version_info][:set]==:on            #% version information +    def version_info +      if @opt.act[:version_info][:set]==:on          SiSU_Env::InfoAbout.new(@opt).sisu_version -        if (@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 -      if @opt.act[:ao][:set]==:on \ -      or @opt.act[:maintenance][:set]==:on             #% --maintenance, -m for -C -        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[: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.mod.inspect =~/--init(?:ialize)?=site/ \ -          and @opt.cmd =~/RZ/ -            SiSU::Operations.new(@opt).remote_put_base_site_rsync_match -          else SiSU::Operations.new(@opt).remote_put_base_site_rsync -          end -        elsif @opt.act[:scp][:set]==:on -          if @opt.mod.inspect =~/--init(?:ialize)?=site/ \ -          and @opt.cmd =~/CCr/ -            SiSU::Operations.new(@opt).remote_put_base_site_all -          else SiSU::Operations.new(@opt).remote_put_base_site -          end -        end -      end -      if @opt.act[:sample_search_form][:set]==:on      #% --sample-search-form, -F cgi sample search form -        SiSU::Operations.new(@opt).cgi -      end -      if @opt.act[:webrick][:set]==:on                 #% --webrick, -W webrick -        SiSU::Operations.new(@opt).webrick -      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::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 -    def actions +    def actions_without_files +      actions=SiSU_Hub_Actions::HubActions.new(@opt) +      actions.prepare.site? +      actions.prepare.remote_site? +      actions.prepare.sql? +    end +    def actions_on_files        if @opt.act[:profile][:set]==:on          begin            require 'profile' @@ -709,150 +313,71 @@ module SiSU              error('profile NOT FOUND (LoadError)')          end        end -      action_on_file_ =if @opt.act[:rsync][:set]==:on \ -      && @opt.act[:site_init][:set]==:on -        :false -      elsif @opt.act[:rsync][:set]==:on \ -      && @opt.act[:site_init][:set] !=:on -        :true -      elsif ((@opt.act[:psql][:set]==:on \ -      or @opt.act[:sqlite][:set]==:on) \ -      and @opt.mod.join(';') =~/--(?:createdb|init(?:ialize)?|create(?:all)?|createtables|recreate|drop(?:all))/) -        :false -      else -        (@opt.act[:ao][:set]==:on \ -        || @opt.act[:manpage][:set]==:on \ -        || @opt.act[:texinfo][:set]==:on \ -        || @opt.act[:txt][:set]==:on \ -        || @opt.act[:txt_textile][:set]==:on \ -        || @opt.act[:txt_asciidoc][:set]==:on \ -        || @opt.act[:txt_markdown][:set]==:on \ -        || @opt.act[:txt_rst][:set]==:on \ -        || @opt.act[:html][:set]==:on \ -        || @opt.act[:html_scroll][:set]==:on \ -        || @opt.act[:html_seg][:set]==:on \ -        || @opt.act[:concordance][:set]==:on \ -        || @opt.act[:xhtml][:set]==:on \ -        || @opt.act[:epub][:set]==:on \ -        || @opt.act[:odt][:set]==:on \ -        || @opt.act[:xml_sax][:set]==:on \ -        || @opt.act[:xml_dom][:set]==:on \ -        || @opt.act[:xml_scaffold_structure_sisu][:set]==:on \ -        || @opt.act[:xml_scaffold_structure_collapse][:set]==:on \ -        || @opt.act[:xml_docbook_book][:set]==:on \ -        || @opt.act[:xml_fictionbook][:set]==:on \ -        || @opt.act[:pdf][:set]==:on \ -        || @opt.act[:pdf_p][:set]==:on \ -        || @opt.act[:pdf_l][:set]==:on \ -        || @opt.act[:psql][:set]==:on \ -        || @opt.act[:sqlite][:set]==:on \ -        || @opt.act[:sqlite_discrete][:set]==:on \ -        || @opt.act[:share_source][:set]==:on \ -        || @opt.act[:sisupod][:set]==:on \ -        || @opt.act[:qrcode][:set]==:on \ -        || @opt.act[:hash_digests][:set]==:on \ -        || @opt.act[:manifest][:set]==:on \ -        || @opt.act[:scp][:set]==:on \ -        || @opt.act[:webrick][:set]==:on \ -        || @opt.act[:zap][:set]==:on) \ -        ? (:true) -        : (:false) -      end -      if @opt.act[:harvest][:set]==:on -        require_relative 'harvest'                     # harvest.rb -        SiSU_Harvest::Source.new(@opt).read            # -h -H  html.rb -      elsif @opt.mod.inspect =~/--convert|--to|--from/ -        require_relative 'sst_convert_markup'          # sst_convert_markup.rb -      elsif action_on_file_ == :false \ -      and (@opt.act[:psql][:set]==:on \ -      or @opt.act[:sqlite][:set]==:on) -        if @opt.act[:psql][:set]==:on -          require_relative 'dbi' -          SiSU_DBI::SQL.new(@opt).connect -        end -        if @opt.act[:sqlite][:set]==:on -          require_relative 'dbi' -          SiSU_DBI::SQL.new(@opt).connect +      actions=SiSU_Hub_Actions::HubActions.new(@opt) +      actions.outputs.each_file.harvest? #check +      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 +      actions.outputs.sql? #check location +      if @opt.f_pths.length > 0 +        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 -      elsif action_on_file_ == :true \ -      or (                                            #% ---> -        @opt.cmd =~/^-/ \ -        and @opt.cmd =~/([abCcDdeFGgHhIjikLMmNnoPpQqRrSsTtUuVvWwXxYyZ_0-9])/ \ -        and @opt.mod.inspect !~/--(?:sitemaps|query|identify)/ \ -        or @opt.mod.inspect =~/--(?:(?:sq)?lite|pg(?:sql)?)/ -      ) -        do_initialization -        if action_on_file_ == :true \ -        and @opt.files.length > 0 -          do_loops -          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 temporary processing directory 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 +        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 temporary processing directory 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 -        elsif action_on_file_ == :true \ -        and @opt.files.length == 0 -          STDERR.puts %{requested action requires valid sisu markup file [filename (.sst .ssm)] or wildcard (that includes a valid filename)} -          if (@opt.act[:verbose_plus][:set]==:on \ -          || @opt.act[:maintenance][:set]==:on) -            SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).warn(:fuchsia) -          end          end -      elsif @opt.mod.inspect =~/--query/ -        require_relative 'sst_identify_markup'          # sst_identify_markup.rb -        puts SiSU_Markup::MarkupHistory.new(@opt).query -      elsif @opt.mod.inspect =~/--identify/ -        require_relative 'sst_identify_markup'          # sst_identify_markup.rb -        SiSU_Markup::MarkupIdentify.new(@opt).markup_version? -      elsif  @opt.mod.inspect =~/--sitemaps/           #% sitemaps -        require_relative 'sitemaps'                    # sitemaps.rb -        SiSU_Sitemaps::Source.new(@opt).read -        if @opt.act[:rsync][:set]==:on -          require_relative 'remote'                    # remote.rb -          SiSU_Remote::Put.new(@opt).rsync_sitemaps +      elsif @opt.f_pths.length == 0 +        STDERR.puts %{requested action requires valid sisu markup file [filename (.sst .ssm)] or wildcard (that includes a valid filename)} +        if (@opt.act[:verbose_plus][:set]==:on \ +        || @opt.act[:maintenance][:set]==:on) +          SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).warn(:fuchsia)          end        else                                             #% sisu help refer to man pages -        SiSU_Env::InfoAbout.new(@opt).sisu_version -        SiSU_Env::InfoAbout.new(@opt).sisu_about +        actions.prepare(@opt).site? +        unless done==:ok +          #SiSU_Env::InfoAbout.new(@opt).sisu_about +        end        end        @opt.files.each do |fns|          if FileTest.file?(fns)            @opt.fns=fns            unless @opt.fns =~ /(?:\.(?:(?:-|ssm\.)?sst|ssm|ssp|sx[sdn]\.xml|termsheet.rb)|\S+?\.ss[mt]\.(?:txz|zip)|sisupod\.(?:txz|zip)?|\S+?\.ssp)$/ -            if @opt.cmd.inspect=~/-P/ +            if @opt.selections.str=~/--pg/              elsif @opt.fns=~/\.kdi$/ \              and @opt.mod.inspect =~/--(?:convert(?:-from)?|from)[=-]kdi/              elsif @opt.fns=~/\.sx[sdn]\.xml$/ \              and @opt.mod.inspect =~/--(?:(?:convert(?:-from)?|from)[=-])?(?:xml2sst|sxml)/              elsif @opt.fns=~/\.ssi$/ \              and @opt.mod.inspect =~/--identify/ -            else SiSU::Operations.new(@opt).not_recognised +            else SiSU_Hub_Actions::Operations.new(@opt).not_recognised              end            end            if @opt.fns =~/\.ssm\.sst$/ \ -          and @opt.cmd !~/[S_M]/ # rework necessry, revist, the _ flag is a hack, to keep ._sst files +          and @opt.selections.str !~/[S_M]/ # rework necessary, revist, the _ flag is a hack, to keep ._sst files              @msg,@msgs='temporary file removed',nil              @tell.call.warn unless @opt.act[:quiet][:set]==:on              File.unlink(@opt.fns) if File.exist?(@opt.fns) #CONSIDER            end -        else                          #SiSU::Operations.new(fns,'html').not_found +        else #SiSU::Operations.new(fns,'html').not_found          end        end      end diff --git a/lib/sisu/v5/hub_actions.rb b/lib/sisu/v5/hub_actions.rb new file mode 100644 index 00000000..8717f815 --- /dev/null +++ b/lib/sisu/v5/hub_actions.rb @@ -0,0 +1,585 @@ +# encoding: utf-8 +=begin + + * Name: SiSU + + * Description: a framework for document structuring, publishing and search + + * Author: Ralph Amissah + + * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, +   2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Ralph Amissah, +   All Rights Reserved. + + * License: GPL 3 or later: + +   SiSU, a framework for document structuring, publishing and search + +   Copyright (C) Ralph Amissah + +   This program is free software: you can redistribute it and/or modify it +   under the terms of the GNU General Public License as published by the Free +   Software Foundation, either version 3 of the License, or (at your option) +   any later version. + +   This program is distributed in the hope that it will be useful, but WITHOUT +   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +   FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +   more details. + +   You should have received a copy of the GNU General Public License along with +   this program. If not, see <http://www.gnu.org/licenses/>. + +   If you have Internet connection, the latest version of the GPL should be +   available at these locations: +   <http://www.fsf.org/licensing/licenses/gpl.html> +   <http://www.gnu.org/licenses/gpl.html> + +   <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html> + + * SiSU uses: +   * Standard SiSU markup syntax, +   * Standard SiSU meta-markup syntax, and the +   * Standard SiSU object citation numbering and system + + * Hompages: +   <http://www.jus.uio.no/sisu> +   <http://www.sisudoc.org> + + * Download: +   <http://www.sisudoc.org/sisu/en/SiSU/download.html> + + * Git +   <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> +   <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/hub_actions.rb;hb=HEAD> + + * Ralph Amissah +   <ralph@amissah.com> +   <ralph.amissah@gmail.com> + + ** Description: SiSU information Structuring Universe, text structuring, +    processing, publishing, search + +=end +module SiSU_Hub_Actions +  class HubActions +    def initialize(opt) +      @opt=opt +    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.mod.inspect =~/--init(?:ialize)?=site/ \ +            and @opt.selections.str =~/RZ/ +              SiSU::Operations.new(@opt).remote_put_base_site_rsync_match +            else SiSU::Operations.new(@opt).remote_put_base_site_rsync +            end +          elsif @opt.act[:scp][:set]==:on +            if @opt.mod.inspect =~/--init(?:ialize)?=site/ \ +            and @opt.selections.str =~/CCr/ +              SiSU::Operations.new(@opt).remote_put_base_site_all +            else SiSU::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.mod.inspect =~/--init(?:ialize)?=site/ \ +            #  and @opt.selection =~/RZ/ +            #    SiSU::Operations.new(@opt).remote_put_base_site_rsync_match +            #  else SiSU::Operations.new(@opt).remote_put_base_site_rsync +            #  end +            #elsif @opt.act[:scp][:set]==:on +            #  if @opt.mod.inspect =~/--init(?:ialize)?=site/ \ +            #  and @opt.selection =~/CCr/ +            #    SiSU::Operations.new(@opt).remote_put_base_site_all +            #  else SiSU::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 +      self +    end +    def outputs +      if @opt.f_pths.length > 0 +        def each_file +          def abstract_objects? +            if @opt.act[:ao][:set]==:on                   #% --ao --dal, -m +              unless @opt.act[:po4a][:set]==:on            # --po4a, -P +                if @opt.fno =~ /\.ssm$/ +                  require_relative 'ao_composite'          # ao_composite.rb #pre-processing +                  SiSU_Assemble::Composite.new(@opt).read +                end +                require_relative 'ao'                      # -m     ao.rb +                SiSU_AO::Source.new(@opt).read +              end +            end +          end +          def qrcode? +            if @opt.act[:qrcode][:set]==:on                #% --qrcode, -Q +              require_relative 'qrcode'                    #  qrcode.rb +              SiSU_QRcode::Source.new(@opt).read +            end +          end +          def hash_digests? +            if @opt.act[:hash_digests][:set]==:on          #% --hash-digests, -N digest tree +              require_relative 'digests'                   #  digests.rb +              SiSU_DigestView::Source.new(@opt).read +            end +          end +          def text? +            if @opt.act[:txt][:set]==:on                   #% --txt, -t -a +              require_relative 'txt_plain'                 #  txt_plain.rb +              SiSU_Txt_Plain::Source.new(@opt).read +            end +            if @opt.act[:txt_textile][:set]==:on           #% --textile +              require_relative 'txt_textile'               #  txt_textile.rb +              SiSU_Txt_Textile::Source.new(@opt).read +            end +            if @opt.act[:txt_asciidoc][:set]==:on          #% --asciidoc +              require_relative 'txt_asciidoc'              #  txt_asciidoc.rb +              SiSU_Txt_AsciiDoc::Source.new(@opt).read +            end +            if @opt.act[:txt_markdown][:set]==:on          #% --markdown +              require_relative 'txt_markdown'              #  txt_markdown.rb +              SiSU_Txt_Markdown::Source.new(@opt).read +            end +            if @opt.act[:txt_rst][:set]==:on               #% --rst, --rest +              require_relative 'txt_rst'                   #  txt_rst.rb +              SiSU_Txt_rST::Source.new(@opt).read +            end +          end +          def html? +            if @opt.act[:html][:set]==:on                  #% --html, -h -H +              require_relative 'html'                      #  html.rb +              SiSU_HTML::Source.new(@opt).read +            else +              if @opt.act[:html_seg][:set]==:on            #% --html-seg (-h -H) +                require_relative 'html'                    #  html.rb +                SiSU_HTML::Source.new(@opt).read +              end +              if @opt.act[:html_scroll][:set]==:on         #% --html-scroll (-h -H) +                require_relative 'html'                    #  html.rb +                SiSU_HTML::Source.new(@opt).read +              end +            end +            if @opt.act[:concordance][:set]==:on           #% --concordance, -w +              require_relative 'html_concordance'          #  html_concordance.rb +              SiSU_Concordance::Source.new(@opt).read +            end +          end +          def xhtml? +            if @opt.act[:xhtml][:set]==:on                 #% --xhtml, -b xhtml +              require_relative 'xhtml'                     #  xhtml.rb +              SiSU_XHTML::Source.new(@opt).read +            end +            if @opt.act[:epub][:set]==:on                  #% --epub, -e +              require_relative 'xhtml_epub2'               # xhtml_epub2.rb +              SiSU_XHTML_EPUB2::Source.new(@opt).read +            end +          end +          def xml? +            if @opt.act[:odt][:set]==:on                   #% --odt, -o opendocument +              require_relative 'xml_odf_odt'               #  xml_odf_odt.rb +              SiSU_XML_ODF_ODT::Source.new(@opt).read +            end +            if @opt.act[:xml_scaffold_structure_sisu][:set]==:on #% --xml-scaffold --xml-scaffold-sisu +              require_relative 'xml_scaffold_structure_sisu' #  xml_scaffold_structure_sisu.rb +              SiSU_XML_Scaffold_Structure_Sisu::Source.new(@opt).read +            end +            if @opt.act[:xml_scaffold_structure_collapse][:set]==:on #% --xml-scaffold-collapse +              require_relative 'xml_scaffold_structure_collapsed' # xml_scaffold_structure_collapsed.rb +              SiSU_XML_Scaffold_Structure_Collapse::Source.new(@opt).read +            end +            if @opt.act[:xml_docbook_book][:set]==:on      #% --xml-docbook +              require_relative 'xml_docbook5'              # xml_docbook5.rb +              SiSU_XML_Docbook_Book::Source.new(@opt).read +            end +            if @opt.act[:xml_fictionbook][:set]==:on       #% --xml-fictionbook +              require_relative 'xml_fictionbook2'          # xml_fictionbook2.rb +              SiSU_XML_Fictionbook::Source.new(@opt).read +            end +            if @opt.act[:xml_sax][:set]==:on               #% --xml-sax, -x xml sax type +              require_relative 'xml_sax'                   #  xml_sax.rb +              SiSU_XML_SAX::Source.new(@opt).read +            end +            if @opt.act[:xml_dom][:set]==:on               #% --xml-dom, -X xml dom type +              require_relative 'xml_dom'                   #  xml_dom.rb +              SiSU_XML_DOM::Source.new(@opt).read +            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 latex/ texpdf +              require_relative 'texpdf'                    #  texpdf.rb +              SiSU_TeX::Source.new(@opt).read +            end +          end +          def man_or_info? +            if @opt.act[:manpage][:set]==:on               #% --manpage, -i +              require_relative 'manpage'                   #  manpage.rb +              SiSU_Manpage::Source.new(@opt).read +            end +            if @opt.act[:texinfo][:set]==:on               #% --texinfo, -I +              require_relative 'texinfo'                   #  texinfo.rb +              SiSU_TexInfo::Source.new(@opt).read +            end +          end +          def sqlite_discrete? +            if @opt.act[:sqlite_discrete][:set]==:on       #% --sqlite, -d DB sqlite +              require_relative 'dbi_discrete'              #  dbi_discrete.rb +              SiSU_DBI_Discrete::SQL.new(@opt).build +            end +          end +          def manifest? +            if @opt.act[:manifest][:set]==:on              #% --manifest, -y +              require_relative 'manifest'                  #  manifest.rb +              ((@opt.act[:sisupod][:set]==:on \ +              || @opt.act[:share_source][:set]==:on) \ +              && @opt.f_pths.length < 2 ) \ +              ? nil +              : SiSU_Manifest::Source.new(@opt).read +            end +          end +          def harvest? +            if @opt.act[:harvest][:set]==:on +              require_relative 'harvest'                     # harvest.rb +              SiSU_Harvest::Source.new(@opt).read            # -h -H  html.rb +            end +          end +          self +        end +        def loop_files +          def share_source? +            if @opt.act[:share_source][:set]==:on \ +            or @opt.act[:sisupod][:set]==:on \ +            or @opt.act[:git][:set]==:on +              begin +                require_relative 'src_shared' +                SiSU::OptionLoopFiles.new(@opt).loop_files_on_given_option do +                  SiSU_Source::SiSUpodSource.new(@opt).read +                end +                if @opt.act[:share_source][:set]==:on +                  require_relative 'src_share'               # -s     src_share.rb +                  begin +                  ensure +                    SiSU::OptionLoopFiles.new(@opt).loop_files_on_given_option_bundle do +                      SiSU_Markup::Source.new(@opt).read +                    end +                  end +                end +                if @opt.act[:sisupod][:set]==:on             #% --sisupod, -S make sisupod +                  require_relative 'src_sisupod_make'        # -S     src_sisupod_make.rb +                  begin +                    SiSU::OptionLoopFiles.new(@opt).loop_files_on_given_option_bundle do +                      SiSU_Doc::Source.new(@opt).sisupod_tar_xz +                    end +                  ensure +                  end +                end +                if @opt.act[:git][:set]==:on                 #% --git, -g sisu git +                  require_relative 'git'                     # -g     git.rb +                  begin +                    SiSU::OptionLoopFiles.new(@opt).loop_files_on_given_option do +                      SiSU_Git::Source.new(@opt).read +                    end +                  ensure +                    SiSU::OptionLoopFiles.new(@opt).loop_files_on_given_option_bundle do +                      SiSU_Git::Source.new(@opt).git_commit +                    end +                  end +                end +                if (@opt.act[:sisupod][:set]==:on \ +                || @opt.act[:share_source][:set]==:on) \ +                and @opt.act[:manifest][:set]==:on           #% --manifest, -y +                  require_relative 'manifest'                # -y     manifest.rb +                  begin +                  ensure +                    SiSU::OptionLoopFiles.new(@opt).loop_files_on_given_option_bundle do +                      SiSU_Manifest::Source.new(@opt).read +                    end +                  end +                end +              ensure +                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 +              end +            end +            if @opt.act[:po4a][:set]==:on                    #% --po4a, -P +              require_relative 'po4a' +              begin +                SiSU::OptionLoopFiles.new(@opt).loop_files_on_given_option do +                  SiSU_Po4a::Source.new(@opt).read             # -P     po4a.rb +                end +              ensure +              end +            end +            if @opt.act[:images][:set]==:on                  #% --images, -j +              require_relative 'shared_images' +              SiSU::OptionLoopFiles.new(@opt).loop_files_on_given_option do +                SiSU_Images::Source.new(@opt).read           # -j     shared_images.rb +              end +            end +          end +          def run_termsheet? #broken, revisit later +            if @opt.selections.str =~/--termsheet/             #% -T termsheet/standard form #fix later +              @opt.files.each do |fns| +                if FileTest.file?(fns) +                  @opt.fns=fns +                  case @opt.fns +                  when /\.(termsheet.rb)$/ +                    SiSU::Operations.new(@opt).termsheet +                  else                                       #print "not processed --> ", fns, "\n" +                  end +                else SiSU::Operations.new(@opt).not_found +                end +              end +            end +          end +          def sql? +            if @opt.act[:psql][:set]==:on                    #% --pg, -D DB postgresql +              require_relative 'dbi' +              SiSU::OptionLoopFiles.new(@opt).loop_files_on_given_option do +                SiSU_DBI::SQL.new(@opt).connect              # -D -d  dbi.rb +              end +            end +            if @opt.act[:sqlite][:set]==:on                  #% --sqlite, -d DB sqlite +              require_relative 'dbi' +              SiSU::OptionLoopFiles.new(@opt).loop_files_on_given_option do +                SiSU_DBI::SQL.new(@opt).connect              # -D -d  dbi.rb +              end +            end +          end +          def manifest? +            if @opt.act[:manifest][:set]==:on                #% --manifest, -y +              require_relative 'manifest' +              SiSU::OptionLoopFiles.new(@opt).manifest_on_files_translated do +                SiSU_Manifest::Source.new(@opt).read         # -y     manifest.rb +              end +            end +          end +          def sitemaps? +            if @opt.act[:sitemap][:set]==:on                 #% --sitemap, -Y +              require_relative 'sitemaps' +              SiSU::OptionLoopFiles.new(@opt).loop_files_on_given_option do +                SiSU_Sitemaps::Source.new(@opt).read         # -Y     sitemaps.rb +              end +            end +          end +          def remote_placement? +            if @opt.act[:harvest][:set] !=:on +              if @opt.act[:scp][:set]==:on                   #% -r copy to remote server +                require_relative 'remote'                    # -r     remote.rb +                SiSU::OptionLoopFiles.new(@opt).loop_files_on_given_option do +                  SiSU_Remote::Put.new(@opt).scp +                end +              end +              if @opt.act[:rsync][:set]==:on                 #% -R copy to remote server +                require_relative 'remote'                    # -R     remote.rb +                SiSU::OptionLoopFiles.new(@opt).loop_files_on_given_option do +                  SiSU_Remote::Put.new(@opt).rsync +                end +              end +            else +            end +          end +          def urls? +            if @opt.act[:urls_selected][:set]==:on           #% --sitemap, -Y +              require_relative 'urls' +              SiSU::OptionLoopFiles.new(@opt).loop_files_on_given_option do +                SiSU_Urls::Source.new(@opt).read              #% urls.rb +              end +            end +          end +          self +        end +      end +      def init? +        SiSU_Env::InfoProcessingFlag.new +        if (@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 +        if @opt.act[:ao][:set]==:on \ +        or @opt.act[:maintenance][:set]==:on             #% --maintenance, -m for -C +          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[:sample_search_form][:set]==:on      #% --sample-search-form, -F cgi sample search form +          SiSU::Operations.new(@opt).cgi +        end +        if @opt.act[:webrick][:set]==:on                 #% --webrick, -W webrick +          SiSU::Operations.new(@opt).webrick +        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::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__ diff --git a/lib/sisu/v5/hub_options.rb b/lib/sisu/v5/hub_options.rb index f851b985..d822ebd5 100644 --- a/lib/sisu/v5/hub_options.rb +++ b/lib/sisu/v5/hub_options.rb @@ -51,7 +51,7 @@   * Git     <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> -   <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v6/hub_options.rb;hb=HEAD> +   <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/hub_options.rb;hb=HEAD>   * Ralph Amissah     <ralph@amissah.com> @@ -156,11 +156,12 @@ module SiSU_Commandline      end    end    class Options -    attr_accessor :cmd,:mod,: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 +    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      @@act=nil      def initialize(a,call_path) -      @cmd=@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,@mod,@act=Array.new(5){[]} +      @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? @@ -269,24 +270,25 @@ module SiSU_Commandline        if a.length > 0          s=expand_numeric_shortcuts(a)          q=set_files_and_paths_and_general_extract(s) -        @cmd,@mod=opt_cmd_and_mod_adjust(q[:cmd],q[:mod]) +        files=(q[:files].length > 0) ? :true : :false +        @select_arr=opt_cmd_and_mod_adjust(q[:opt_ch],q[:selections],files)          @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 @cmd.empty? \ -        and @mod.length==0 #% if no other action called on filename given, default is sisu --v5 -0 [filename(s)] configured as flag default +        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 -          @mod=['--v5'] -          @cmd=shortcut.cf_0 + ' --dal' +          @select_arr=['--v5'] +          @select_arr << shortcut.act_0.arr #+ ' --dal'          end -        if @cmd =~/[vVM]/ \ -        && @cmd !~/-[ku]*v[ku]*$/ +        if @select_arr.inspect =~/--verbose/ \ +        && @opt_ch !~/-[ku]*v[ku]*$/            SiSU_Screen::Ansi.new( -            @cmd, -            "\tsisu " + @cmd +  ' ' + @mod.join(' ') + ' ' + @files.join(' ') + "\n" +            @opt_ch, +            "\tsisu " + @opt_ch +  ' ' + @select_arr.join(' ') + ' ' + @files.join(' ') + "\n"            ).print_brown          end        end @@ -443,8 +445,8 @@ module SiSU_Commandline          end        end        { -        cmd: c, -        mod: m, +        opt_ch: c, +        selections: m,          what: w,          paths: pth,          files: f, @@ -454,387 +456,583 @@ module SiSU_Commandline        }      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 expand_numeric_shortcuts_(a)        shortcut=SiSU_Env::InfoProcessingFlag.new        s=''        a.each do |x|          y=case x          when /0/            (x=~/^-0\S+/) \ -          ? x.gsub(/^-0(\S+)/,shortcut.cf_0 + ' -\1') -          : x.gsub(/^-0/,shortcut.cf_0 + ' ') +          ? x.gsub(/^-0(\S+)/,shortcut.act_0.str + ' -\1') +          : x.gsub(/^-0/,shortcut.act_0.str + ' ')          when /1/            (x=~/^-1\S+/) \ -          ? x.gsub(/^-1(\S+)/,shortcut.cf_1 + ' -\1') -          : x.gsub(/^-1/,shortcut.cf_1 + ' ') +          ? x.gsub(/^-1(\S+)/,shortcut.act_1.str + ' -\1') +          : x.gsub(/^-1/,shortcut.act_1.str + ' ')          when /2/            (x=~/^-2\S+/) \ -          ? x.gsub(/^-2(\S+)/,shortcut.cf_2 + ' -\1') -          : x.gsub(/^-2/,shortcut.cf_2 + ' ') +          ? x.gsub(/^-2(\S+)/,shortcut.act_2.str + ' -\1') +          : x.gsub(/^-2/,shortcut.act_2.str + ' ')          when /3/            (x=~/^-3\S+/) \ -          ? x.gsub(/^-3(\S+)/,shortcut.cf_3 + ' -\1') -          : x.gsub(/^-3/,shortcut.cf_3 + ' ') +          ? x.gsub(/^-3(\S+)/,shortcut.act_3.str + ' -\1') +          : x.gsub(/^-3/,shortcut.act_3.str + ' ')          when /4/            (x=~/^-4\S+/) \ -          ? x.gsub(/^-4(\S+)/,shortcut.cf_4 + ' -\1') -          : x.gsub(/^-4/,shortcut.cf_4 + ' ') +          ? x.gsub(/^-4(\S+)/,shortcut.act_4.str + ' -\1') +          : x.gsub(/^-4/,shortcut.act_4.str + ' ')          when /5/            (x=~/^-5\S+/) \ -          ? x.gsub(/^-5(\S+)/,shortcut.cf_5 + ' -\1') -          : x.gsub(/^-5/,shortcut.cf_5 + ' ') +          ? x.gsub(/^-5(\S+)/,shortcut.act_5.str + ' -\1') +          : x.gsub(/^-5/,shortcut.act_5.str + ' ')          when /6/            (x=~/^-6\S+/) \ -          ? x.gsub(/^-6(\S+)/,shortcut.cf_5 + ' -\1') -          : x.gsub(/^-6/,shortcut.cf_5 + ' ') +          ? x.gsub(/^-6(\S+)/,shortcut.act_6.str + ' -\1') +          : x.gsub(/^-6/,shortcut.act_6.str + ' ') +        when /7/ +          (x=~/^-7\S+/) \ +          ? x.gsub(/^-7(\S+)/,shortcut.act_7.str + ' -\1') +          : x.gsub(/^-7/,shortcut.act_7.str + ' ') +        when /8/ +          (x=~/^-8\S+/) \ +          ? x.gsub(/^-8(\S+)/,shortcut.act_8.str + ' -\1') +          : x.gsub(/^-8/,shortcut.act_8.str + ' ') +        when /9/ +          (x=~/^-9\S+/) \ +          ? x.gsub(/^-9(\S+)/,shortcut.act_9.str + ' -\1') +          : x.gsub(/^-9/,shortcut.act_9.str + ' ')          else x          end          s << " #{y}" unless y.empty?        end        s.strip!      end -    def opt_cmd_and_mod_adjust(c,m) -      cmd,mod,files=@cmd,@mod,@files -      if not m.empty? \ -      and m.inspect =~/"--pdf-/ -        mod << '--pdf' -        m.each do |s| -          if s =~ /^--pdf-(?:(?:l|landscape)(?:-(?:a4|letter|a5|b5|legal))?|(?:a4|letter|a5|b5|legal)-(?:l|landscape))$/ -            mod << '--landscape' -          end -          if s =~ /^--pdf-(?:(?:p|portrait)(?:-(?:a4|letter|a5|b5|legal))?|(?:a4|letter|a5|b5|legal)-(?:p|portrait))$/ -            mod << '--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)$/ -              mod << '--papersize-a4' -            end -            if s =~ /^--pdf(?:-a5(?:-(?:[lp]|landscape|portrait))?|(?:-(?:[lp]|landscape|portrait))-a5)$/ -              mod << '--papersize-a5' +    def opt_cmd_and_mod_adjust(ch,select_arr,files) +if @select_arr.length > 0 +  p __LINE__ +  p @selection +end +      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[0-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              end -            if s =~ /^--pdf(?:-b5(?:-(?:[lp]|landscape|portrait))?|(?:-(?:[lp]|landscape|portrait))-b5)$/ -              mod << '--papersize-b5' +          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(?:-letter(?:-(?:[lp]|landscape|portrait))?|(?:-(?:[lp]|landscape|portrait))-letter)$/ -              mod << '--papersize-letter' +            if s =~ /^--pdf-(?:(?:p|portrait)(?:-(?:a4|letter|a5|b5|legal))?|(?:a4|letter|a5|b5|legal)-(?:p|portrait))$/ +              select_arr << '--portrait'              end -            if s =~ /^--pdf(?:-legal(?:-(?:[lp]|landscape|portrait))?|(?:-(?:[lp]|landscape|portrait))-legal)$/ -              mod << '--papersize-legal' +            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 -        mod=mod.uniq -      end -      unless m.empty? -        m.each do |s| -          case s -          when /^--(?:color-toggle)$/                                               then c=c+'c' -          when /^--(?:color-off)$/                                                  then c=c+'k' -          when /^--(?:conf|config|configure|init|initialize|init-site)$/            then c=c+'CC' -          when /^--(?:ao|dal?|machine|abstraction|abs)$/                            then c=c+'m' -          when /^--(?:txt|text|plaintext)$/                                         then c=c+'t' -          when /^--(?:html)$/                                                       then c=c+'h' -          when /^--(?:html-scroll|html-seg)$/                                       then c=c+'H' -            mod << s -          when /^--(?:epub)$/                                                       then c=c+'e' -          when /^--(?:od[ft])$/                                                     then c=c+'o' -          when /^--docbook$/                                                     then c=c+'d' -          when /^--(?:pdf)$/                                                        then c=c+'p' -          when /^--pdf-(?:a4|a5|b5|legal|letter)$/                                  then c=c+'p' -          when /^--pdf-(?:p|l|portrait|landscape)$/                                 then c=c+'L' -          when /^--pdf-(?:p(?:ortrait)?|l(?:andscape)?)-(?:a4|letter|a5|b5|legal)$/ then c=c+'L' -          when /^--pdf-(?:a4|letter|a5|b5|legal)-(?:p(?:ortrait)?|l(?:andscape)?)$/ then c=c+'L' -          when /^--(?:concordance|wordmap)$/                                        then c=c+'w' -          when /^--(?:manpage|man)$/                                                then c=c+'i' -          when /^--(?:texinfo)$/                                                    then c=c+'I' -          when /^--(?:xhtml)$/                                                      then c=c+'b' -          when /^--(?:xml-sax)$/                                                    then c=c+'x' -          when /^--(?:xml-dom)$/                                                    then c=c+'X' -          when /^--(?:images)$/                                                     then c=c+'j' -          when /^--(?:digests?|hash-digests)$/                                      then c=c+'N' -          when /^--(?:po4a|pot?)$/                                                  then c=c+'P' -          when /^--(?:termsheet)$/                                                  then c=c+'T' -          when /^--(?:manifest)$/                                                   then c=c+'y' -          when /^--(?:qrcode)$/                                                     then c=c+'Q' -          when /^--(?:remote|rsync)$/                                               then c=c+'R' -          when /^--(?:scp)$/                                                        then c=c+'r' -          when /^--(?:source)$/                                                     then c=c+'s' -          when /^--(?:sisupod|pod)$/                                                then c=c+'S' -          when /^--(?:git)$/                                                        then c=c+'g' -          when /^--(?:urls)$/                                                       then c=c+'U' -          when /^--(?:zap|delete)$/                                                 then c=c+'Z' -          when /^--(?:sample-search-form)$/                                         then c=c+'F' -          when /^--(?:webserv|webrick)$/                                            then c=c+'W' -          when /^--(?:profile)$/                                                    then c=c+'E' -          when /^--(?:maintenance|keep-processing-files)$/                          then c=c+'M' -          when /^--(?:verbose[=-]3)$/                                               then c=c+'VM' -          when /^--(?:verbose[=-]2|Verbose|VERBOSE)$/                               then c=c+'V' -          when /^--(?:verbose(?:[=-]1)?)$/                                          then c=c+'v' -          when /^--(?:version)$/                                                    then c=c+'v' -          when /^--(?:verbose[=-]0|quiet|silent)$/                                  then c=c+'q' -          else mod << s                                     #mod only contains command modifiers; commands converted to character +        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' +            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 -      end -      ca=[] -      unless c.empty? -        c=c.gsub(/-/,'') -        c.scan(/CC|\S/) {|x| ca << x} -        cmd= '-' + ca.uniq.join -      end -      extra='' -      if cmd !~/[mn]/ -        extra+=if cmd =~/[abegHhIiLNOoPpQTtwXxyz]/ \ -        and cmd !~/[mn]/ -          'm'                        #% add ao -        elsif ((mod.inspect =~/--(?:(?:sq)?lite|pg(?:sql)?)/) \ -        and mod.inspect !~/(?:remove|(?:(?:re)?create(?:all)?|dropall|drop)$)/) \ -        and cmd !~/[mn]/ -          'm'                        #% add ao -        else '' +      else +        if ch =~/C/ then select_arr << '--config' +          ch=ch.gsub(/[C]+/,'')          end -      end -      if cmd !~/j/ -        extra+=if cmd =~/[bdHhwXxyz]/ \ -        and cmd !~/[j]/ -          'j'                        #% copy images -        else '' +        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 -      end -      if cmd !~/y/ -        extra+=if cmd =~/[abdeHhIiNopQSstwXxz]/ \ -        and cmd !~/y/ -          'ym'                       #% add manifest -        elsif mod.inspect =~/--(?:(?:sq)?lite|pg(?:sql)?)/ \ -        and files[0] !~/^remove$/ \ -        and cmd !~/y/ -          'ym'                       #% add manifest -        else '' +        if ch =~/v/ then select_arr << '--version' +          ch=ch.gsub(/[v]/,'')          end        end -      if cmd !~/u/                   #% add urls -        extra+='u' -      end -      cmd=cmd + extra -      cmds=cmd.scan(/CC|\S/) -      [cmds.uniq.join,mod] +      select_arr=select_arr.flatten.compact.uniq.sort      end -    def opt_act #note mod line commands have already been converted to command characters, cmd -      cmd,mod=@cmd,@mod +    def opt_act +      select_arr=@select_arr        @@act=if @@act          @act=@@act        else          act={} -        act[:license]=(mod.inspect =~/"--license/) \ +        act[:license]=(select_arr.inspect \ +        =~/"--license/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:site_init]=(cmd =~/C/ \ -        || mod.inspect =~/"--init"|"--initialize"|"--init-site"|"--conf"|"--config"|"--configure"/) \ +        act[:site_init]=(select_arr.inspect \ +        =~/"--init"|"--initialize"|"--init-site"|"--conf"|"--config"|"--configure"/) \          ? { bool: true, set: :on  }          : { bool: false, set: :na } -        act[:rc]=if mod.inspect =~/"--rc=/ -          x=Dir.pwd + '/' + mod.join.gsub(/--rc=/,'') +        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 mod.inspect =~/"--processing-path=/ -          base_pth=mod.join(';').gsub(/^.*--processing-path=['"]?(.+?)(?:['"]?;.+)?$/,'\1') +        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 mod.inspect =~/"--processing-path/ +        elsif select_arr.inspect \ +        =~/"--processing-path/            { bool: true, set: :on, inst: @base_path }          else            { bool: false, set: :na, inst: nil }          end -        act[:dump]=if mod.inspect =~/"--dump=/ -          base_pth=mod.join(';').gsub(/^.*--dump=['"]?(.+?)(?:['"]?;.+)?$/,'\1') +        act[:dump]=if select_arr.inspect \ +        =~/"--dump=/ +          base_pth=select_arr.join(';'). +            gsub(/^.*--dump=['"]?(.+?)(?:['"]?;.+)?$/,'\1')            { bool: true, set: :on, inst: base_pth } -        elsif mod.inspect =~/"--dump/ +        elsif select_arr.inspect =~/"--dump/            { bool: true, set: :on, inst: @base_path }          else            { bool: false, set: :na, inst: nil }          end -        act[:redirect]=if mod.inspect =~/"--redirect=/ -          base_pth=mod.join(';').gsub(/^.*--redirect=['"]?(.+?)(?:['"]?;.+)?$/,'\1') +        act[:redirect]=if select_arr.inspect \ +        =~/"--redirect=/ +          base_pth=select_arr.join(';'). +            gsub(/^.*--redirect=['"]?(.+?)(?:['"]?;.+)?$/,'\1')            { bool: true, set: :on, inst: base_pth } -        elsif mod.inspect =~/"--redirect/ +        elsif select_arr.inspect \ +        =~/"--redirect/            { bool: true, set: :on, inst: @base_path }          else            { bool: false, set: :na, inst: nil }          end -        act[:switch]=if mod.inspect =~/"--switch-off=/ -          off_list=mod.join(';').gsub(/^.*--switch-off=['"]?(.+?)(?:['"];.+)?$/,'\1') +        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 mod.inspect =~/"--(?:default-)?language[-=](\S{2})"/ +        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 mod.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 +        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 mod.inspect =~/"(?:--multilingual|--i18n-multi(?:lingual)?)"/ +        elsif select_arr.inspect \ +        =~/"(?:--multilingual|--i18n-multi(?:lingual)?)"/            @lingual=:multi            { set: :multi }          else { set: :na }          end -        act[:output_by]=if mod.inspect =~/"--(?:output-)?by-language"/ +        act[:output_by]=if select_arr.inspect \ +        =~/"--(?:output-)?by-language"/            @dir_structure_by=:language            { set: :language } -        elsif mod.inspect =~/"--(?:output-)?by-filename"/ +        elsif select_arr.inspect \ +        =~/"--(?:output-)?by-filename"/            @dir_structure_by=:filename            { set: :filename } -        elsif mod.inspect =~/"--(?:output-)?by-filetype"/ +        elsif select_arr.inspect \ +        =~/"--(?:output-)?by-filetype"/            @dir_structure_by=:filetype            { set: :filetype }          else { set: :na }          end -        act[:ocn]=if mod.inspect =~/"--ocn"|"--inc-ocn"|"--numbering"|"--inc-numbering"/ +        act[:ocn]=if select_arr.inspect \ +        =~/"--ocn"|"--inc-ocn"|"--numbering"|"--inc-numbering"/            { bool: true, set: :on } -        elsif mod.inspect =~/"--no-ocn"|"--exc-ocn"|"--no-numbering"|"--exc-numbering"/ \ +        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 mod.inspect =~/"--inc-toc"/ +        act[:toc]=if select_arr.inspect \ +        =~/"--inc-toc"/            { bool: true, set: :on } -        elsif mod.inspect =~/"--(?:exc|no)-toc"/ \ +        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 mod.inspect =~/"--inc-minitoc"/ +        act[:minitoc]=if select_arr.inspect \ +        =~/"--inc-minitoc"/            { bool: true, set: :on } -        elsif mod.inspect =~/"--(?:exc|no)-minitoc"/ \ +        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 mod.inspect =~/"--inc-links-to-manifest"|"--inc-manifest-links"/ +        act[:links_to_manifest]=if select_arr.inspect \ +        =~/"--inc-links-to-manifest"|"--inc-manifest-links"/            { bool: true, set: :on } -        elsif mod.inspect =~/"--(?:exc|no)-manifest"/ \ +        elsif select_arr.inspect \ +        =~/"--(?:exc|no)-manifest"/ \          || act[:switch][:off].inspect =~/"manifest"/ #place lower            { bool: false, set: :off } -        elsif mod.inspect =~/"--(?:exc|no)-links-to-manifest"|"--(?:exc|no)-manifest-links"/ \ -        || act[:switch][:off].inspect =~/"links_to_manifest"|"manifest_links"|"--(?:exc|no)-manifest"/ \ -        || mod.inspect =~/"--(?:redirect|dump)/ +        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 mod.inspect =~/"--inc-manifest-minitoc"|"--inc-minitoc"/ +        act[:manifest_minitoc]=if select_arr.inspect \ +        =~/"--inc-manifest-minitoc"|"--inc-minitoc"/            { bool: true, set: :on } -        elsif mod.inspect =~/"--(?:exc|no)-manifest-minitoc"|"--(?:exc|no)-minitoc"/ \ +        elsif select_arr.inspect \ +        =~/"--(?:exc|no)-manifest-minitoc"|"--(?:exc|no)-minitoc"/ \          || act[:switch][:off].inspect =~/"manifest_minitoc"|"minitoc"/ -        #|| mod.inspect =~/"--(?:redirect|dump)/            { bool: false, set: :off }          else { bool: true, set: :na }          end -        act[:metadata]=if mod.inspect =~/"--inc-metadata"/ +        act[:metadata]=if select_arr.inspect \ +        =~/"--inc-metadata"/            { bool: true, set: :on } -        elsif mod.inspect =~/"--(?:exc|no)-metadata"/ \ +        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 mod.inspect =~/"--inc-html-minitoc"|"--inc-minitoc"/ +        act[:html_minitoc]=if select_arr.inspect \ +        =~/"--inc-html-minitoc"|"--inc-minitoc"/            { bool: true, set: :on } -        elsif mod.inspect =~/"--(?:exc|no)-html-minitoc"|"--(?:exc|no)-minitoc"/ \ +        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 mod.inspect =~/"--inc-html-navigation"|"--inc-navigation"/ +        act[:html_navigation]=if select_arr.inspect \ +        =~/"--inc-html-navigation"|"--inc-navigation"/            { bool: true, set: :on } -        elsif mod.inspect =~/"--(?:exc|no)-html-navigation"|"--(?:exc|no)-navigation"/ \ +        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 mod.inspect =~/"--inc-html-navigation-bar"|"--inc-navigation-bar"/ +        act[:html_navigation_bar]=if select_arr.inspect \ +        =~/"--inc-html-navigation-bar"|"--inc-navigation-bar"/            { bool: true, set: :on } -        elsif mod.inspect =~/"--(?:exc|no)-html-navigation-bar"|"--(?:exc|no)-navigation-bar"/ \ +        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: true, set: :na }          end -        act[:segsubtoc]=if mod.inspect =~/"--inc-segsubtoc"/ +        act[:segsubtoc]=if select_arr.inspect \ +        =~/"--inc-segsubtoc"/            { bool: true, set: :on } -        elsif mod.inspect =~/"--(?:exc|no)-segsubtoc"/ \ +        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 mod.inspect =~/"--inc-search-form"/ +        act[:search_form]=if select_arr.inspect \ +        =~/"--inc-search-form"/            { bool: true, set: :on } -        elsif mod.inspect =~/"--(?:exc|no)-search-form"/ \ +        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 mod.inspect =~/"--inc-html-search-form"|"--inc-search-form"/ +        act[:html_search_form]=if select_arr.inspect \ +        =~/"--inc-html-search-form"|"--inc-search-form"/            { bool: true, set: :on } -        elsif mod.inspect =~/"--(?:exc|no)-html-search-form"|"--(?:exc|no)-search-form"/ \ -        || act[:switch][:off].inspect =~/"html_search_form"|"search_form"|"search"/ +        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 mod.inspect =~/"--inc-html-right-pane"|"--inc-right-pane"|"--inc-html-right-column"|"--inc-right-column"/ +        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 mod.inspect =~/"--(?:exc|no)-html-right-pane"|"--(?:exc|no)-right-pane"|"--(?:exc|no)-html-right-column"|"--(?:exc|no)-right-column"/ \ +        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 mod.inspect =~/"--inc-html-top-band"|"--inc-top-band"/ +        act[:html_top_band]=if select_arr.inspect \ +        =~/"--inc-html-top-band"|"--inc-top-band"/            { bool: true, set: :on } -        elsif mod.inspect =~/"--(?:exc|no)-html-top-band"|"--(?:exc|no)-top-band"/ \ +        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 mod.inspect =~/"--html-strict"/ \ -        or ((cmd =~/h/ || mod.inspect =~/"--html"/) \ -        && mod.inspect =~/"--strict"/) +        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 (cmd =~/h/ \ -        || mod.inspect =~/"--html"/) +        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]=(mod.inspect =~/"--strict"/) \ +          act[:html_strict]=(select_arr.inspect \ +          =~/"--strict"/) \            ? { bool: true, set: :on }            : { bool: false, set: :na } -          act[:html_scroll]=(mod.inspect =~/"--html-scroll"/) \ +          act[:html_scroll]=(select_arr.inspect \ +          =~/"--html-scroll"/) \            ? { bool: true, set: :on }            : { bool: false, set: :na } -          act[:html_seg]=(mod.inspect =~/"--html-seg"/) \ +          act[:html_seg]=(select_arr.inspect \ +          =~/"--html-seg"/) \            ? { bool: true, set: :on }            : { bool: false, set: :na }            { bool: false, set: :na }          end -        act[:concordance]=(cmd =~/w/ \ -        || mod.inspect =~/"--concordance"/) \ +        act[:concordance]=(select_arr.inspect \ +        =~/"--concordance"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:images]=(cmd =~/j/ \ -        || mod.inspect =~/"--images"/) \ +        act[:images]=(select_arr.inspect \ +        =~/"--images"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        if (cmd =~/p/ \ -        || mod.inspect =~/"--pdf"/) -          if mod.inspect =~/"--portrait"/ +        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 mod.inspect =~/"--landscape"/ +          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 } @@ -856,47 +1054,60 @@ module SiSU_Commandline          if act[:pdf][:set]==:on \          or act[:pdf_p][:set]==:on \          or act[:pdf_l][:set]==:on -          act[:pdf_a4]=if mod.inspect =~/"--a4"|--papersize-a4"/ \ -          or mod.inspect =~/"--papersize=\S*a4\b\S*"/ #--papersize=a4,a5 +          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 mod.inspect =~/"--a5"|"--papersize-a5"/ \ -          or mod.inspect =~/"--papersize=\S*a5\b\S*"/ #--papersize=a4,a5 +          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 mod.inspect =~/"--b5"|"--papersize-b5"/ \ -          or mod.inspect =~/"--papersize=\S*b5\b\S*"/ +          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 mod.inspect =~/"--letter"|"--papersize-letter"/ \ -          or mod.inspect =~/"--papersize=\S*letter\b\S*"/ +          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 mod.inspect =~/"--legal"|"--papersize-legal"/ \ -          or mod.inspect =~/"--papersize=\S*legal\b\S*"/ +          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]=(cmd =~/e/ \ -        || mod.inspect =~/"--epub"/) \ +        act[:epub]=(select_arr.inspect \ +        =~/"--epub"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:odt]=if cmd =~/o/ \ -        or mod.inspect =~/"--odt"|"--odf"|"--odt-(?:ocn|numbering)"|"--odf-(?:ocn|numbering)"/ -          act[:odt_ocn]=if (mod.inspect =~/"--odt-(?:ocn|numbering)"|"--odf-(?:ocn|numbering)"/ \ -          or mod.inspect =~/"--ocn"|"--inc-ocn"|"--numbering"|"--inc-numbering"/) +        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 mod.inspect =~/"--no-ocn"|"--exc-ocn"|"--no-numbering"|"--exc-numbering"/ +          elsif select_arr.inspect \ +          =~/"--no-ocn"|"--exc-ocn"|"--no-numbering"|"--exc-numbering"/              { bool: false, set: :off }            else              { bool: false, set: :na } @@ -905,38 +1116,43 @@ module SiSU_Commandline          else            { bool: false, set: :na }          end -        act[:xml_sax]=(cmd =~/x/ \ -        || mod.inspect =~/"--xml-sax"/) \ +        act[:xml_sax]=(select_arr.inspect \ +        =~/"--xml-sax"|"--sax"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:xml_dom]=(cmd =~/X/ \ -        || mod.inspect =~/"--xml-dom"/) \ +        act[:xml_dom]=(select_arr.inspect \ +        =~/"--xml-dom"|"--dom"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:xml_docbook_book]=(cmd =~/d/ \ -        || mod.inspect =~/"--docbook"|"--docbook-book"|"--xml-docbook"|"--xml-docbook_book"/) \ +        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]=(cmd =~/f/ \ -        || mod.inspect =~/"--fictionbook"|"--xml-fictionbook"/) \ +        act[:xml_fictionbook]=(select_arr.inspect \ +        =~/"--fictionbook"|"--xml-fictionbook"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:xml_scaffold_structure_sisu]=mod.inspect =~/"--xml-scaffold"|"--xml-scaffold-sisu"/ \ +        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]=mod.inspect =~/"--xml-scaffold-collapse"/ \ +        act[:xml_scaffold_structure_collapse]=select_arr.inspect \ +        =~/"--xml-scaffold-collapse"/ \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:xhtml]=(cmd =~/b/ \ -        || mod.inspect =~/"--xhtml"/) \ +        act[:xhtml]=(select_arr.inspect \ +        =~/"--xhtml"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:txt]=if cmd =~/[at]/ \ -        or mod.inspect =~/"--txt"|"--text"|"--plaintext"|"--txt-(?:ocn|numbering)"|"--text-(?:ocn|numbering)"|"--plaintext-(?:ocn|numbering)"/ -          act[:txt_ocn]=if (mod.inspect =~/"--txt-(?:ocn|numbering)"|"--text-(?:ocn|numbering)"|"--plaintext-(?:ocn|numbering)"/ \ -          or mod.inspect =~/"--ocn"|"--inc-ocn"|"--numbering"|"--inc-numbering"/) +        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 mod.inspect =~/"--no-ocn"|"--exc-ocn"|"--no-numbering"|"--exc-numbering"/ +          elsif select_arr.inspect \ +          =~/"--no-ocn"|"--exc-ocn"|"--no-numbering"|"--exc-numbering"/              { bool: false, set: :off }            else              { bool: false, set: :na } @@ -945,66 +1161,71 @@ module SiSU_Commandline          else            { bool: false, set: :na }          end -        act[:txt_textile]=(mod.inspect =~/"--textile"/) \ +        act[:txt_textile]=(select_arr.inspect \ +        =~/"--textile"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:txt_asciidoc]=(mod.inspect =~/"--asciidoc"/) \ +        act[:txt_asciidoc]=(select_arr.inspect \ +        =~/"--asciidoc"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:txt_markdown]=(mod.inspect =~/"--markdown"/) \ +        act[:txt_markdown]=(select_arr.inspect \ +        =~/"--markdown"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:txt_rst]=(mod.inspect =~/"--rst"|"--rest"|"--restructuredtext"/) \ +        act[:txt_rst]=(select_arr.inspect \ +        =~/"--rst"|"--rest"|"--restructuredtext"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:manpage]=(cmd =~/i/ \ -        || mod.inspect =~/"--manpage"|"--man"/) \ +        act[:manpage]=(select_arr.inspect \ +        =~/"--manpage"|"--man"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:texinfo]=(cmd =~/I/ \ -        || mod.inspect =~/"--texinfo"/) \ +        act[:texinfo]=(select_arr.inspect \ +        =~/"--texinfo"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:psql]=if mod.inspect =~/"--pg-\S+"/ \ -        or ((mod.inspect =~/"--pg"/) \ -        && (mod.inspect \ +        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 mod.inspect \ +          act[:psql_createdb]=if select_arr.inspect \            =~/"--pg-createdb"|"--createdb"/              { bool: true, set: :on }            else              { bool: false, set: :na }            end -          if mod.inspect \ +          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 mod.inspect \ +            act[:psql_drop]=if select_arr.inspect \              =~/"--pg-dropall"|"--dropall"/                { bool: true, set: :on }              else                { bool: false, set: :na }              end -            act[:psql_create]=if mod.inspect \ +            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 mod.inspect \ +          act[:psql_import]=if select_arr.inspect \            =~/"--pg-import"|"--import"/              { bool: true, set: :on }            else              { bool: false, set: :na }            end -          act[:psql_update]=if mod.inspect \ +          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 mod.inspect \ +            act[:psql_remove]=if select_arr.inspect \              =~/"--pg-remove"|"--remove"/                { bool: true, set: :on }              else @@ -1028,46 +1249,48 @@ module SiSU_Commandline              { bool: false, set: :na }            { bool: false, set: :na }          end -        act[:sqlite]=if (mod.inspect =~/"--sqlite-\S+"/) \ -        or ((mod.inspect =~/"--sqlite"/) \ -        && (mod.inspect \ -        =~/"--createdb"|"--create(?:all)?"|"--dropall"|"--recreate(?:all)?"|"--import"|"--update"|"--remove"/)) -          act[:sqlite_createdb]=if mod.inspect \ +        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 mod.inspect \ +          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 mod.inspect \ +            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 mod.inspect \ +            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 mod.inspect \ +          act[:sqlite_import]=if select_arr.inspect \            =~/"--sqlite-import"|"--import"/              { bool: true, set: :on }            else              { bool: false, set: :na }            end -          act[:sqlite_update]=if mod.inspect \ +          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 mod.inspect \ +            act[:sqlite_remove]=if select_arr.inspect \              =~/"--sqlite-remove"|"--sqlite-remove"/                { bool: true, set: :on }              else @@ -1091,92 +1314,110 @@ module SiSU_Commandline              { bool: false, set: :na }            { bool: false, set: :na }          end -        act[:sqlite_discrete]=mod.inspect =~/"--sql"|"--sqlite"/ \ -        && (mod.inspect !~/"--createdb"|"--create(?:all)?"|"--dropall"|"--recreate(?:all)?"|"--import"|"--update"|"--remove"/) \ +        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]=(mod.inspect =~/"--harvest"/) \ +        act[:harvest]=(select_arr.inspect \ +        =~/"--harvest"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:po4a]=(cmd =~/P/ \ -        || mod.inspect =~/"--po4a"|"--pot?"/) \ +        act[:po4a]=(select_arr.inspect \ +        =~/"--po4a"|"--pot?"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:git]=(cmd =~/g/ \ -        || mod.inspect =~/"--git"/) \ +        act[:git]=(select_arr.inspect \ +        =~/"--git"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:hash_digests]=(cmd =~/N/ \ -        || mod.inspect =~/"--digests?"|"--hash-digests"/) \ +        act[:hash_digests]=(select_arr.inspect \ +        =~/"--digests?"|"--hash-digests"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:pdf_font_size]=if mod.inspect =~/"--(?:pdf-)?font-?size[=-](\d{1,2})(?:pt)?"/ +        act[:pdf_font_size]=if select_arr.inspect \ +        =~/"--(?:pdf-)?font-?size[=-](\d{1,2})(?:pt)?"/            $1          else :na          end -        act[:pdf_hyperlink_colors]=if mod.inspect =~/"--pdf-hyperlinks-(?:mono(?:chrome)?|no-color)"/ +        act[:pdf_hyperlink_colors]=if select_arr.inspect \ +        =~/"--pdf-hyperlinks-(?:mono(?:chrome)?|no-color)"/            :mono -        elsif mod.inspect =~/"--pdf-hyperlinks-color"/ +        elsif select_arr.inspect \ +        =~/"--pdf-hyperlinks-color"/            :color          else :na          end -        act[:hash_digest_algo]=if mod.inspect =~/"--hash-(?:sha)?512"/ +        act[:hash_digest_algo]=if select_arr.inspect \ +        =~/"--hash-(?:sha)?512"/            :sha512 -        elsif mod.inspect =~/"--hash-(?:sha)?256"/ +        elsif select_arr.inspect \ +        =~/"--hash-(?:sha)?256"/            :sha256 -        elsif mod.inspect =~/"--hash-md5"/ +        elsif select_arr.inspect \ +        =~/"--hash-md5"/            :md5          else :na          end -        act[:sample_search_form]=(cmd =~/F/ \ -        || mod.inspect =~/"--sample-search-form"/) \ +        act[:sample_search_form]=select_arr.inspect \ +        =~/"--sample-search-form"/ \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:webrick]=(cmd =~/W/ \ -        || mod.inspect =~/"--webrick"/) \ +        act[:webrick]=select_arr.inspect \ +        =~/"--webrick"/ \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:share_source]=(cmd =~/s/ \ -        || mod.inspect =~/"--source"/) \ +        act[:share_source]=select_arr.inspect \ +        =~/"--source"/ \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:sisupod]=(cmd =~/S/ \ -        || mod.inspect =~/"--sisupod"/) \ +        act[:sisupod]=select_arr.inspect \ +        =~/"--sisupod"/ \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:scp]=(cmd =~/r/ \ -        || mod.inspect =~/"--scp"/) \ +        act[:scp]=select_arr.inspect \ +        =~/"--scp"/ \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:rsync]=(cmd =~/R/ \ -        || mod.inspect =~/"--rsync"|"--remote"/) \ +        act[:rsync]=select_arr.inspect \ +        =~/"--rsync"|"--remote"/ \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:zap]=(cmd =~/Z/ \ -        || mod.inspect =~/"--zap"|"--delete"/) \ +        act[:zap]=select_arr.inspect \ +        =~/"--zap"|"--delete"/ \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:urls_all]=(cmd =~/U/ \ -        || mod.inspect =~/"--urls-all"/) \ +        act[:urls_all]=select_arr.inspect \ +        =~/"--urls-all"/ \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:urls_selected]=(cmd =~/u/ \ -        || mod.inspect =~/"--urls"/) \ -        ? { bool: true, set: :on } -        : { bool: false, set: :na } -        act[:sitemap]=(cmd =~/Y/ \ -        || mod.inspect =~/"--sitemap"/) \ +        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"/ +          { 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]=(cmd =~/Q/ \ -        || mod.inspect =~/"--qrcode"/) \ +        act[:qrcode]=select_arr.inspect \ +        =~/"--qrcode"/ \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:help]=(mod.inspect =~/"--help/) \ +        act[:help]=select_arr.inspect \ +        =~/"--help/ \          ? { bool: true, set: :on }          : { bool: false, set: :na } -        act[:ao]=if (cmd =~/m/ \ -        || mod.inspect =~/"--ao"|"--dal"/) +        act[:ao]=if select_arr.inspect \ +        =~/"--ao"|"--dal"/            { bool: true, set: :on }          elsif (act[:txt][:set]==:on \          || act[:txt_textile][:set]==:on \ @@ -1199,6 +1440,13 @@ module SiSU_Commandline          || act[:share_source][:set]==:on \          || act[:sisupod][: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 \ @@ -1206,27 +1454,18 @@ module SiSU_Commandline          || act[:xml_scaffold_structure_sisu][:set]==:on \          || act[:xml_scaffold_structure_collapse][:set]==:on )            { bool: true, set: :on } -          #if cmd !~/[mn]/ -          #  extra+=if cmd =~/[abegHhIiLNOoPpQTtwXxyz]/ \ -          #  and cmd !~/[mn]/ -          #    'm'                        #% add ao -        #elsif (act[:txt][:set]==:on \ -        #  { bool: true, set: :on } -          #  elsif ((cmd =~/[Dd]/ \ -          #  or (mod.inspect =~/--(?:(?:sq)?lite|pg(?:sql)?)/)) \ -          #  and mod.inspect !~/(?:remove|(?:(?:re)?create(?:all)?|dropall|drop)$)/) \ -          #  and cmd !~/[mn]/ -          #    'm'                        #% add ao          else            { bool: false, set: :na }          end -        act[:manifest]=if mod.inspect =~/"--inc-manifest"/ +        act[:manifest]=if select_arr.inspect \ +        =~/"--inc-manifest"/            { bool: true, set: :on } -        elsif mod.inspect =~/"--(?:exc|no)-manifest"/ \ +        elsif select_arr.inspect \ +        =~/"--(?:exc|no)-manifest"/ \          || act[:switch][:off].inspect =~/"manifest"/            { bool: false, set: :off } -        elsif (cmd =~/y/ \ -        || mod.inspect =~/"--manifest"/) +        elsif select_arr.inspect \ +        =~/"--manifest"/            { bool: true, set: :on }          elsif (act[:txt][:set]==:on \          || act[:txt_textile][:set]==:on \ @@ -1256,71 +1495,55 @@ module SiSU_Commandline          || act[:xml_scaffold_structure_sisu][:set]==:on \          || act[:xml_scaffold_structure_collapse][:set]==:on )            { bool: true, set: :on } -          ##      if cmd !~/y/ -          ##        extra+=if cmd =~/[abeHhIiNopQSstwXxz]/ \ -          ##        and cmd !~/y/ -          ##          'ym'                       #% add manifest -        #elsif (act[:txt][:set]==:on \ -        #  { bool: true, set: :on } -           #        elsif (cmd =~/[Dd]/ \ -           #        or mod.inspect =~/--(?:(?:sq)?lite|pg(?:sql)?)/) \ -           #        and files[0] !~/^remove$/ \ -           #        and cmd !~/y/ -           #          'ym'                       #% add manifest          else { bool: true, set: :na }          end          act[:console_messages] = '' -        act[:verbose]=if (cmd =~/v/ \ -        || mod.inspect =~/"--verbose"/) +        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 (cmd =~/V/ \ -        || mod.inspect =~/"--very-verbose"/) +        act[:verbose_plus]=if select_arr.inspect \ +        =~/"--very-verbose"/            act[:console_messages] << ' --very-verbose '            { bool: true, set: :on }          else            { bool: false, set: :na }          end -        act[:version_info]=if (cmd =~/[vVM]/ \ -        || mod.inspect =~/"--verbose"|"--maintenance"/) +        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 (cmd =~/q/ \ -        || mod.inspect =~/"--quiet"/) +        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 mod.inspect =~/"--color-on"|"--color"/ +        act[:color_state]=if select_arr.inspect =~/"--color-on"|"--color"/            act[:console_messages] << ' --color-on '            { bool: true, set: :on } -        elsif (cmd =~/k/ \ -        || mod.inspect =~/"--color-off"/) +        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 cmd =~/c/ \ -#       or mod.inspect =~/"--color-toggle"/ +#       act[:color_toggle]=if select_arr.inspect =~/"--color-toggle"/  #         true  #       else false  #       end -        act[:maintenance]=if (cmd =~/M/ \ -        || mod.inspect =~/"--maintenance|--keep-processing-files"/) +        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 (cmd =~/E/ \ -        || mod.inspect =~/"--profile"/) +        act[:profile]=if (select_arr.inspect =~/"--profile"/)            act[:console_messages] << ' --color-off '            { bool: true, set: :on }          else @@ -1329,11 +1552,17 @@ module SiSU_Commandline          @act=act        end      end -    def cmd -      @cmd +    def opt_ch +      @opt_ch      end -    def mod -      @mod +    def selections +      def arr +        @select_arr.sort +      end +      def str +        @select_str ||= arr.join(' ') +      end +      self      end      def act        @@act @@ -1342,6 +1571,9 @@ module SiSU_Commandline        files_mod=files        @files_mod=files_mod      end +    def files +      @files +    end      def f_pth        @f_pth      end diff --git a/lib/sisu/v5/manifest.rb b/lib/sisu/v5/manifest.rb index f2a9e748..0b4f79a4 100644 --- a/lib/sisu/v5/manifest.rb +++ b/lib/sisu/v5/manifest.rb @@ -116,7 +116,7 @@ module SiSU_Manifest          data=SiSU_HTML::Source::HTML_Environment.new(@particulars).tuned_file_instructions          SiSU_Manifest::Source::Output.new(@md).check_output(data)        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -1019,7 +1019,7 @@ WOK  WOK            output          rescue -          SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +          SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do              __LINE__.to_s + ':' + __FILE__            end          ensure diff --git a/lib/sisu/v5/manpage.rb b/lib/sisu/v5/manpage.rb index 0bcf1799..c8957dfe 100644 --- a/lib/sisu/v5/manpage.rb +++ b/lib/sisu/v5/manpage.rb @@ -94,7 +94,7 @@ module SiSU_Manpage          (@opt.act[:verbose][:set]==:on \          || @opt.act[:verbose_plus][:set]==:on \          || @opt.act[:maintenance][:set]==:on) \ -        && @opt.cmd !~/q/ \ +        && @opt.act[:quiet][:set]==:on \          ? SiSU_Screen::Ansi.new(              @opt.act[:color_state][:set],              'Manpage', @@ -116,7 +116,7 @@ module SiSU_Manpage          @ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here          SiSU_Manpage::Source::Scroll.new(@md,@ao_array).songsheet        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/po4a.rb b/lib/sisu/v5/po4a.rb index b5086eb7..66798dbd 100644 --- a/lib/sisu/v5/po4a.rb +++ b/lib/sisu/v5/po4a.rb @@ -167,7 +167,7 @@ module SiSU_Po4a            SiSU_Po4a::Source::Scroll.new(fn,@ao_array_lang_src,@ao_array_lang_translation,@@md_src,@@md_trn,wrap_width).songsheet          end        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/qrcode.rb b/lib/sisu/v5/qrcode.rb index 19d310c1..3a7d9406 100644 --- a/lib/sisu/v5/qrcode.rb +++ b/lib/sisu/v5/qrcode.rb @@ -111,7 +111,7 @@ module SiSU_QRcode          data=SiSU_HTML::Source::HTML_Environment.new(@particulars).tuned_file_instructions          OutputInfo.new(@md).check_output(data)        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -152,7 +152,7 @@ module SiSU_QRcode            mn += x          end          manifest.close if @md.opt.act[:maintenance][:set]==:on -        cmd=SiSU_Env::SystemCall.new(mn,@f.place_file.qrcode_md.dir,@md.opt.cmd) +        cmd=SiSU_Env::SystemCall.new(mn,@f.place_file.qrcode_md.dir,@md.opt.selections.str)          cmd.qrencode        end        def output_metadata_short @@ -160,7 +160,7 @@ module SiSU_QRcode          @manifest[:txt_title].each do |x|            mn += x          end -        cmd=SiSU_Env::SystemCall.new(mn,@f.place_file.qrcode_title.dir,@md.opt.cmd) +        cmd=SiSU_Env::SystemCall.new(mn,@f.place_file.qrcode_title.dir,@md.opt.selections.str)          cmd.qrencode        end        def summarize(id,file,pth='',rel='',url='',img='โ ') @@ -193,7 +193,7 @@ WOK          || @md.opt.act[:verbose_plus][:set]==:on \          || @md.opt.act[:maintenance][:set]==:on)            SiSU_Screen::Ansi.new( -            @md.opt.cmd, +            @md.opt.selections.str,              "#{dgst[1]} #{file}"            ).warn          end @@ -403,12 +403,13 @@ WOK            summarize(id,file,pth,rel,url)          end          if FileTest.file?(@f.place_file.txt.dir)==true -          id=if @md.opt.cmd =~/a/ then 'Plaintext (Unix (UTF-8) with footnotes)' -          elsif @md.opt.cmd =~/e/ then 'Plaintext (Unix (UTF-8) with endnotes)' -          elsif @md.opt.cmd =~/A/ then 'Plaintext (dos (UTF-8) with footnotes)' -          elsif @md.opt.cmd =~/E/ then 'Plaintext (dos (UTF-8) with endnotes)' -          else                         'Plaintext (UTF-8)' -          end +          id='Plaintext (UTF-8)' +          #id=if @md.opt.selections.str =~/a/ then 'Plaintext (Unix (UTF-8) with footnotes)' +          #elsif @md.opt.selections.str =~/e/ then 'Plaintext (Unix (UTF-8) with endnotes)' +          #elsif @md.opt.selections.str =~/A/ then 'Plaintext (dos (UTF-8) with footnotes)' +          #elsif @md.opt.selections.str =~/E/ then 'Plaintext (dos (UTF-8) with endnotes)' +          #else                         'Plaintext (UTF-8)' +          #end            pth=@f.output_path.txt.dir            rel=@f.output_path.txt.rel_sm            url=@f.output_path.txt.url @@ -746,7 +747,7 @@ WOK            output_metadata            output_metadata_short          rescue -          SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +          SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do              __LINE__.to_s + ':' + __FILE__            end          ensure diff --git a/lib/sisu/v5/rexml.rb b/lib/sisu/v5/rexml.rb index c4512872..98263899 100644 --- a/lib/sisu/v5/rexml.rb +++ b/lib/sisu/v5/rexml.rb @@ -130,7 +130,7 @@ module SiSU_Rexml            exit          end        rescue -        SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/se_createsite.rb b/lib/sisu/v5/se_createsite.rb index 33e334ce..a7ab7cf5 100644 --- a/lib/sisu/v5/se_createsite.rb +++ b/lib/sisu/v5/se_createsite.rb @@ -190,16 +190,20 @@ module SiSU_Create_Site        if defined? @rc['permission_set']['css_modify'] \        and @rc['permission_set']['css_modify']          SiSU_Screen::Ansi.new( -          @opt.cmd, +          @opt.selections.str,            "*WARN* modify is css set to: #{@rc['permission_set']['css_modify']}" -        ).warn if @opt.cmd=~/[MV]/ +        ).warn if @opt.act[:verbose_plus][:set]==:on \ +        or @opt.act[:maintenance][:set]==:on          css_path.each do |x|            if FileTest.directory?(x)              FileUtils::cd(x)              source=Dir.glob("*.{css}")              source.each do |i|                if FileTest.file?(i) -                FileUtils::cp(i,"#{@env.path.output}/#{@env.path.style}") +                FileUtils::cp( +                  i, +                  @env.path.output + '/' + @env.path.style +                )                else STDERR.puts %{\t*WARN* did not find css - "#{i}" [#{__FILE__}:#{__LINE__}]}                end              end @@ -208,62 +212,63 @@ module SiSU_Create_Site          end        else          SiSU_Screen::Ansi.new( -          @opt.cmd, +          @opt.selections.str,            "*WARN* modify css is not set or is set to: false" -        ).warn if @opt.cmd=~/[MV]/ +        ).warn if @opt.act[:verbose_plus][:set]==:on \ +        or @opt.act[:maintenance][:set]==:on        end        fn_css=SiSU_Env::CSS_Default.new        css=SiSU_Style::CSS.new        path_style="#{@env.path.output}/#{@env.path.style}"        FileUtils::mkdir_p(path_style) \          unless FileTest.directory?(path_style) -      if @opt.cmd =~/C/ \ +      if @opt.act[:site_init][:set]==:on \        or not FileTest.file?("#{path_style}/#{fn_css.homepage}")          style=File.new("#{path_style}/#{fn_css.homepage}",'w')          style << css.homepage          style.close        end -      if @opt.cmd =~/C/ \ +      if @opt.act[:site_init][:set]==:on \        or not FileTest.file?("#{path_style}/#{fn_css.html_tables}")          style=File.new("#{path_style}/#{fn_css.html_tables}",'w')          style << css.html_tables          style.close        end -      if @opt.cmd =~/C/ \ +      if @opt.act[:site_init][:set]==:on \        or not FileTest.file?("#{path_style}/#{fn_css.html}")          style=File.new("#{path_style}/#{fn_css.html}",'w')          style << css.html          style.close        end -      if @opt.cmd =~/C/ \ +      if @opt.act[:site_init][:set]==:on \        or not FileTest.file?("#{path_style}/#{fn_css.harvest}")          style=File.new("#{path_style}/#{fn_css.harvest}",'w')          style << css.harvest          style.close        end -      if @opt.cmd =~/C/ \ -      or (@opt.cmd =~/[x]/ \ +      if @opt.act[:site_init][:set]==:on \ +      or (@opt.act[:xml_sax][:set]==:on \        and not FileTest.file?("#{path_style}/#{fn_css.xml_sax}"))          style=File.new("#{path_style}/#{fn_css.xml_sax}",'w')          style << css.xml_sax          style.close        end -      if @opt.cmd =~/C/ \ -      or (@opt.cmd =~/[X]/ \ +      if @opt.act[:site_init][:set]==:on \ +      or (@opt.act[:xml_dom][:set]==:on \        and not FileTest.file?("#{path_style}/#{fn_css.xml_dom}"))          style=File.new("#{path_style}/#{fn_css.xml_dom}",'w')          style << css.xml_dom          style.close        end -      if @opt.cmd =~/C/ \ +      if @opt.act[:site_init][:set]==:on \        or (@opt.act[:xml_docbook_book][:set] == :on \        and not FileTest.file?("#{path_style}/#{fn_css.xml_docbook}"))          style=File.new("#{path_style}/#{fn_css.xml_docbook}",'w')          style << css.xml_docbook          style.close        end -      if @opt.cmd =~/C/ \ -      or (@opt.cmd =~/[b]/ \ +      if @opt.act[:site_init][:set]==:on \ +      or (@opt.act[:xhtml][:set] == :on \        and not FileTest.file?("#{path_style}/#{fn_css.xhtml}"))          style=File.new("#{path_style}/#{fn_css.xhtml}",'w')          style << css.xhtml diff --git a/lib/sisu/v5/se_db.rb b/lib/sisu/v5/se_db.rb index 8ed78afa..3c6fdcba 100644 --- a/lib/sisu/v5/se_db.rb +++ b/lib/sisu/v5/se_db.rb @@ -94,7 +94,7 @@ module SiSU_Info_Db      def psql        def user(opt=nil)          if opt \ -        and opt.mod.inspect =~/--db-user[=-]["']?(\S+)["']+/ +        and opt.selections.str.inspect =~/--db-user[=-]["']?(\S+)["']+/            $1          elsif opt \          and opt.mod =~/--webserv[=-]webrick/ @@ -176,7 +176,7 @@ module SiSU_Db_Op        begin          @md=md        rescue -        SiSU_Screen::Ansi.new(md.opt.cmd,$!,$@).rescue do +        SiSU_Screen::Ansi.new(md.opt.selections.str,$!,$@).rescue do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/se_file_op.rb b/lib/sisu/v5/se_file_op.rb index d8a919dd..83e9c1b9 100644 --- a/lib/sisu/v5/se_file_op.rb +++ b/lib/sisu/v5/se_file_op.rb @@ -188,7 +188,7 @@ module SiSU_File_Op          @md,@fno=md,fno          @env=SiSU_Env::InfoEnv.new(@md.fns)        rescue -        SiSU_Screen::Ansi.new(md.opt.cmd,$!,$@).rescue do +        SiSU_Screen::Ansi.new(md.opt.selections.str,$!,$@).rescue do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/se_filemap.rb b/lib/sisu/v5/se_filemap.rb index 0c4c84c0..075cdb83 100644 --- a/lib/sisu/v5/se_filemap.rb +++ b/lib/sisu/v5/se_filemap.rb @@ -68,7 +68,7 @@ module SiSU_File_Map      attr_accessor :local_sisu_source      def initialize(opt='') #watch / REVIEW        super() -      @opt=opt #,opt.fns,opt.cmd +      @opt=opt #,opt.fns,opt.selections.str        @env=(@opt.fns && !(@opt.fns.empty?) \        ? (SiSU_Env::InfoEnv.new(@opt.fns))        : (SiSU_Env::InfoEnv.new('dummy.sst'))) @@ -216,7 +216,7 @@ module SiSU_File_Map          ft=ft.uniq          filetypes=ft.join(',')          @filetypes=if filetypes !~/..+/ then ''   # -r called alone, copy all -        elsif @opt.cmd =~/u/            then ''   # -u added, copy all, (used to create remote directory tree see output path), not the usual function of -u +        elsif @opt.selections.str =~/u/            then ''   # -u added, copy all, (used to create remote directory tree see output path), not the usual function of -u          elsif filetypes =~/\S+?,\S+/    then '*{' + filetypes + '}' # more than one relevant file type          else                                 '*' + filetypes # one relevant file type          end diff --git a/lib/sisu/v5/se_hub_particulars.rb b/lib/sisu/v5/se_hub_particulars.rb index 4372ac72..17942a71 100644 --- a/lib/sisu/v5/se_hub_particulars.rb +++ b/lib/sisu/v5/se_hub_particulars.rb @@ -127,7 +127,7 @@ module SiSU_Particulars          @md=SiSU_Param::Parameters.new(opt).get          self        rescue -        SiSU_Errors::Rescued.new($!,$@,opt.cmd,opt.fnl).location do +        SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do            __LINE__.to_s + ':' + __FILE__          end        end @@ -138,7 +138,7 @@ module SiSU_Particulars          @env=SiSU_Env::InfoEnv.new(opt.fns)          self        rescue -        SiSU_Errors::Rescued.new($!,$@,opt.cmd,opt.fnl).location do +        SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do            __LINE__.to_s + ':' + __FILE__          end        end @@ -149,7 +149,7 @@ module SiSU_Particulars          @file=SiSU_Env::FileOp.new(@md)          self        rescue -        SiSU_Errors::Rescued.new($!,$@,opt.cmd,opt.fnl).location do +        SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do            __LINE__.to_s + ':' + __FILE__          end        end @@ -160,7 +160,7 @@ module SiSU_Particulars          @ao_array=SiSU_AO::Source.new(opt).get          self        rescue -        SiSU_Errors::Rescued.new($!,$@,opt.cmd,opt.fnl).location do +        SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do            __LINE__.to_s + ':' + __FILE__          end        end @@ -170,7 +170,7 @@ module SiSU_Particulars          @sst_idx=SiSU_AO::Source.new(opt).get_idx_sst          self        rescue -        SiSU_Errors::Rescued.new($!,$@,opt.cmd,opt.fnl).location do +        SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do            __LINE__.to_s + ':' + __FILE__          end        end @@ -180,7 +180,7 @@ module SiSU_Particulars          @raw_idx=SiSU_AO::Source.new(opt).get_idx_raw          self        rescue -        SiSU_Errors::Rescued.new($!,$@,opt.cmd,opt.fnl).location do +        SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do            __LINE__.to_s + ':' + __FILE__          end        end @@ -190,7 +190,7 @@ module SiSU_Particulars          @html_idx=SiSU_AO::Source.new(opt).get_idx_html          self        rescue -        SiSU_Errors::Rescued.new($!,$@,opt.cmd,opt.fnl).location do +        SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do            __LINE__.to_s + ':' + __FILE__          end        end @@ -200,7 +200,7 @@ module SiSU_Particulars          @xhtml_idx=SiSU_AO::Source.new(opt).get_idx_xhtml          self        rescue -        SiSU_Errors::Rescued.new($!,$@,opt.cmd,opt.fnl).location do +        SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do            __LINE__.to_s + ':' + __FILE__          end        end @@ -213,11 +213,11 @@ module SiSU_Particulars          self        rescue          if @md -          SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.opt.fnl).location do +          SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.opt.fnl).location do              __LINE__.to_s + ':' + __FILE__            end          else -          SiSU_Errors::Rescued.new($!,$@,opt.cmd,opt.fnl).location do +          SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do              __LINE__.to_s + ':' + __FILE__            end          end @@ -229,7 +229,7 @@ module SiSU_Particulars          @ocn_htmlseg_map=SiSU_AO::Source.new(@md).get_map_ocn_htmlseg          self        rescue -        SiSU_Errors::Rescued.new($!,$@,opt.cmd,opt.fnl).location do +        SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do            __LINE__.to_s + ':' + __FILE__          end        end diff --git a/lib/sisu/v5/se_info_env.rb b/lib/sisu/v5/se_info_env.rb index df3d0216..5d91e433 100644 --- a/lib/sisu/v5/se_info_env.rb +++ b/lib/sisu/v5/se_info_env.rb @@ -1634,7 +1634,7 @@ WOK          http=http.strip        end        def webserv_base_cgi(opt=nil)    #web url for local webserv (localhost, or hostname) -        http=if opt.mod.inspect =~/--webserv-(?:cgi|db|search)[=-]["']?(\S+)["']+/ +        http=if opt.selections.str =~/--webserv-(?:cgi|db|search)[=-]["']?(\S+)["']+/            m=$1            (m=~/http\/\/:/) ? m : %{http://#{m}}          elsif defined? @rc['webserv_cgi']['host'] \ @@ -1708,7 +1708,7 @@ WOK          end        end        def webserv_files_from_db(opt=nil) #sort this out, messy -        if opt.mod.inspect =~/--webserv-output[=-]["']?(\S+)["']+/ +        if opt.selections.str =~/--webserv-output[=-]["']?(\S+)["']+/            m=$1            (m=~/(?:http|file\/)\/\/:/) ? m : %{http://#{m}}          else @@ -1729,10 +1729,10 @@ WOK          #%q{http://#{ENV['HTTP_HOST']}/cgi-bin}        end        def cgi_sample_search_form_name(opt=nil) -        if opt.mod.inspect \ +        if opt.selections.str \          =~/--(?:cgi-)?search-form-name[=-]["']?(\S+?\.cgi)/            $1 -        elsif not opt.mod.inspect =~/--db[=-]["']?sqlite/ \ +        elsif not opt.selections.str =~/--db[=-]["']?sqlite/ \          and defined? @rc['search'] \          and defined? @rc['search']['sisu'] \          and defined? @rc['search']['sisu']['action'] \ @@ -1740,7 +1740,7 @@ WOK            /(?:https?:\/\/\S+?)\/([^\/]+?\.cgi)$/.              match(@rc['search']['sisu']['action'])[1]          else -          (opt.mod.inspect =~/--db[=-]["']?sqlite/) \ +          (opt.selections.str =~/--db[=-]["']?sqlite/) \            ? "#{Db[:name_prefix_db]}sqlite.cgi" \            :  "#{Db[:name_prefix_db]}pg.cgi"          end @@ -1783,12 +1783,12 @@ WOK            path.image_source_include          else            if @@local_image==true -            cmd=@cmd ? @cmd : '' +            cmd=@selections.str ? @selections.str : ''              SiSU_Screen::Ansi.new(                cmd,                "WARNING - no local image directory or images:",                defaults[:image_local] -            ).warn unless cmd =~/q/ +            ).warn unless @md.opt.act[:quiet][:set]==:on              @@local_image=false            end            url.images @@ -1813,7 +1813,7 @@ WOK                @cmd,                'WARNING - image directory for external images or no such images:',                :image_external -            ).warn unless @cmd =~/q/ +            ).warn unless @md.opt.act[:quiet][:set]==:on              @@local_image=false            end            url.images_external @@ -1827,15 +1827,15 @@ WOK      def port        def webrick_port          if @md \ -        and @md.opt.cmd.inspect=~/-F/ \ -        and @md.opt.mod.inspect=~/port=(\d+)/ +        and @md.opt.act[:sample_search_form][:set]==:on \ +        and @md.opt.selections.str=~/port=(\d+)/             $1          else            if defined? @rc['webserv_cgi']['port']              if @rc['webserv_cgi']['port'].nil? \              and (defined? @md.opt.mod \              and not @md.opt.mod.nil? \ -            and @md.opt.mod.inspect=~/webrick/) +            and @md.opt.selections.str=~/webrick/)                defaults[:webserv_port_cgi]              elsif not @rc['webserv_cgi']['port'].nil?                @rc['webserv_cgi']['port'] @@ -1847,15 +1847,15 @@ WOK        end        def webserv_port_cgi(opt=nil)          port=if opt \ -        and opt.cmd.inspect=~/-F/ \ -        and opt.mod.inspect=~/port=(\d+)/ +        and @md.opt.act[:sample_search_form][:set]==:on \ +        and opt.selections.str=~/port=(\d+)/             $1          else            port=if defined? @rc['webserv_cgi']['port']              if @rc['webserv_cgi']['port'].nil? \              and (defined? opt.mod \              and not opt.mod.nil? \ -            and opt.mod.inspect=~/webrick/) +            and opt.selections.str=~/webrick/)                defaults[:webserv_port_cgi]              elsif not @rc['webserv_cgi']['port'].nil?                @rc['webserv_cgi']['port'] @@ -1864,7 +1864,7 @@ WOK            else              if (defined? opt.mod \              and not opt.mod.nil? \ -            and opt.mod.inspect=~/webrick/) +            and opt.selections.str=~/webrick/)                defaults[:webserv_port_cgi]              else nil              end @@ -2145,7 +2145,7 @@ WOK          SiSU_Screen::Ansi.new(            '',            '*WARN* file not found: ' + fns_pod -        ).warn unless @cmd=~/q/ +        ).warn unless @md.opt.act[:quiet][:set]==:on        end        sisupod_processing_path      end @@ -2164,7 +2164,7 @@ WOK        : (SiSU_Screen::Ansi.new(            '',            "*WARN* file not found: #{fns_pod}" -        ).warn unless @cmd=~/q/) +        ).warn unless @md.opt.act[:quiet][:set]==:on)        sisupod_processing_path      end    end diff --git a/lib/sisu/v5/se_processing.rb b/lib/sisu/v5/se_processing.rb index 0a035ce8..35fa72c2 100644 --- a/lib/sisu/v5/se_processing.rb +++ b/lib/sisu/v5/se_processing.rb @@ -465,62 +465,172 @@ module SiSU_Processing_Settings  end  module SiSU_Info_Processing_Flag    class InfoProcessingFlag -    attr_accessor :color,:cf_0,:cf_1,:cf_2,:cf_3,:cf_4,:cf_5 +    attr_accessor :color,:act_0,:act_1,:act_2,:act_3,:act_4,:act_5,:act_6,:act_7,:act_8,:act_9      def initialize        @rc=SiSU_Get_Init::GetInit.new.sisu_yaml.rc      end -    def color                          #processing flag shortcuts +    def color                          #configurable processing flag shortcuts        (defined? @rc['flag']['color']) \        ? @rc['flag']['color']        : false      end -    def cf_0                           #processing flag shortcuts -      if defined? @rc['flag']['default'] \ -      and @rc['flag']['default'].is_a?(String) -        @rc['flag']['default'] -      else #'-NQhewpotbxXdyYv' -        '--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --xhtml --xml-sax --xml-dom --sqlite --manifest' +    def act_0                           #configurable processing flag shortcuts +      def str +        if defined? @rc['flag']['act0'] \ +        and @rc['flag']['act0'].is_a?(String) +          @rc['flag']['act0'] +        elsif defined? @rc['flag']['default'] \ +        and @rc['flag']['default'].is_a?(String) +          @rc['flag']['default'] +        else +          '--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --xhtml --xml-sax --xml-dom --sqlite --manifest --verbose' +        end +      end +      def arr +        str.scan(/\S+/) +      end +      self +    end +    def act_1                           #configurable processing flag shortcuts +      def str +        if defined? @rc['flag']['act1'] \ +        and @rc['flag']['act1'].is_a?(String) +          @rc['flag']['act1'] +        elsif defined? @rc['flag']['i'] \ +        and @rc['flag']['i'].is_a?(String) +          @rc['flag']['i'] +        else +          '--digest --text --html --manifest' +        end +      end +      def arr +        str.scan(/\S+/) +      end +      self +    end +    def act_2                           #configurable processing flag shortcuts +      def str +        if defined? @rc['flag']['act2'] \ +        and @rc['flag']['act2'].is_a?(String) +          @rc['flag']['act2'] +        elsif defined? @rc['flag']['ii'] \ +        and @rc['flag']['ii'].is_a?(String) +          @rc['flag']['ii'] +        else +          '--digest --text --html --epub --pdf --manifest' +        end +      end +      def arr +        str.scan(/\S+/) +      end +      self +    end +    def act_3                           #configurable processing flag shortcuts +      def str +        if defined? @rc['flag']['act3'] \ +        and @rc['flag']['act3'].is_a?(String) +          @rc['flag']['act3'] +        elsif defined? @rc['flag']['iii'] \ +        and @rc['flag']['iii'].is_a?(String) +          @rc['flag']['iii'] +        else +          '--digest --qrcode --text --html --epub --concordance --pdf --manifest' +        end +      end +      def arr +        str.scan(/\S+/) +      end +      self +    end +    def act_4                           #configurable processing flag shortcuts +      def str +        if defined? @rc['flag']['act4'] \ +        and @rc['flag']['act4'].is_a?(String) +          @rc['flag']['act4'] +        elsif defined? @rc['flag']['iv'] \ +        and @rc['flag']['iv'].is_a?(String) +          @rc['flag']['iv'] +        else +          '--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --manifest' +        end +      end +      def arr +        str.scan(/\S+/)        end +      self      end -    def cf_1                           #processing flag shortcuts -      if defined? @rc['flag']['i'] \ -      and @rc['flag']['i'].is_a?(String) -        @rc['flag']['i'] -      else #'-Qhewpoty' -        '--digest --qrcode --text --html --epub --concordance --pdf --manifest' +    def act_5                           #configurable processing flag shortcuts +      def str +        if defined? @rc['flag']['act5'] \ +        and @rc['flag']['act5'].is_a?(String) +          @rc['flag']['act5'] +        elsif defined? @rc['flag']['v'] \ +        and @rc['flag']['v'].is_a?(String) +          @rc['flag']['v'] +        else +          '--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --sqlite --manifest' +        end        end +      def arr +        str.scan(/\S+/) +      end +      self      end -    def cf_2                           #processing flag shortcuts -      if defined? @rc['flag']['ii'] \ -      and @rc['flag']['ii'].is_a?(String) -        @rc['flag']['ii'] -      else #'-NQhewpotbxXdy' -        '--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --xhtml --xml-sax --xml-dom --manifest' +    def act_6                           #configurable processing flag shortcuts +      def str +        if defined? @rc['flag']['act6'] \ +        and @rc['flag']['act6'].is_a?(String) +          @rc['flag']['act6'] +        else +          '--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --xhtml --xml-sax --xml-dom --sqlite --manifest' +        end +      end +      def arr +        str.scan(/\S+/)        end +      self      end -    def cf_3                           #processing flag shortcuts -      if defined? @rc['flag']['iii'] \ -      and @rc['flag']['iii'].is_a?(String) -        @rc['flag']['iii'] -      else #'-NQhewpotbxXdyY' -        '--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --xhtml --xml-sax --xml-dom --sqlite --manifest' +    def act_7                           #configurable processing flag shortcuts +      def str +        if defined? @rc['flag']['act7'] \ +        and @rc['flag']['act7'].is_a?(String) +          @rc['flag']['act7'] +        else +          '--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --xhtml --xml-sax --xml-dom --sqlite --source --sisupod --manifest' +        end +      end +      def arr +        str.scan(/\S+/)        end +      self      end -    def cf_4                           #processing flag shortcuts -      if defined? @rc['flag']['iv'] \ -      and @rc['flag']['iv'].is_a?(String) -        @rc['flag']['iv'] -      else #'-NQhewpotbxXdDyY --update' -        '--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --xhtml --xml-sax --xml-dom --postresql --update --manifest' +    def act_8                           #configurable processing flag shortcuts +      def str +        if defined? @rc['flag']['act8'] \ +        and @rc['flag']['act8'].is_a?(String) +          @rc['flag']['act8'] +        else +          '--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --xhtml --xml-sax --xml-dom --pg --update --manifest' +        end        end +      def arr +        str.scan(/\S+/) +      end +      self      end -    def cf_5                           #processing flag shortcuts -      if defined? @rc['flag']['v'] \ -      and @rc['flag']['v'].is_a?(String) -        @rc['flag']['v'] -      else #'-NQhewpotbxXdyYsS' -        '--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --xhtml --xml-sax --xml-dom --sqlite --manifest --sisupod --source' +    def act_9                           #configurable processing flag shortcuts +      def str +        if defined? @rc['flag']['act9'] \ +        and @rc['flag']['act9'].is_a?(String) +          @rc['flag']['act9'] +        else +          '--digest --qrcode --text --html --epub --concordance --pdf --odf --docbook --xhtml --xml-sax --xml-dom --pg --update --source --sisupod --manifest' +        end +      end +      def arr +        str.scan(/\S+/)        end +      self      end    end  end diff --git a/lib/sisu/v5/se_programs.rb b/lib/sisu/v5/se_programs.rb index 35d68cb6..4eef1ce9 100644 --- a/lib/sisu/v5/se_programs.rb +++ b/lib/sisu/v5/se_programs.rb @@ -87,7 +87,7 @@ module SiSU_Sys_Call        end        @sys.locale      end -    def file_encoding(filename,cmd='') #file encoding +    def file_encoding(filename,act='') #file encoding        program='file'        fnsp=SiSU_Env::InfoEnv.new(filename).source_file_with_path        if program_found?(program) @@ -98,9 +98,13 @@ module SiSU_Sys_Call            encoding          else 'UTF-8 assumed, encoding undetermined'          end -        puts encoding if cmd =~/[VM]/ +        if act[:verbose_plus][:set] ==:on \ +        or  act[:maintenance][:set] ==:on +          puts encoding +        end          encoding -      else encoding='UTF-8 assumed, file encoding check program unavailable' +      else +        'UTF-8 assumed, file encoding check program unavailable'        end      end      def wc                             #word count diff --git a/lib/sisu/v5/texinfo.rb b/lib/sisu/v5/texinfo.rb index e792a989..16aef8bf 100644 --- a/lib/sisu/v5/texinfo.rb +++ b/lib/sisu/v5/texinfo.rb @@ -132,7 +132,7 @@ module SiSU_TexInfo          @marshalfile=SiSU_Env::InfoFile.new(@opt.fns).marshal.ao_content          if FileTest.file?(@marshalfile)==true            File.open(@marshalfile) { |f| @@tuned_file=Marshal.load(f)} -          #tell.meta_verse_skipped if @opt.cmd =~/[vVM]/ +          #tell.meta_verse_skipped if @opt.selections.str =~/[vVM]/          else            tex_array=IO.readlines(@opt.fns,'')            SiSU_Metaverse.songsheet(tex_array) @@ -418,7 +418,7 @@ module SiSU_TexInfo          pwd=Dir.pwd          case sfx          when /(?:-|ssm\.)?sst$/ -          @env=SiSU_Env::InfoEnv.new(@md.fns,@md.opt.cmd) +          @env=SiSU_Env::InfoEnv.new(@md.fns,@md.opt.selections.str)            Dir.chdir(@env.processing_path.texi)            texinfo=SiSU_Env::SystemCall.new("#{fnb}.texinfo")            texinfo.makeinfo diff --git a/lib/sisu/v5/texpdf.rb b/lib/sisu/v5/texpdf.rb index b5d36602..fe7ec47e 100644 --- a/lib/sisu/v5/texpdf.rb +++ b/lib/sisu/v5/texpdf.rb @@ -107,7 +107,7 @@ module SiSU_TeX            Dir.mkdir(@env.processing_path.tex) unless FileTest.directory?(@env.processing_path.tex)          end        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -148,7 +148,7 @@ module SiSU_TeX            end          end          @md=@particulars.md -        $flag=@md.opt.cmd                                                          #introduced to pass 0 for no object citation numbers... to texpdf_format +        $flag=@md.opt.selections.str                                                          #introduced to pass 0 for no object citation numbers... to texpdf_format          directories                                                                                 #% needed needs to be reprogrammed !!!          ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here @@ -158,7 +158,7 @@ module SiSU_TeX          SiSU_TeX::Source::LaTeXtoPdf.new(@md,@particulars.env).latexrun_selective          Dir.chdir(pwd)        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -180,7 +180,7 @@ module SiSU_TeX          @@date=SiSU_Env::InfoDate.new          @@flag={}          $flag=1 #remove at some stage -        SiSU_Env::Clear.new(@opt.cmd,@opt.fns).param_instantiate +        SiSU_Env::Clear.new(@opt.selections.str,@opt.fns).param_instantiate        end      end      private @@ -194,7 +194,7 @@ module SiSU_TeX          @texfilename=texfilename          @@n_lpdf=@@n_lpdf+1          tex_fn_base=@texfilename.gsub(/\.tex$/,'') -        tell=SiSU_Screen::Ansi.new(@md.opt.cmd) +        tell=SiSU_Screen::Ansi.new(@md.opt.selections.str)          if @md.opt.act[:pdf_p][:set]==:on            if (@md.opt.act[:verbose][:set]==:on \            || @md.opt.act[:verbose_plus][:set]==:on \ @@ -204,13 +204,21 @@ module SiSU_TeX                "#{papersize} portrait ->"              ).dark_grey_title_hi            end -          cmd=SiSU_Env::SystemCall.new("#{tex_fn_base}.tex",'',@md.opt.cmd) -          tell.grey_open if @md.opt.cmd =~/[MVv]/ +          cmd=SiSU_Env::SystemCall.new("#{tex_fn_base}.tex",'',@md.opt.selections.str) +          if @md.opt.act[:verbose][:set]==:on \ +          || @md.opt.act[:verbose_plus][:set]==:on \ +          || @md.opt.act[:maintenance][:set]==:on +            tell.grey_open +          end            if "#{tex_fn_base}" =~/\w+/ \            and "#{papersize}" =~/\w+/              2.times { |i| cmd.latex2pdf(@md,papersize) } #comment out to skip processing of latex portrait            end -          tell.p_off if @md.opt.cmd =~/[MVv]/ +          if @md.opt.act[:verbose][:set]==:on \ +          || @md.opt.act[:verbose_plus][:set]==:on \ +          || @md.opt.act[:maintenance][:set]==:on +            tell.p_off +          end          end          if @md.opt.act[:pdf_l][:set]==:on            if (@md.opt.act[:verbose][:set]==:on \ @@ -221,7 +229,7 @@ module SiSU_TeX                "#{papersize} landscape ->"              ).dark_grey_title_hi            end -          cmd=SiSU_Env::SystemCall.new("#{tex_fn_base}.landscape.tex",'',@md.opt.cmd) +          cmd=SiSU_Env::SystemCall.new("#{tex_fn_base}.landscape.tex",'',@md.opt.selections.str)            if (@md.opt.act[:verbose][:set]==:on \            || @md.opt.act[:verbose_plus][:set]==:on \            || @md.opt.act[:maintenance][:set]==:on) @@ -357,7 +365,7 @@ module SiSU_TeX            lst=Dir["*.{aux,log,out}"]            lst.each {|file| File.unlink(file)} if lst          rescue -          SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +          SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do              __LINE__.to_s + ':' + __FILE__            end          end @@ -438,7 +446,7 @@ module SiSU_TeX            data=markup(data)            output(data)          rescue -          SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +          SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do              __LINE__.to_s + ':' + __FILE__            end          ensure @@ -640,6 +648,8 @@ module SiSU_TeX                tst.heading_level_2              when 6                tst.heading_level_3 +            when 7 +              tst.heading_level_4              else dob              end            when :heading_insert diff --git a/lib/sisu/v5/texpdf_format.rb b/lib/sisu/v5/texpdf_format.rb index e9ff0fff..9957ab48 100644 --- a/lib/sisu/v5/texpdf_format.rb +++ b/lib/sisu/v5/texpdf_format.rb @@ -323,6 +323,9 @@ module SiSU_TeX_Pdf      def heading_level_3        heading_sublevels(@dob)      end +    def heading_level_4 +      heading_sublevels(@dob) +    end      def hang        case @dob.indent        when /0/ diff --git a/lib/sisu/v5/txt_asciidoc.rb b/lib/sisu/v5/txt_asciidoc.rb index 43e49f7b..7171ee64 100644 --- a/lib/sisu/v5/txt_asciidoc.rb +++ b/lib/sisu/v5/txt_asciidoc.rb @@ -121,7 +121,7 @@ module SiSU_Txt_AsciiDoc          #wrap_width=(defined? md.make.plaintext_wrap) ? md.make.plaintext_wrap : 78          SiSU_Txt_AsciiDoc::Source::Scroll.new(md,ao_array,wrap_width).songsheet        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/txt_markdown.rb b/lib/sisu/v5/txt_markdown.rb index 1e4326a3..9a184635 100644 --- a/lib/sisu/v5/txt_markdown.rb +++ b/lib/sisu/v5/txt_markdown.rb @@ -120,7 +120,7 @@ module SiSU_Txt_Markdown          #wrap_width=(defined? md.make.plaintext_wrap) ? md.make.plaintext_wrap : 78          SiSU_Txt_Markdown::Source::Scroll.new(md,ao_array,wrap_width).songsheet        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/txt_plain.rb b/lib/sisu/v5/txt_plain.rb index 2f3cc134..608d3d09 100644 --- a/lib/sisu/v5/txt_plain.rb +++ b/lib/sisu/v5/txt_plain.rb @@ -122,7 +122,7 @@ module SiSU_Txt_Plain          #wrap_width=(defined? md.make.plaintext_wrap) ? md.make.plaintext_wrap : 78          SiSU_Txt_Plain::Source::Scroll.new(md,ao_array,wrap_width).songsheet        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -139,7 +139,7 @@ module SiSU_Txt_Plain          @env=SiSU_Env::InfoEnv.new(@md.fns)          @brace_url=SiSU_Viz::Defaults.new.url_decoration          @tab="\t" -        @@endnotes_=case md.opt.mod.inspect +        @@endnotes_=case md.opt.selections.str          when /--footnote/ then false          when /--endnote/  then true          else              true @@ -254,6 +254,9 @@ WOK            def l6              '.'            end +          def l7 +            '.' +          end            self          end          def bold @@ -402,6 +405,9 @@ WOK              end            when 5 then wrapped.upcase << break_line << decorate.heading_underscore.l5*times + p_num << break_line*2            when 6 then wrapped.upcase << break_line << decorate.heading_underscore.l6*times + p_num << break_line*2 +          when 7 +            wrapped.upcase << break_line << decorate.heading_underscore.l7*times + p_num << break_line*2 +          #when 7 then wrapped.upcase << break_line << decorate.heading_underscore.l7*times + p_num << break_line*2            end          else            @plaintext[:body] << wrapped + p_num << break_line # main text, contents, body KEEP @@ -419,7 +425,9 @@ WOK          if make.build.plaintext_ocn?            if defined? dob.ocn \            and dob.ocn.is_a?(Fixnum) -            (defined? dob.ocn) ? "\n#{Dx[:ocn_o]}#{dob.ocn}#{Dx[:ocn_c]}" : '' +            (defined? dob.ocn) \ +            ? "\n#{Dx[:ocn_o]}#{dob.ocn}#{Dx[:ocn_c]}" \ +            : ''            else ''            end          else '' @@ -428,8 +436,8 @@ WOK        def markup(data)                                                       # Used for major markup instructions          SiSU_Env::InfoEnv.new(@md.fns)          @data_mod,@endnotes,@level,@cont,@copen,@plaintext_contents_close=Array.new(6){[]} -        (0..6).each { |x| @cont[x]=@level[x]=false } -        (4..6).each { |x| @plaintext_contents_close[x]='' } +        (0..7).each { |x| @cont[x]=@level[x]=false } +        (4..7).each { |x| @plaintext_contents_close[x]='' }          plaintext_tail #($1,$2)          plaintext_metadata          table_message='[table omitted, see other document formats]' diff --git a/lib/sisu/v5/txt_rst.rb b/lib/sisu/v5/txt_rst.rb index f00c9e9c..0147a6de 100644 --- a/lib/sisu/v5/txt_rst.rb +++ b/lib/sisu/v5/txt_rst.rb @@ -121,7 +121,7 @@ module SiSU_Txt_rST          #wrap_width=(defined? md.make.plaintext_wrap) ? md.make.plaintext_wrap : 78          SiSU_Txt_rST::Source::Scroll.new(md,ao_array,wrap_width).songsheet        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/txt_textile.rb b/lib/sisu/v5/txt_textile.rb index 65c102fc..43124493 100644 --- a/lib/sisu/v5/txt_textile.rb +++ b/lib/sisu/v5/txt_textile.rb @@ -121,7 +121,7 @@ module SiSU_Txt_Textile          #wrap_width=(defined? md.make.plaintext_wrap) ? md.make.plaintext_wrap : 78          SiSU_Txt_Textile::Source::Scroll.new(md,ao_array,wrap_width).songsheet        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/update.rb b/lib/sisu/v5/update.rb index 2301990a..3c355edb 100644 --- a/lib/sisu/v5/update.rb +++ b/lib/sisu/v5/update.rb @@ -81,7 +81,7 @@ module SiSU_UpdateControlFlag          ).green_hi_blue unless @md.opt.act[:quiet][:set]==:on          SetCF.new(@md).set_flags        rescue -        SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/urls.rb b/lib/sisu/v5/urls.rb index 815fe65a..4ecad1f9 100644 --- a/lib/sisu/v5/urls.rb +++ b/lib/sisu/v5/urls.rb @@ -74,7 +74,7 @@ module SiSU_Urls        begin          SiSU_Urls::OutputUrls.new(@opt).songsheet if @opt.fnb        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -82,11 +82,20 @@ module SiSU_Urls      end    end    class OutputUrls -    attr_reader :fns,:fnb,:cmd,:dir,:m_regular,:u +    attr_reader :fns,:fnb,:act,:dir,:m_regular,:u      def initialize(opt)        @opt=opt        @particulars=SiSU_Particulars::CombinedSingleton.instance.get_env_md(opt) -      @cmd=@opt.cmd +      if @particulars.is_a?(NilClass) +        if @opt.act[:verbose_plus][:set]==:on \ +        or @opt.act[:maintenance][:set]==:on +          SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). +            mark("@particulars is NilClass, acceptable e.g. for --harvest") +        end +        exit +      end +      @selections=@opt.selections.str +      @act=@opt.act        @md=@particulars.md        @env=@particulars.env        @fnb=@env.fnb @@ -95,308 +104,29 @@ module SiSU_Urls        @fn=SiSU_Env::EnvCall.new(@opt.fns).lang(fn_set_lang[:c])        @m_regular=/(.+?)\.(?:(?:-|ssm\.)?sst|ssm)$/        @prog=@env.program -      @u ||= { -        'b --xhtml (XHTML)'=>@fn[:xhtml], -        'D[iu] --psql (DBI import/update postgresql)'=>'dbi psql', -        'd --sqlite (DBI sqlite)'=>'dbi sqlite3', -        'd[iu] --sqlite (DBI sqlite)'=>'dbi sqlite3', -        'e --epub (EPUB)'=>@fn[:epub], -        'P --pot (Pot)'=>@fn[:pot], -        'h --html (HTML segmented)'=>@fn[:toc], -        'h --html (HTML scroll)'=>@fn[:doc], -        'I --texinfo (Info file)'=>'info', -        'i --manpage (manpage)'=>'manpage', -        'm --ao (Document Abstraction)'=>'ao', -        'N --hash-digests (Digests sha512/sha256/md5)'=>@fn[:digest], -        'o --odt (ODF:ODT - Open Document)'=>@fn[:odf], -        'p --pdf (PDF landscape)'=>@fn[:pdf_l], -        'p --pdf (PDF portrait)'=>@fn[:pdf_p], -        'E --profile (Ruby profiler)'=>'profile', -        's --source (sisu markup)'=>@opt.fno, -        'S --sisupod (sisupod)'=>@fn[:sisupod], -        't --txt (Plain-text (endnotes))'=>@fn[:plain], -        '  --textile (textile txt)'=>@fn[:txt_textile], -        '  --asciidoc (AsciiDoc txt)'=>@fn[:txt_asciidoc], -        '  --markdown (markdown txt)'=>@fn[:txt_markdown], -        '  --rst (rST restructured-text)'=>@fn[:txt_rst], -        '  --docbook-book (DocBook Book)'=>@fn[:xml_docbook_book], -        '  --fictionbook (Fictionbook)'=>@fn[:xml_fictionbook], -        'x --xml-sax (XML sax type)'=>@fn[:sax], -        'X --xml-dom (XML dom type)'=>@fn[:dom], -        '  --xml-scaffold-sisu (XML scaffold)'=>@fn[:xml_scaffold_structure_sisu], -        '  --xml-scaffold-collapse (XML scaffold)'=>@fn[:xml_scaffold_structure_collapse], -        'Q --qrcode (QR Code jpg)'=>@fn[:qrcode], -        'y --manifest (Manifest, html)'=>@fn[:manifest], -        'Y (Sitemap, xml)'=>@fn[:sitemap], -        'w --concordance (Concordance, html)'=>@fn[:concordance], -      }.sort {|a,b| a[0].downcase<=>b[0].downcase}      end      def songsheet        begin -       @opt.cmd=~/U/ ? urls_all : (urls_select unless @opt.act[:quiet][:set]==:on) +        (@opt.act[:urls_all][:set]==:on) \ +        ? urls_all \ +        : (urls_select unless @opt.act[:quiet][:set]==:on)        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure        end      end      def show -      def source -        def src(x,y) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "[#{@opt.f_pth[:lng_is]}] -#{x}", -            "#{@prog.text_editor} #{@md.file.output_path.src.dir}/#{y}" -          ).result -        end -        def pod(x,y) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "[#{@opt.f_pth[:lng_is]}] -#{x}", -            "#{@prog.web_browser} file://#{@md.file.output_path.sisupod.dir}/#{y}" -          ).result -        end -        self -      end -      def generic(x,y) -        SiSU_Screen::Ansi.new( -          @opt.act[:color_state][:set], -          "[#{@opt.f_pth[:lng_is]}] -#{x}", -          "#{@prog.web_browser} #{@env.url.output_tell}/#{@fnb}/#{y}" -        ).result -      end -      def meta(x,y) -        SiSU_Screen::Ansi.new( -          @opt.act[:color_state][:set], -          "[#{@opt.f_pth[:lng_is]}] -#{x}", -          "#{@prog.text_editor} ~#{y}/#{@fnb}.#{y}" -        ).result -      end -      def text(x) -        SiSU_Screen::Ansi.new( -          @opt.act[:color_state][:set], -          "[#{@opt.f_pth[:lng_is]}] -#{x}", -          "#{@prog.web_browser} file://#{@md.file.output_path.txt.dir}/#{@md.file.base_filename.txt}" -        ).result -      end -      def textile(x) -        SiSU_Screen::Ansi.new( -          @opt.act[:color_state][:set], -          "[#{@opt.f_pth[:lng_is]}] -#{x}", -          "#{@prog.web_browser} file://#{@md.file.output_path.textile.dir}/#{@md.file.base_filename.textile}" -        ).result -      end -      def asciidoc(x) -        SiSU_Screen::Ansi.new( -          @opt.act[:color_state][:set], -          "[#{@opt.f_pth[:lng_is]}] -#{x}", -          "#{@prog.web_browser} file://#{@md.file.output_path.asciidoc.dir}/#{@md.file.base_filename.asciidoc}" -        ).result -      end -      def markdown(x) -        SiSU_Screen::Ansi.new( -          @opt.act[:color_state][:set], -          "[#{@opt.f_pth[:lng_is]}] -#{x}", -          "#{@prog.web_browser} file://#{@md.file.output_path.markdown.dir}/#{@md.file.base_filename.markdown}" -        ).result -      end -      def rst(x) -        SiSU_Screen::Ansi.new( -          @opt.act[:color_state][:set], -          "[#{@opt.f_pth[:lng_is]}] -#{x}", -          "#{@prog.web_browser} file://#{@md.file.output_path.rst.dir}/#{@md.file.base_filename.rst}" -        ).result -      end -      def epub(x) -        SiSU_Screen::Ansi.new( -          @opt.act[:color_state][:set], -          "[#{@opt.f_pth[:lng_is]}] -#{x}", -          "#{@prog.epub_viewer} #{@md.file.output_path.epub.dir}/#{@md.file.base_filename.epub}" -        ).result -      end -      def html -        def scroll(x) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "[#{@opt.f_pth[:lng_is]}] -#{x}", -            "#{@prog.web_browser} file://#{@md.file.output_path.html_scroll.dir}/#{@md.file.base_filename.html_scroll}" -          ).result -        end -        def toc(x) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "[#{@opt.f_pth[:lng_is]}] -#{x}", -            "#{@prog.web_browser} file://#{@md.file.output_path.html_seg.dir}/#{@md.file.base_filename.html_segtoc}" -          ).result -        end -        def concordance(x) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "[#{@opt.f_pth[:lng_is]}] -#{x}", -            "#{@prog.web_browser} file://#{@md.file.output_path.html_concordance.dir}/#{@md.file.base_filename.html_concordance}" -          ).result -        end -        def manifest(x) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "[#{@opt.f_pth[:lng_is]}] -#{x}", -            "#{@prog.web_browser} file://#{@md.file.output_path.manifest.dir}/#{@md.file.base_filename.manifest}" -          ).result -        end -        self -      end -      def qrcode(x) -        SiSU_Screen::Ansi.new( -          @opt.act[:color_state][:set], -          "[#{@opt.f_pth[:lng_is]}] -#{x}", -          "#{@prog.web_browser} file://#{@md.file.output_path.manifest.dir}/#{@md.file.base_filename.manifest}" -        ).result -      end -      def odt(x) +      def report(x)          SiSU_Screen::Ansi.new(            @opt.act[:color_state][:set], -          "[#{@opt.f_pth[:lng_is]}] -#{x}", -          "#{@prog.odf_viewer} file://#{@md.file.output_path.odt.dir}/#{@md.file.base_filename.odt}" +          "[#{@opt.f_pth[:lng_is]}]", +          x[:cmd], +          x[:viewer] + ' ' \ +          + x[:f_pth]          ).result        end -      def pdf -        def portrait(x) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "[#{@opt.f_pth[:lng_is]}] -#{x}", -            "#{@prog.pdf_viewer} #{@md.file.output_path.pdf.dir}/#{@md.file.base_filename.pdf_p}#{@md.papersize_array[0]}.pdf" -          ).result -        end -        def landscape(x) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "[#{@opt.f_pth[:lng_is]}] -#{x}", -            "#{@prog.pdf_viewer} #{@md.file.output_path.pdf.dir}/#{@md.file.base_filename.pdf_l}#{@md.papersize_array[0]}.pdf" -          ).result -        end -        self -      end -      def manpage(x) -        SiSU_Screen::Ansi.new( -          @opt.act[:color_state][:set], -          "[#{@opt.f_pth[:lng_is]}] -#{x}", -          "#{@prog.manpage_viewer} #{@md.file.output_path.manpage.dir}/#{@md.file.base_filename.manpage}" -        ).result -      end -      def pinfo(x,y) -        SiSU_Screen::Ansi.new( -          @opt.act[:color_state][:set], -          "[#{@opt.f_pth[:lng_is]}] -#{x}", -          "cd #{@md.file.output_path.texinfo.dir} && #{@env.program.texinfo} #{@md.file.base_filename.info}; cd -" -        ).result -      end -      def po4a -        def po(x,y) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "-#{x}", -            "#{@prog.text_editor} #{@md.file.output_path.po.dir}/#{y}" -          ).result -        end -        def pot(x,y) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "-#{x}", -            "#{@prog.text_editor} #{@md.file.output_path.pot.dir}/#{y}" -          ).result -        end -        self -      end -      def xhtml(x) -        SiSU_Screen::Ansi.new( -          @opt.act[:color_state][:set], -          "[#{@opt.f_pth[:lng_is]}] -#{x}", -          "#{@prog.web_browser} file://#{@md.file.output_path.xhtml.dir}/#{@md.file.base_filename.xhtml}" -        ).result -      end -      def xml -        def sax(x) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "[#{@opt.f_pth[:lng_is]}] -#{x}", -            "#{@prog.web_browser} file://#{@md.file.output_path.xml_sax.dir}/#{@md.file.base_filename.xml_sax}" -          ).result -        end -        def dom(x) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set],"[#{@opt.f_pth[:lng_is]}] -#{x}", -            "#{@prog.web_browser} file://#{@md.file.output_path.xml_dom.dir}/#{@md.file.base_filename.xml_dom}" -          ).result -        end -        def docbook_book(x) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "[#{@opt.f_pth[:lng_is]}] -#{x}", -            "#{@prog.web_browser} file://#{@md.file.output_path.xml_docbook_book.dir}/#{@md.file.base_filename.xml_docbook_book}" -          ).result -        end -        def fictionbook(x) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "[#{@opt.f_pth[:lng_is]}] -#{x}", -            "#{@prog.web_browser} file://#{@md.file.output_path.xml_fictionbook.dir}/#{@md.file.base_filename.xml_fictionbook}" -          ).result -        end -        def scaffold_structure_sisu(x) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "[#{@opt.f_pth[:lng_is]}] -#{x}", -            "#{@prog.web_browser} file://#{@md.file.output_path.xml_scaffold_structure_sisu.dir}/#{@md.file.base_filename.xml_scaffold_structure_sisu}" -          ).result -        end -        def scaffold_structure_collapse(x) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "[#{@opt.f_pth[:lng_is]}] -#{x}", -            "#{@prog.web_browser} file://#{@md.file.output_path.xml_scaffold_structure_collapse.dir}/#{@md.file.base_filename.xml_scaffold_structure_collapse}" -          ).result -        end -        def sitemap(x) #BROKEN -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "[#{@opt.f_pth[:lng_is]}] -#{x}", -            "#{@prog.web_browser} file://#{@md.file.output_path.sitemaps.dir}/#{@md.file.base_filename.sitemap}" -          ).result -        end -        self -      end -      def hash_digest(x) -        SiSU_Screen::Ansi.new( -          @opt.act[:color_state][:set], -          "[#{@opt.f_pth[:lng_is]}] -#{x}", -          "#{@prog.web_browser} file://#{@md.file.output_path.hash_digest.dir}/#{@md.file.base_filename.hash_digest}" -        ).result -      end -      def db -        def psql(x,y) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "[#{@opt.f_pth[:lng_is]}] -#{x} DBI psql","#{@pwd_stub}::#{@opt.fns}", -            y -          ).result -        end -        def sqlite(x,y) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "[#{@opt.f_pth[:lng_is]}] -#{x} DBI sqlite", -            "sqlite3 #{@env.path.webserv}/#{@md.opt.f_pth[:pth_stub]}/sisu_sqlite.db" -          ).result -        end -        def sqlite_discrete(x,y) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            "[#{@opt.f_pth[:lng_is]}] -#{x}", -            "sqlite3 #{@md.file.output_path.sqlite_discrete.dir}/#{@md.file.base_filename.sqlite_discrete}" -          ).result -        end -        self -      end        self      end      def urls_maintenance(opt,x,y) @@ -472,8 +202,341 @@ module SiSU_Urls          end        end      end +    def report_info +      def dal +        { +          cmd: '--ao', +          fn: 'ao', +         } +      end +      def hash_digests +        { +          cmd: '--hash-digests (sha512/sha256/md5)', +          viewer: @prog.web_browser, +          f_pth: @md.file.output_path.hash_digest.dir + '/' \ +          + @md.file.base_filename.hash_digest, +          fn: @fn[:digest], +         } +      end +      def text +        def txt +          { +            cmd: '--txt', +            viewer: @prog.web_browser, +            f_pth: @md.file.output_path.txt.dir + '/' \ +            + @md.file.base_filename.txt, +            fn: @fn[:plain], +           } +        end +        def asciidoc +          { +            cmd: '--asciidoc', +            viewer: @prog.web_browser, +            f_pth: @md.file.output_path.asciidoc.dir + '/' \ +            + @md.file.base_filename.asciidoc, +            fn: @fn[:txt_asciidoc], +           } +        end +        def markdown +          { +            cmd: '--markdown', +            viewer: @prog.web_browser, +            f_pth: @md.file.output_path.markdown.dir + '/' \ +            + @md.file.base_filename.markdown, +            fn: @fn[:txt_markdown], +           } +        end +        def rst +          { +            cmd: '--rst', +            viewer: @prog.web_browser, +            f_pth: @md.file.output_path.rst.dir + '/' \ +            + @md.file.base_filename.rst, +            fn: @fn[:txt_rst], +           } +        end +        def textile +          { +            cmd: '--textile', +            viewer: @prog.web_browser, +            f_pth: @md.file.output_path.textile.dir + '/' \ +            + @md.file.base_filename.textile, +            fn: @fn[:txt_textile], +           } +        end +        self +      end +      def html +        def seg +          { +            cmd: '--html-seg', +            viewer: @prog.web_browser, +            f_pth: @md.file.output_path.html_seg.dir + '/' \ +            + @md.file.base_filename.html_segtoc, +            fn: @fn[:toc], +           } +        end +        def scroll +          { +            cmd: '--html-scroll', +            viewer: @prog.web_browser, +            f_pth: @md.file.output_path.html_scroll.dir + '/' \ +            + @md.file.base_filename.html_scroll, +            fn: @fn[:doc], +           } +        end +        def concordance +          { +            cmd: '--concordance', +            viewer: @prog.web_browser, +            f_pth: @md.file.output_path.html_concordance.dir + '/' \ +            + @md.file.base_filename.html_concordance, +            fn: @fn[:concordance], +           } +        end +        self +      end +      def xhtml +        def xhtml +          { +            cmd: '--xhtml', +            viewer: @prog.web_browser, +            f_pth: @md.file.output_path.xhtml.dir + '/' \ +            + @md.file.base_filename.xhtml, +            fn: @fn[:xhtml], +           } +        end +        def epub +          { +            cmd: '--epub', +            viewer: @prog.epub_viewer, +            f_pth: @md.file.output_path.epub.dir + '/' \ +            + @md.file.base_filename.epub, +            fn: @fn[:epub], +           } +        end +        self +      end +      def xml +        def odt +          { +            cmd: '--odt (ODF:ODT)', +            viewer: @prog.odf_viewer, +            f_pth: @md.file.output_path.odt.dir + '/' \ +            + @md.file.base_filename.odt, +            fn: @fn[:odf], +           } +        end +        def docbook +          { +            cmd: '--docbook', +            viewer: @prog.web_browser, +            f_pth: @md.file.output_path.xml_docbook_book.dir + '/' \ +            + @md.file.base_filename.xml_docbook_book, +            fn: @fn[:xml_docbook_book], +           } +        end +        def fictionbook +          { +            cmd: '--fictionbook', +            viewer: @prog.web_browser, +            f_pth: @md.file.output_path.xml_fictionbook.dir + '/' \ +            + @md.file.base_filename.xml_fictionbook, +            fn: @fn[:xml_fictionbook], +           } +        end +        def sax +          { +            cmd: '--xml-sax', +            viewer: @prog.web_browser, +            f_pth: @md.file.output_path.xml_sax.dir + '/' \ +            + @md.file.base_filename.xml_sax, +            fn: @fn[:sax], +           } +        end +        def dom +          { +            cmd: '--xml-dom', +            viewer: @prog.web_browser, +            f_pth: @md.file.output_path.xml_dom.dir + '/' \ +            + @md.file.base_filename.xml_dom, +            fn: @fn[:dom], +           } +        end +        def scaffold_sisu +          { +            cmd: '--xml-scaffold-sisu', +            viewer: @prog.web_browser, +            f_pth: @md.file.output_path.xml_scaffold_structure_sisu.dir + '/' \ +            + @md.file.base_filename.xml_scaffold_structure_sisu, +            fn: @fn[:xml_scaffold_structure_sisu], +           } +        end +        def scaffold_collapse +          { +            cmd: '--xml-scaffold-collapse', +            viewer: @prog.web_browser, +            f_pth: @md.file.output_path.xml_scaffold_structure_collapse.dir + '/' \ +            + @md.file.base_filename.xml_scaffold_structure_collapse, +            fn: @fn[:xml_scaffold_structure_collapse], +           } +        end +        self +      end +      def pdf +        def landscape +          { +            cmd: '--pdf (landscape)', +            viewer: @prog.pdf_viewer, +            f_pth: @md.file.output_path.pdf.dir + '/' \ +            + @md.file.base_filename.pdf_l \ +            + @md.papersize_array[0] + '.pdf', +            fn: @fn[:pdf_l], +           } +        end +        def portrait +          { +            cmd: '--pdf (portrait)', +            viewer: @prog.pdf_viewer, +            f_pth: @md.file.output_path.pdf.dir + '/' \ +            + @md.file.base_filename.pdf_p \ +            + @md.papersize_array[0] + '.pdf', +            fn: @fn[:pdf_p], +           } +        end +        self +      end +      def manpage +        { +          cmd: '--manpage', +          viewer: @prog.manpage_viewer, +          f_pth: @md.file.output_path.manpage.dir + '/' \ +          + @md.file.base_filename.manpage, +          fn: 'manpage', +         } +      end +      def texinfo +        { +          cmd: '--texinfo', +          viewer: '', +          f_pth: 'cd ' \ +          + @md.file.output_path.texinfo.dir + ' && ' \ +          + @env.program.texinfo + ' ' \ +          + @md.file.base_filename.info \ +          + '; cd -', +          fn: 'info', +         } +      end +      def db +        def psql +          { +            cmd: '--psql --update/--import', +            viewer: '', +            f_pth: @pwd_stub + '::' \ +            + @opt.fns \ +            + 'dbi psql', +            fn: 'dbi psql', +           } +        end +        def sqlite +          { +            cmd: '--sqlite --update/--import', +            viewer: 'sqlite3 ', +            f_pth: @env.path.webserv + '/' \ +            + @md.opt.f_pth[:pth_stub] + '/' \ +            + 'sisu_sqlite.db', +            fn: 'dbi sqlite3', +           } +        end +        def sqlite_discrete +          { +            cmd: '--sqlite --update/--import', +            viewer: 'sqlite3 ', +            f_pth: @md.file.output_path.sqlite_discrete.dir + '/' \ +            + @md.file.base_filename.sqlite_discrete, +            fn: 'dbi sqlite3', +           } +        end +        self +      end +      def po4a +        def po +          { +            cmd: '--po4a/--pot', +            viewer: @prog.web_browser, +            f_pth: @prog.text_editor + ' ' \ +            + @md.file.output_path.po.dir \ +            + '/' + y, +            fn: @fn[:pot], +           } +        end +        def pot +          { +            cmd: '--po4a/--pot', +            viewer: @prog.web_browser, +            f_pth: @prog.text_editor + ' ' \ +            + @md.file.output_path.pot.dir \ +            + '/' + y, +            fn: @fn[:pot], +           } +        end +        self +      end +      def source +        { +          cmd: '--source (sisu markup)', +          viewer: @prog.text_editor, +          f_pth: @md.file.output_path.src.dir + '/' \ +          + @opt.fno, +          fn: @opt.fno, +         } +      end +      def sisupod +        { +          cmd: '--sisupod', +          viewer: @prog.web_browser, +          f_pth: @md.file.output_path.sisupod.dir + '/' \ +          + @opt.fno, +          fn: @fn[:sisupod], +         } +      end +      def ruby_profile +        { +          cmd: '--profile (ruby profiler)', +          fn: 'profile', +         } +      end +      def qrcode +        { +          cmd: '--qrcode', +          viewer: @prog.web_browser, +          f_pth: @md.file.output_path.manifest.dir + '/' \ +          + @md.file.base_filename.manifest, +          fn: @fn[:qrcode], +         } +      end +      def manifest +        { +          cmd: '--manifest', +          viewer: @prog.web_browser, +          f_pth: @md.file.output_path.manifest.dir + '/' \ +          + @md.file.base_filename.manifest, +          fn: @fn[:manifest], +         } +      end +      def sitemap +        { +          cmd: '--sitemap', +          viewer: @prog.web_browser, +          f_pth: @md.file.output_path.sitemaps.dir + '/' \ +          + @md.file.base_filename.sitemap, +          fn: @fn[:sitemap], +         } +      end +      self +    end      def urls_select -      unless @opt.cmd =~/q/ +      unless @opt.act[:quiet][:set]==:on          i1='[' + @opt.f_pth[:lng_is] + ']'          i2='file://' \          + @md.file.output_path.manifest.dir + '/' \ @@ -490,168 +553,129 @@ module SiSU_Urls              'URL (output manifest)',              i1, i2            ).grey_title_grey_blue -        SiSU_Screen::Ansi.new( -          @opt.act[:color_state][:set], -          i1, i2, -        ).flow if @opt.cmd =~/[MVv]/ +        if (@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], +            i1, i2, +          ).flow +        end        end        m=/.+\/(?:src\/)?(\S+)/im # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m        @pwd_stub="#{@env.url.output_tell}"[m,1]        unless @opt.act[:quiet][:set]==:on -        @u.each do |x,y| -          if @opt.fns =~ @m_regular -            if (@opt.act[:verbose][:set]==:on \ -            || @opt.act[:verbose_plus][:set]==:on \ -            || @opt.act[:maintenance][:set]==:on) -              if x=~/--txt\b/ \ -              and @opt.act[:txt][:set]==:on -                show.text(x) -              end -              if x=~/--textile\b/ \ -              and @opt.act[:txt_textile][:set]==:on -                show.textile(x) -              end -              if x=~/--asciidoc\b/ \ -              and @opt.act[:txt_asciidoc][:set]==:on -                show.asciidoc(x) -              end -              if x=~/--markdown\b/ \ -              and @opt.act[:txt_markdown][:set]==:on -                show.markdown(x) -              end -              if x=~/--rst\b/ \ -              and @opt.act[:txt_rst][:set]==:on -                show.rst(x) -              end -              if x=~/--xhtml\b/ \ -              and @opt.act[:xhtml][:set]==:on -                show.xhtml(x) -              end -              if x=~/--psql\b/ \ -              and @opt.act[:psql][:set]==:on -                show.db.psql(x,y) -              end -              if x=~/d\s+--sqlite\b|--sql\b/ \ -              and @opt.act[:sqlite_discrete][:set]==:on -                show.db.sqlite_discrete(x,y) -              end -              if x=~/d\[iu\]\s+--sqlite\b/ \ -              and @opt.act[:sqlite][:set]==:on -                show.db.sqlite(x,y) -              end -              if x=~/--epub\b/ \ -              and @opt.act[:epub][:set]==:on -                show.epub(x) -              end -              if x=~/--html\b/ \ -              and (@opt.act[:html][:set]==:on \ -              or @opt.act[:html_scroll][:set]==:on \ -              or @opt.act[:html_seg][:set]==:on) -                if x =~/scroll/ -                  if @opt.act[:html_scroll][:set]==:on -                    show.html.scroll(x) -                  end -                else -                  if @opt.act[:html_seg][:set]==:on -                    show.html.toc(x) -                  end -                end -              end -              if x=~/--texinfo\b/ \ -              and @opt.cmd =~/I/ -                show.pinfo(x,y) -              end -              if x=~/--manpage\b/ \ -              and @opt.act[:manpage][:set]==:on -                show.manpage(x) -              end -              if x=~/--hash-digests\b/ \ -              and @opt.cmd =~/N/ -                show.hash_digest(x) -              end -              if x=~/--odt\b|--odf\b/ \ -              and @opt.act[:odt][:set]==:on -                show.odt(x) -              end -              if x=~/^P/ \ -              and @opt.cmd =~/P/ -                if @opt.fns =~/\S+?~\S{2}(?:_\S{2})?\.ss[mt]/ -                  f=y.gsub(/\.pot$/,'.po') -                  show.po4a.po(x,f) -                else -                  show.po4a.pot(x,f) -                end -              end -              if x=~/--pdf\b/ \ -              and (@opt.act[:pdf][:set]==:on \ -              or @opt.act[:pdf_p][:set]==:on \ -              or @opt.act[:pdf_l][:set]==:on) -                if x =~/portrait/ -                  if @opt.act[:pdf_p][:set]==:on -                    show.pdf.portrait(x) -                  end -                else -                  if @opt.act[:pdf_l][:set]==:on -                    show.pdf.landscape(x) -                  end -                end -              end -              if x=~/--sisupod\b/ \ -              and @opt.act[:sisupod][:set]==:on -                (@opt.fno =~/\.ssm$/) \ -                ? y.gsub(/(?:\~\S{2,3})?(\.ssm.sst\.txz)$/,'.ssm.txz') -                : y.gsub(/(?:\~\S{2,3})?(\.sst\.txz)$/,'\1') -                show.source.pod(x,y) -              end -              if x=~/--source\b/ \ -              and @opt.act[:share_source][:set]==:on -                show.source.src(x,y) -              end -              if x=~/--concordance\b/ \ -              and @opt.act[:concordance][:set]==:on -                show.html.concordance(x) -              end -              if x=~/--xml-dom\b/ \ -              and @opt.act[:xml_dom][:set]==:on -                show.xml.dom(x) -              end -              if x=~/--xml-sax\b/ \ -              and @opt.act[:xml_sax][:set]==:on -                show.xml.sax(x) -              end -              if x=~/--docbook-book\b/ \ -              and @opt.act[:xml_docbook_book][:set]==:on -                show.xml.docbook_book(x) -              end -              if x=~/--fictionbook\b/ \ -              and @opt.act[:xml_fictionbook][:set]==:on -                show.xml.fictionbook(x) -              end -              if x=~/--xml-scaffold-sisu\b/ \ -              and @opt.act[:xml_scaffold_structure_sisu][:set]==:on -                show.xml.scaffold_structure_sisu(x) +        if @opt.fns =~ @m_regular +          if (@opt.act[:verbose][:set]==:on \ +          || @opt.act[:verbose_plus][:set]==:on \ +          || @opt.act[:maintenance][:set]==:on) +            if @opt.act[:txt][:set]==:on +              show.report(report_info.text.txt) +            end +            if @opt.act[:txt_textile][:set]==:on +              show.report(report_info.text.textile) +            end +            if @opt.act[:txt_asciidoc][:set]==:on +              show.report(report_info.text.asciidoc) +            end +            if @opt.act[:txt_markdown][:set]==:on +              show.report(report_info.text.markdown) +            end +            if @opt.act[:txt_rst][:set]==:on +              show.report(report_info.text.rst) +            end +            if (@opt.act[:html][:set]==:on \ +            or @opt.act[:html_scroll][:set]==:on \ +            or @opt.act[:html_seg][:set]==:on) +              if @opt.act[:html_scroll][:set]==:on +                show.report(report_info.html.scroll)                end -              if x=~/--xml-scaffold-collapse\b/ \ -              and @opt.act[:xml_scaffold_structure_collapse][:set]==:on -                show.xml.scaffold_structure_collapse(x) +              if @opt.act[:html_seg][:set]==:on +                show.report(report_info.html.seg)                end -              if x=~/--qrcode\b/ \ -              and @opt.act[:qrcode][:set]==:on -                show.qrcode(x) +            end +            if @opt.act[:concordance][:set]==:on +              show.report(report_info.html.concordance) +            end +            if @opt.act[:xhtml][:set]==:on +              show.report(report_info.xhtml.xhtml) +            end +            if @opt.act[:epub][:set]==:on +              show.report(report_info.xhtml.epub) +            end +            if @opt.act[:odt][:set]==:on +              show.report(report_info.xml.odt) +            end +            if @opt.act[:xml_dom][:set]==:on +              show.report(report_info.xml.dom) +            end +            if @opt.act[:xml_sax][:set]==:on +              show.report(report_info.xml.sax) +            end +            if @opt.act[:xml_docbook_book][:set]==:on +              show.report(report_info.xml.docbook) +            end +            if @opt.act[:xml_fictionbook][:set]==:on +              show.report(report_info.xml.fictionbook) +            end +            if @opt.act[:xml_scaffold_structure_sisu][:set]==:on +              show.report(report_info.xml.scaffold_structure_sisu) +            end +            if @opt.act[:xml_scaffold_structure_collapse][:set]==:on +              show.report(report_info.xml.scaffold_collapse) +            end +            if (@opt.act[:pdf][:set]==:on \ +            or @opt.act[:pdf_p][:set]==:on \ +            or @opt.act[:pdf_l][:set]==:on) +              if @opt.act[:pdf_p][:set]==:on +                show.report(report_info.pdf.portrait)                end -              if x=~/--sitemap\b/ \ -              and @opt.cmd =~/Y/ #BROKEN -                show.xml.sitemap(x) +              if @opt.act[:pdf_l][:set]==:on +                show.report(report_info.pdf.landscape)                end -              if x=~/--manifest\b/ \ -              and @opt.act[:manifest][:set]==:on -                show.html.manifest(x) +            end +            if @opt.act[:psql][:set]==:on +              show.report(report_info.db.psql) +            end +            if @opt.act[:sqlite_discrete][:set]==:on +              show.report(report_info.db.sqlite_discrete) +            end +            if @opt.act[:sqlite][:set]==:on +              show.report(report_info.db.sqlite) +            end +            if @opt.act[:texinfo][:set]==:on +              show.report(report_info.texinfo) +            end +            if @opt.act[:manpage][:set]==:on +              show.report(report_info.manpage) +            end +            if @opt.act[:hash_digests][:set]==:on +              show.report(report_info.hash_digests) +            end +            if @opt.act[:po4a][:set]==:on +              if @opt.fns =~/\S+?~\S{2}(?:_\S{2})?\.ss[mt]/ +                f=y.gsub(/\.pot$/,'.po') +                show.po4a.po(x,f) +              else +                show.po4a.pot(x,f)                end              end -            if (@opt.act[:verbose_plus][:set]==:on \ -            || @opt.act[:maintenance][:set]==:on) -              urls_maintenance(@opt,x,y) +            if @opt.act[:share_source][:set]==:on +              show.report(report_info.source) +            end +            if @opt.act[:sisupod][:set]==:on +              show.report(report_info.sisupod)              end +            if @opt.act[:qrcode][:set]==:on +              show.report(report_info.qrcode) +            end +            if @opt.act[:manifest][:set]==:on +              show.report(report_info.manifest) +            end +          end +          if (@opt.act[:verbose_plus][:set]==:on \ +          || @opt.act[:maintenance][:set]==:on) +            urls_maintenance(@opt,x,y)            end          end        end diff --git a/lib/sisu/v5/utils_screen_text_color.rb b/lib/sisu/v5/utils_screen_text_color.rb index 42b0c698..d50b39b6 100644 --- a/lib/sisu/v5/utils_screen_text_color.rb +++ b/lib/sisu/v5/utils_screen_text_color.rb @@ -51,7 +51,7 @@   * Git     <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> -   <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/screen_text_color.rb;hb=HEAD> +   <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v5/utils_screen_text_color.rb;hb=HEAD>   * Ralph Amissah     <ralph@amissah.com> @@ -269,7 +269,7 @@ module SiSU_Screen        blue      end      def result -      puts "\t#{@cX.green}#{@txt[0]}#{@cX.off} #{@cX.blue}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}" +      puts "\t#{@cX.grey}#{@txt[0]}#{@cX.off} #{@cX.green}#{@txt[1]}#{@cX.off} #{@cX.blue}#{@txt[2]}#{@cX.off}"      end      def maintenance        puts "\t#{@cX.grey}#{@txt[0]}#{@cX.off} #{@cX.brown}#{@txt[1]}#{@cX.off} #{@cX.grey}#{@txt[2]}#{@cX.off}" diff --git a/lib/sisu/v5/wikispeak.rb b/lib/sisu/v5/wikispeak.rb index a0fba849..198ea11b 100644 --- a/lib/sisu/v5/wikispeak.rb +++ b/lib/sisu/v5/wikispeak.rb @@ -102,7 +102,7 @@ module SiSU_Wikispeak          @ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here          SiSU_Wikispeak::Source::Scroll.new(@ao_array,@md).songsheet        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/xhtml.rb b/lib/sisu/v5/xhtml.rb index 4253e8eb..14c6bfe9 100644 --- a/lib/sisu/v5/xhtml.rb +++ b/lib/sisu/v5/xhtml.rb @@ -116,7 +116,7 @@ module SiSU_XHTML          end          SiSU_XHTML::Source::Songsheet.new(@particulars).song        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -140,7 +140,7 @@ module SiSU_XHTML            end            SiSU_Rexml::Rexml.new(@md,@file.place_file.xhtml.dir).xml if @md.opt.act[:maintenance][:set]==:on # test rexml parsing, comment out when not in use #debug          rescue -          SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +          SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do              __LINE__.to_s + ':' + __FILE__            end          ensure @@ -310,8 +310,8 @@ WOK          @rcdc=false          @level,@cont,@copen,@xml_contents_close=[],[],[],[]          xml_head -        (0..6).each { |x| @cont[x]=@level[x]=false } -        (4..6).each { |x| @xml_contents_close[x]='' } +        (0..7).each { |x| @cont[x]=@level[x]=false } +        (4..7).each { |x| @xml_contents_close[x]='' }          data.each do |dob|            dob=@trans.char_enc.utf8(dob) if @sys.locale =~/utf-?8/i #% utf8            dob=@trans.markup(dob) @@ -337,6 +337,7 @@ WOK                  when 4 then x.heading_body4                  when 5 then x.heading_body5                  when 6 then x.heading_body6 +                when 7 then x.heading_body7                  end                else                  if dob.is ==:verse diff --git a/lib/sisu/v5/xhtml_epub2.rb b/lib/sisu/v5/xhtml_epub2.rb index 9b110497..ae83214e 100644 --- a/lib/sisu/v5/xhtml_epub2.rb +++ b/lib/sisu/v5/xhtml_epub2.rb @@ -135,7 +135,7 @@ module SiSU_XHTML_EPUB2          SiSU_XHTML_EPUB2::Source::Seg.new(@md,data).songsheet          SiSU_XHTML_EPUB2::Source::Output.new(@md).songsheet        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -148,7 +148,7 @@ module SiSU_XHTML_EPUB2              end            end          end -        SiSU_Env::Clear.new(@opt.cmd,@opt.fns).param_instantiate +        SiSU_Env::Clear.new(@opt.selections.str,@opt.fns).param_instantiate          @@flag,@@scr,@@seg,@@seg_endnotes,@@seg_subtoc,@@seg_ad={},{},{},{},{},{}          @@seg_total,@@tracker,@@loop_count,@@tablehead,@@number_of_cols=0,0,0,0,0          @@seg_name,@@seg_name_html,@@seg_subtoc_array,@@seg_endnotes_array,@@segtocband,@@tablefoot=Array.new(7){[]} @@ -268,6 +268,7 @@ module SiSU_XHTML_EPUB2                lv_name='section_a' + @s_a_no.to_s                @nav_no+=1                @nav_no2=@nav_no +              @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4] @@ -275,7 +276,8 @@ module SiSU_XHTML_EPUB2                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[1]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[0] -              @ncxo[0],@ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=true,false,false,false,false,false,false +              @ncxo[0],@ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= +                true,  false,   false,   false,   false,   false,   false,   false                @epub.sections(dob_toc,lv_name)                if @level_a_first_occurrence \                && @make.build.toc? @@ -293,13 +295,15 @@ module SiSU_XHTML_EPUB2                lv_name='section_b' + @s_b_no.to_s                @nav_no+=1                @nav_no2=@nav_no +              @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[1] -              @ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=true,false,false,false,false,false +              @ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= +                true,  false,   false,   false,   false,   false,   false                @epub.sections(dob_toc,lv_name)                @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc                md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) @@ -311,12 +315,14 @@ module SiSU_XHTML_EPUB2                lv_name='section_c' + @s_c_no.to_s                @nav_no+=1                @nav_no2=@nav_no +              @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2] -              @ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=true,false,false,false,false +              @ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= +                true,  false,   false,   false,   false,   false                @epub.sections(dob_toc,lv_name)                @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc                md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) @@ -328,11 +334,13 @@ module SiSU_XHTML_EPUB2                lv_name='section_d' + @s_d_no.to_s                @nav_no+=1                @nav_no3=@nav_no +              @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3] -              @ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=true,false,false,false +              @ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= +                true,  false,   false,   false,   false                @epub.sections(dob_toc,lv_name)                @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc                md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) @@ -344,10 +352,12 @@ module SiSU_XHTML_EPUB2                lv_name=dob_toc.name                @nav_no+=1                @dob_name=dob.name +              @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4] -              @ncxo[4],@ncxo[5],@ncxo[6]=true,false,false +              @ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= +                true,  false,   false,   false                @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc                md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name)                md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) @@ -358,9 +368,11 @@ module SiSU_XHTML_EPUB2                hashtag='#o' + dob_toc.ocn.to_s                lv_name=@dob_name                @nav_no+=1 +              @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5] -              @ncxo[5],@ncxo[6]=true,false +              @ncxo[5],@ncxo[6],@ncxo[7]= +                true,  false, false                @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name,hashtag) if dob_toc                md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name,hashtag)                md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name,hashtag) @@ -371,13 +383,27 @@ module SiSU_XHTML_EPUB2                hashtag='#o' + dob_toc.ocn.to_s                lv_name=@dob_name                @nav_no+=1 +              @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6] -              @ncxo[6]=true +              @ncxo[6],@ncxo[7]= +                true,  false                @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name,hashtag) if dob_toc                md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name,hashtag)                md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name,hashtag)                md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name,hashtag)                SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_6 +            when 7 +              @ncx_cls=[] +              hashtag='#o' + dob_toc.ocn.to_s +              lv_name=@dob_name +              @nav_no+=1 +              @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7] +              @ncxo[7]=true +              @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name,hashtag) if dob_toc +              md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name,hashtag) +              md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name,hashtag) +              md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name,hashtag) +              SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_7              else nil              end              toc.each do |k,d| @@ -393,7 +419,7 @@ module SiSU_XHTML_EPUB2                  @@toc[:seg] << toc[:seg]                  @@toc[:scr] << toc[:seg]                rescue -                SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +                SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do                    __LINE__.to_s + ':' + __FILE__                  end                end @@ -594,6 +620,27 @@ module SiSU_XHTML_EPUB2          end          toc        end +      def level_7 +        dob=@data +        linkname=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'').strip +        ocn=dob.ocn +        toc={} +        if ocn \ +        and ocn !~/#/ +          p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn) +          lnk_n_txt=%{  <a href="#{@@seg_url}#{Sfx[:epub_xhtml]}#o#{ocn}"> +  #{linkname} +</a>} +          txt_obj={ txt: lnk_n_txt } +          format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) +          toc[:seg]=format_toc.lev7 +          title=%{#{p_num.goto}#{linkname}</a>} +          txt_obj={ txt: title } +          format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) +          toc[:scr]=format_toc.lev7 +        end +        toc +      end      end      class ScrollHeadAndSegToc < Toc        def initialize(md='',toc='',links_guide_toc='') @@ -726,7 +773,7 @@ module SiSU_XHTML_EPUB2            end            out.close          rescue -          SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +          SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do              __LINE__.to_s + ':' + __FILE__            end          end @@ -741,7 +788,7 @@ module SiSU_XHTML_EPUB2            end            out.close          rescue -          SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +          SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do              __LINE__.to_s + ':' + __FILE__            end          end @@ -818,7 +865,7 @@ WOK              filename_xhtml.close            end          rescue -          SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +          SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do              __LINE__.to_s + ':' + __FILE__            end          end @@ -836,7 +883,7 @@ WOK              filename_xhtml.close            end          rescue -          SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +          SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do              __LINE__.to_s + ':' + __FILE__            end          end diff --git a/lib/sisu/v5/xhtml_epub2_concordance.rb b/lib/sisu/v5/xhtml_epub2_concordance.rb index 447dd72e..0bdaff3c 100644 --- a/lib/sisu/v5/xhtml_epub2_concordance.rb +++ b/lib/sisu/v5/xhtml_epub2_concordance.rb @@ -96,7 +96,7 @@ module SiSU_XHTML_EPUB2_Concordance            SiSU_XHTML_EPUB2_Concordance::Source::Words.new(@particulars).songsheet          end        rescue -        SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -181,7 +181,7 @@ WOK            @rgx_splitlist=%r{[โ.,;:-]+|#{Mx[:nbsp]}+}mi            @rgx_scanlist=%r{#{Mx[:fa_italics_o]}[a-zA-Z0-9"\s]{2,12}#{Mx[:fa_italics_c]}|#{Mx[:fa_bold_o]}[a-zA-Z0-9"\s]{2,12}#{Mx[:fa_bold_c]}|#{Mx[:url_o]}https?://\S+?#{Mx[:url_c]}|file://\S+|<\S+?>|\w+|[a-zA-Z]+}mi          rescue -          SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +          SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do              __LINE__.to_s + ':' + __FILE__            end          end @@ -195,7 +195,7 @@ WOK            @file_concordance=File.open("#{@path}/content/#{@md.fn[:epub_concord]}",'w')            map_para          rescue -          SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +          SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do              __LINE__.to_s + ':' + __FILE__            end          ensure diff --git a/lib/sisu/v5/xhtml_epub2_format.rb b/lib/sisu/v5/xhtml_epub2_format.rb index 6522378b..5f1f315f 100644 --- a/lib/sisu/v5/xhtml_epub2_format.rb +++ b/lib/sisu/v5/xhtml_epub2_format.rb @@ -162,7 +162,7 @@ module SiSU_XHTML_EPUB2_Format      padding-left: 0em;      text-indent: 0mm;    } -  p, h0, h1, h2, h3, h4, h5, h6 { +  p, h0, h1, h2, h3, h4, h5, h6, h7 {      display: block;      font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman;      font-size: 100%; @@ -992,18 +992,18 @@ module SiSU_XHTML_EPUB2_Format      font-weight: bold;    } -  h0, h1, h2, h3, h4, h5, h6 { +  h0, h1, h2, h3, h4, h5, h6, h7 {      font-weight: bold;      line-height: 120%;      text-align: left;      margin-top: 20px;      margin-bottom: 10px;    } -  h4.norm, h5.norm, h6.norm { +  h4.norm, h5.norm, h6.norm, h7.norm {      margin-top: 10px;      margin-bottom: 0px;    } -  h1.center, h2.center, h3.center, h4.center, h5.center, h6.center { +  h1.center, h2.center, h3.center, h4.center, h5.center, h6.center, h7.center {      text-align: center;    }    h1 { font-size: 120%; } @@ -1012,6 +1012,7 @@ module SiSU_XHTML_EPUB2_Format    h4 { font-size: 105%; }    h5 { font-size: 100%; }    h6 { font-size: 100%; } +  h7 { font-size: 100%; }    h0 { font-size: 80%; }    h1.i {margin-left: 2em;} @@ -1059,6 +1060,11 @@ module SiSU_XHTML_EPUB2_Format      font-size: 90%;      line-height: 110%;    } +  h7.toc { +    margin-left: 7em; +    font-size: 90%; +    line-height: 105%; +  }    .microtoc {      margin-top: 2px; @@ -1092,6 +1098,11 @@ module SiSU_XHTML_EPUB2_Format      font-weight: normal;      font-size: 90%;    } +  h7.microtoc { +    margin-left: 30mm; +    font-weight: normal; +    font-size: 85%; +  }    .subtoc {      margin-right: 34%; @@ -1109,6 +1120,12 @@ module SiSU_XHTML_EPUB2_Format      margin-top: 0px;      margin-bottom: 0px;    } +  h7.subtoc { +    margin-left: 4em; +    font-size: 70%; +    margin-top: 0px; +    margin-bottom: 0px; +  }    div.substance {      width: 100%; @@ -1196,10 +1213,10 @@ module SiSU_XHTML_EPUB2_Format      background-color: #f9f9aa;    } -  h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, p.c { +  h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, h7.c, p.c {      text-align: center    } -  h1.red, h2.red, h3.red, h4.red, h5.red, h6.red { +  h1.red, h2.red, h3.red, h4.red, h5.red, h6.red, h7.red {      text-align: center;      color: #ff0000;      margin-left: 5mm; @@ -1208,7 +1225,7 @@ module SiSU_XHTML_EPUB2_Format      margin-bottom: 20px;      margin-right: 15mm;    } -  h1.ruby, h2.ruby, h3.ruby, h4.ruby, h5.ruby, h6.ruby { +  h1.ruby, h2.ruby, h3.ruby, h4.ruby, h5.ruby, h6.ruby, h7.ruby {      text-align: center;      color: #990000;      margin-left: 5mm; @@ -2043,6 +2060,9 @@ output_epub_cont_seg.close      def seg_heading6        seg_heading_sub('p','bold',@txt)      end +    def seg_heading7 +      seg_heading_sub('p','bold',@txt) +    end      def dl #check :trailer        "<dl><b>#{@txt}</b> #{@trailer}</dl>"      end @@ -2149,6 +2169,9 @@ output_epub_cont_seg.close      def subtoc_lev6        subtoc_lev('h6','subtoc') if @txt      end +    def subtoc_lev7 +      subtoc_lev('h7','subtoc') if @txt +    end      def heading_sub(tag,attrib,txt)        txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')        %{ @@ -2177,6 +2200,9 @@ output_epub_cont_seg.close      def heading6        heading_sub('p','bold',@txt)      end +    def heading7 +      heading_sub('h7','bold',@txt) +    end      def navigation_heading4        %{<table summary="navigation segment heading 4" width=100% bgcolor="#08163f" border="0">  <tr><td align="center"> @@ -2195,6 +2221,11 @@ output_epub_cont_seg.close    #{@txt}  </p>}      end +    def navigation_heading7 +      %{<p class="bold"> +  #{@txt} +</p>} +    end      def navigation_center        %{<p class="centerbold">#{@txt}</p>}      end @@ -2238,6 +2269,9 @@ output_epub_cont_seg.close      def lev6        lev('h6','toc')      end +    def lev7 +      lev('h7','toc') +    end      def lev0 #docinfo        lev('h0','toc')      end diff --git a/lib/sisu/v5/xhtml_epub2_segments.rb b/lib/sisu/v5/xhtml_epub2_segments.rb index 917a4f92..98673c8f 100644 --- a/lib/sisu/v5/xhtml_epub2_segments.rb +++ b/lib/sisu/v5/xhtml_epub2_segments.rb @@ -146,7 +146,7 @@ WOK          SiSU_XHTML_EPUB2_Seg::Seg.new.cleanup # (((( added ))))          #### (((( END )))) ####        rescue -        SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -372,6 +372,8 @@ WOK              sto.seg_heading5            elsif dob.ln==6              sto.seg_heading6 +          elsif dob.ln==7 +            sto.seg_heading7            end          elsif dob.is==:para            if dob.indent \ @@ -486,7 +488,7 @@ WOK            end          end          if dob.is==:heading \ -        and dob.ln.to_s =~/^[56]/ +        and dob.ln.to_s =~/^[5-7]/            case dob.ln            when 5              format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,dob) @@ -494,6 +496,9 @@ WOK            when 6              format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,dob)              subtoc=format_seg.subtoc_lev6 #keep and make available, this is the subtoc +          when 7 +            format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,dob) +            subtoc=format_seg.subtoc_lev7 #keep and make available, this is the subtoc            end            @@seg_subtoc_array << subtoc          end diff --git a/lib/sisu/v5/xhtml_epub2_tune.rb b/lib/sisu/v5/xhtml_epub2_tune.rb index aa748cf6..c6d9f165 100644 --- a/lib/sisu/v5/xhtml_epub2_tune.rb +++ b/lib/sisu/v5/xhtml_epub2_tune.rb @@ -141,7 +141,7 @@ module SiSU_XHTML_EPUB2_Tune          end          SiSU_XHTML_EPUB2_Tune::Tune.new(@data,@md).output        rescue -        SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/xml_docbook5.rb b/lib/sisu/v5/xml_docbook5.rb index 8132a356..2a7f2fb0 100644 --- a/lib/sisu/v5/xml_docbook5.rb +++ b/lib/sisu/v5/xml_docbook5.rb @@ -83,12 +83,12 @@ module SiSU_XML_Docbook_Book          report          SiSU_XML_Docbook_Book::Source::Scroll.new(@ao_array,@md).songsheet        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure -        #SiSU_Env::CreateSite.new(@opt.cmd).cp_css -        #SiSU_Env::CreateSite.new(@opt.cmd).cp_base_images +        #SiSU_Env::CreateSite.new(@opt.selections.str).cp_css +        #SiSU_Env::CreateSite.new(@opt.selections.str).cp_base_images          Dir.chdir(@opt.f_pth[:pth])        end      end diff --git a/lib/sisu/v5/xml_dom.rb b/lib/sisu/v5/xml_dom.rb index a602eee3..fb7d3cb9 100644 --- a/lib/sisu/v5/xml_dom.rb +++ b/lib/sisu/v5/xml_dom.rb @@ -117,7 +117,7 @@ module SiSU_XML_DOM          end          SiSU_XML_DOM::Source::Songsheet.new(@particulars).songsheet        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -141,7 +141,7 @@ module SiSU_XML_DOM            end            SiSU_Rexml::Rexml.new(@md,@file.place_file.xml_dom.dir).xml if @md.opt.act[:maintenance][:set]==:on # test rexml parsing, comment out when not in use #debug          rescue -          SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +          SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do              __LINE__.to_s + ':' + __FILE__            end          ensure @@ -226,12 +226,15 @@ WOK  WOK          if lv==4            @copen[1]=true -          @copen[2]=@copen[3]=false +          @copen[2]=@copen[3]=@copen[4]=false          elsif lv==5            @copen[2]=true -          @copen[3]=false +          @copen[3]=@copen[4]=false          elsif lv==6            @copen[3]=true +          @copen[4]=false +        elsif lv==7 +          @copen[4]=true          end        end        def xml_structure(dob,type='norm') @@ -259,21 +262,24 @@ WOK              @cont[2]=false if @cont[2]              @cont[3]=false if @cont[3]              ####### attempt to close contents -            if @copen[3] # 6~ +            if @copen[4] # 4~ +              [4,3,2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" } +              @copen[1]=@copen[2]=@copen[3]=@copen[4]=false +            elsif @copen[3] # 3~                [3,2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }                @copen[1]=@copen[2]=@copen[3]=false -            elsif @copen[2] # 5~ +            elsif @copen[2] # 2~                [2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }                @copen[1]=@copen[2]=@copen[3]=false -            elsif @copen[1] # 4~ +            elsif @copen[1] # 1~                [1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }                @copen[1]=@copen[2]=@copen[3]=false              end              @@xml[:body] << "#{Ax[:tab]*y}</heading#{x}>" if @level[x]              @level[x]=false            end -        when 4..6 -          6.downto(lv) do |x| +        when 4..7 +          7.downto(lv) do |x|              if @level[x]==true                @xml_contents_close[x]=''              end @@ -284,42 +290,61 @@ WOK            case lv            when 4              @@xml[:body] << "#{Ax[:tab]*5}</content>" if @cont[1] -            if @copen[3]==true # 6~ +            if @copen[4]==true # 4~ +              [4,3,2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" } +            elsif @copen[3]==true # 3~                [3,2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" } -            elsif @copen[2]==true # 5~ +            elsif @copen[2]==true # 2~                [2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" } -            elsif @copen[1]==true # 4~ +            elsif @copen[1]==true # 1~                [1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }              end              @cont[1]=true            when 5 -            if @cont[2] \ +            if @cont[3] \ +            or @cont[2] \              or @cont[1]                @@xml[:body] << "#{Ax[:tab]*5}</content>"              end -            if @copen[3]==true  #6~ +            if @copen[4]==true  #4~ +              [4,3,2].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" } +            elsif @copen[3]==true  #3~                [3,2].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" } -            elsif @copen[2]==true #5~ +            elsif @copen[2]==true #2~                [2].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }              end              @cont[2]=true            when 6 -            if @cont[3] \ +            if @cont[4] \ +            or @cont[3] \              or @cont[2] \              or @cont[1]                @@xml[:body] << "#{Ax[:tab]*5}</content>"              end -            if @copen[3] #6{ +            if @copen[4] #4~ +              [4,3].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" } +            elsif @copen[3] #3~                [3].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }              end              @cont[3]=true +          when 7 +            if @cont[4] \ +            or @cont[3] \ +            or @cont[2] \ +            or @cont[1] +              @@xml[:body] << "#{Ax[:tab]*5}</content>" +            end +            if @copen[4] #4~ +              [4].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" } +            end +            @cont[4]=true            end          end          xml_el ||=''          xml_element(dob,xml_el,xml_content,type)          if lv            @level[lv]=true -          ((lv+1)..6).each { |x| @level[x]=false } +          ((lv+1)..7).each { |x| @level[x]=false }          end        end        def add_to_body(dob,type='norm') @@ -367,8 +392,8 @@ WOK          @level,@cont,@copen,@xml_contents_close=[],[],[],[]          @rcdc=false          type='norm' -        (0..6).each { |x| @cont[x]=@level[x]=false } -        (4..6).each { |x| @xml_contents_close[x]='' } +        (0..7).each { |x| @cont[x]=@level[x]=false } +        (4..7).each { |x| @xml_contents_close[x]='' }          xml_head          data.each do |dob|            @trans.char_enc.utf8(dob) if @sys.locale =~/utf-?8/i #% utf8 @@ -420,6 +445,10 @@ WOK                      type="heading_content_#{dob.lv}"                      xml_structure(dob,type)                      dob.obj=x.heading_body6 +                  elsif dob.ln==7 +                    type="heading_content_#{dob.lv}" +                    xml_structure(dob,type) +                    dob.obj=x.heading_body7                    end                  else                    dob.ocn @@ -486,7 +515,7 @@ WOK            end          end          @content_flag=true -        6.downto(4) do |x| +        7.downto(4) do |x|            y=x - 1; v=x - 3            if @level[x]==true #2004w36 bug fix? watch/test previous logic broke on free.for.all @coontent_flag introduced              if @content_flag==true diff --git a/lib/sisu/v5/xml_fictionbook2.rb b/lib/sisu/v5/xml_fictionbook2.rb index 74afc6ad..c7c54b30 100644 --- a/lib/sisu/v5/xml_fictionbook2.rb +++ b/lib/sisu/v5/xml_fictionbook2.rb @@ -82,7 +82,7 @@ module SiSU_XML_Fictionbook          report          SiSU_XML_Fictionbook::Source::Scroll.new(@ao_array,@md).songsheet        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/xml_format.rb b/lib/sisu/v5/xml_format.rb index 871ec487..fb2cff88 100644 --- a/lib/sisu/v5/xml_format.rb +++ b/lib/sisu/v5/xml_format.rb @@ -1115,6 +1115,9 @@ WOK      def heading_body6        heading_normal('h6','norm')      end +    def heading_body7 +      heading_normal('h7','norm') +    end      def title_header(tag,attrib)        %{  <div class="content"> @@ -1291,6 +1294,9 @@ WOK      def subtoc_lev6        subtoc_lev('h6','subtoc') if @txt      end +    def subtoc_lev7 +      subtoc_lev('h7','subtoc') if @txt +    end      #% para sisu      def header_sub(tag,attrib)        @txt=@txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ') @@ -1303,12 +1309,6 @@ WOK  </div>  }      end -    def header5 -      header_sub('p','bold') -    end -    def header6 -      header_sub('p','bold') -    end      def header4        %{  <div class="substance"> @@ -1320,6 +1320,15 @@ WOK  </div>  }      end +    def header5 +      header_sub('p','bold') +    end +    def header6 +      header_sub('p','bold') +    end +    def header7 +      header_sub('p','bold') +    end      def navigation_header4        %{<table summary="navigation segment header 4" width=100% bgcolor="#08163f" border="0">  <tr><td align="center"> @@ -1338,6 +1347,11 @@ WOK    #{@txt}  </p>}      end +    def navigation_header7 +      %{<p class="bold"> +  #{@txt} +</p>} +    end      def navigation_center        "<center>#{@txt}</center>"      end @@ -1381,6 +1395,10 @@ WOK      def lev6        lev('h6','toc')      end +    def lev7 +      lev('h7','toc') +      #lev('b','toc') +    end      def lev0 #docinfo        lev('h0','toc')      end @@ -1402,6 +1420,9 @@ WOK      def mini_lev6        lev('h6','minitoc')      end +    def mini_lev7 +      lev('h7','minitoc') +    end      def mini_lev0 #docinfo        lev('h0','minitoc')      end diff --git a/lib/sisu/v5/xml_odf_odt.rb b/lib/sisu/v5/xml_odf_odt.rb index 55c8d7ed..9598e189 100644 --- a/lib/sisu/v5/xml_odf_odt.rb +++ b/lib/sisu/v5/xml_odf_odt.rb @@ -111,13 +111,15 @@ module SiSU_XML_ODF_ODT              SiSU_Screen::Ansi.new(                @opt.act[:color_state][:set],                @opt.fns, -              "file://#{@md.file.output_path.odt.dir}/#{@md.file.base_filename.odt}" +              'file://' \ +              + @md.file.output_path.odt.dir + '/' \ +              + @md.file.base_filename.odt              ).flow            end          end          SiSU_XML_ODF_ODT::Source::Scroll.new(@particulars).songsheet        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -150,7 +152,7 @@ module SiSU_XML_ODF_ODT            unless (@md.opt.act[:verbose_plus][:set]==:on \            || @md.opt.act[:maintenance][:set]==:on)              if @env.processing_path.odt =~/od[ft]/ -              #p "rm -r #{@env.processing_path.odt}" if @md.opt.cmd =~/v/ +              #p "rm -r #{@env.processing_path.odt}" if @md.opt.selections.str =~/v/                FileUtils::rm_r(@env.processing_path.odf_pth)                #system("rm -r #{@env.processing_path.odt}")              end @@ -173,16 +175,19 @@ module SiSU_XML_ODF_ODT                if x =~/\S+/ then @n << x                end              end -          else              @n << n +          else                  @n << n            end          end        end        def odf_book_idx        if @md.book_idx -        idx_arr,idx_raw=[],SiSU_Particulars::CombinedSingleton.instance.get_idx_raw(@md.opt).raw_idx +        idx_arr=[] +        idx_raw=SiSU_Particulars::CombinedSingleton. +          instance.get_idx_raw(@md.opt).raw_idx          idx_raw.each do |x|            x=if x.is_a?(String) -            SiSU_XML_ODF_ODT_Format::FormatBookIndex.new(x).book_idx_bookmark +            SiSU_XML_ODF_ODT_Format::FormatBookIndex.new(x). +              book_idx_bookmark            else nil            end            idx_arr << x.strip if x.is_a?(String) @@ -191,7 +196,8 @@ module SiSU_XML_ODF_ODT        end        end        def odf_metadata -        @@odf[:metadata]=SiSU_Metadata::Summary.new(@md).odf.metadata +        @@odf[:metadata]=SiSU_Metadata::Summary.new(@md). +          odf.metadata        end        def odf_tail          manifest="#{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}" @@ -224,19 +230,22 @@ module SiSU_XML_ODF_ODT          @@docstart=false          if dob.use_ != :dummy            dob.tmp=dob.obj -          dob.obj=%{#{breakpage}<text:h text:style-name="H_#{dob.ln}" text:outline-level="#{dob.ln}">#{p_num[:set_ref]}#{set_bookmark_tag(dob)}#{dob.obj}#{p_num[:display]}</text:h>} +          dob.obj=%{#{breakpage}<text:h text:style-name="H_#{dob.ln}" text:outline-level="#{dob.ln}">} \ +          + %{#{p_num[:set_ref]}#{set_bookmark_tag(dob)}#{dob.obj}#{p_num[:display]}</text:h>}          else dob.tmp,dob.obj='',''          end          dob        end        def toc(dob,p_num) -        hardspace=(dob.lv =~/[A-C]/i) \ +        hardspace=(dob.lv =~/[A-D]/i) \          ? '<text:p text:style-name="Standard"/>'          : ''          toc_heading=dob.ocn \ -        ? %{<text:bookmark-ref text:reference-format="text" text:ref-name="#{dob.ocn}">#{dob.tmp}</text:bookmark-ref>} +        ? (%{<text:bookmark-ref text:reference-format="text" text:ref-name="#{dob.ocn}">} \ +          + %{#{dob.tmp}</text:bookmark-ref>})          : dob.tmp -        dob.obj=%{<text:h text:style-name="H_#{dob.ln}" text:outline-level="#{dob.ln}">#{toc_heading}</text:h>#{hardspace}} +        dob.obj=%{<text:h text:style-name="H_#{dob.ln}" text:outline-level="#{dob.ln}">} \ +        + %{#{toc_heading}</text:h>#{hardspace}}          dob        end        def image_src(i) @@ -253,7 +262,9 @@ module SiSU_XML_ODF_ODT                @md.opt.act[:color_state][:set],                "ERROR - image:",                %{"#{i}" missing}, -              "search locations: #{@env.path.image_source_include_local},#{@env.path.image_source_include_remote} and #{@env.path.image_source_include}" +              "search locations: #{@env.path.image_source_include_local}," \ +              + "#{@env.path.image_source_include_remote} and" \ +              + "#{@env.path.image_source_include}"              ).error2 unless @md.opt.act[:quiet][:set]==:on              nil            end @@ -271,7 +282,9 @@ module SiSU_XML_ODF_ODT              @md.opt.act[:color_state][:set],              "ERROR - image:",                %{"#{i}" missing}, -              "search locations: #{@env.path.image_source_include_local},#{@env.path.image_source_include_remote} and #{@env.path.image_source_include}" +              "search locations: #{@env.path.image_source_include_local}," \ +              + "#{@env.path.image_source_include_remote} and" \ +              + "#{@env.path.image_source_include}"            ).error2 unless @md.opt.act[:quiet][:set]==:on            nil          end @@ -280,8 +293,10 @@ module SiSU_XML_ODF_ODT          # copy image to od image directory (unless exists)          # divide pixel dimension by 37.79485 and retain 3 decimal places          m=img[1] -        i=/^(\S+?\.(?:png|jpg|gif))/.match(m).captures.join if m =~/^(\S+?\.(?:png|jpg|gif))/ -        c=/^\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"/.match(m).captures.join if m =~/^\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"/ +        i=/^(\S+?\.(?:png|jpg|gif))/.match(m).captures.join \ +          if m =~/^(\S+?\.(?:png|jpg|gif))/ +        c=/^\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"/.match(m).captures.join \ +          if m =~/^\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"/          w,h=/\s(\d+)x(\d+)/.match(m).captures if m =~/\s\d+x\d+/          w=(w.to_i/37.79485).to_s          h=(h.to_i/37.79485).to_s @@ -290,7 +305,10 @@ module SiSU_XML_ODF_ODT          image_source=image_src(i)          if image_source            if FileTest.file?("#{image_source}/#{i}") -            FileUtils::cp("#{image_source}/#{i}","#{@env.processing_path.odt}/Pictures/#{i}") +            FileUtils::cp( +              "#{image_source}/#{i}", +              "#{@env.processing_path.odt}/Pictures/#{i}" +            )            else STDERR.puts %{\t*WARN* did not find image - "#{image_source}/#{i}" [#{__FILE__}:#{__LINE__}]}            end          end @@ -325,7 +343,8 @@ module SiSU_XML_ODF_ODT        def text_link_odf(txt,url,trail)          txt=txt.gsub(/(\\\+)/,'+') #this is convoluted, and risky :-(          url=url.gsub(/(\\\+)/,'+') #this is convoluted, and risky :-( -        map_nametags=SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map +        map_nametags=SiSU_Particulars::CombinedSingleton. +          instance.get_map_nametags(@md).nametags_map          t=case url          when /^https?:/            %{<text:a xl:type="simple" xl:href="#{url}">#{txt.strip}</text:a>#{trail}} @@ -342,7 +361,8 @@ module SiSU_XML_ODF_ODT            end            t=map_nametags[url] \            && map_nametags[url][:segname] \ -          ? %{<text:a xl:type="simple" xl:href="#{@env.url.root}/#{@md.fnb}/#{map_nametags[url][:segname]}#{Sfx[:html]}##{url}">#{txt.strip}</text:a>#{trail}} +          ? (%{<text:a xl:type="simple" xl:href="#{@env.url.root}/#{@md.fnb}/#{map_nametags[url][:segname]}#{Sfx[:html]}##{url}">} \ +            + %{#{txt.strip}</text:a>#{trail}})            : %{#{txt.strip}#{trail}}          end          t @@ -359,7 +379,8 @@ module SiSU_XML_ODF_ODT              txt=txt.gsub(/([)(\]\[])/,"\\\\\\1").                gsub(/([+?*])/,"\\\\\\1") # problems with +              url=url.gsub(/([+?])/,"\\\\\\1") # problems with + -            dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:url_o]}#{url}#{Mx[:url_c]}/m,text_link_odf(txt,url,trail)). #make sure trailing ']' are not caught in url +            dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:url_o]}#{url}#{Mx[:url_c]}/m, +                text_link_odf(txt,url,trail)). #make sure trailing ']' are not caught in url                gsub(/\\([)(\]\[?])/,'\1') #clumsy fix            end            m=nil @@ -374,7 +395,8 @@ module SiSU_XML_ODF_ODT              txt=txt.gsub(/([)(\]\[])/,"\\\\\\1").                gsub(/([+?*])/,"\\\\\\1") # problems with +              url=url.gsub(/([+?])/,"\\\\\\1") # problems with + -            dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{url}#{Mx[:rel_c]}/m,text_link_odf_bookmark(txt,url,trail)). #make sure trailing ']' are not caught in url +            dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{url}#{Mx[:rel_c]}/m, +                text_link_odf_bookmark(txt,url,trail)). #make sure trailing ']' are not caught in url                gsub(/\\([)(\]\[?])/,'\1') #clumsy fix            end            m=nil @@ -387,7 +409,8 @@ module SiSU_XML_ODF_ODT            m.each do |i|              txt,url,trail=i[1],i[2]              txt=txt.gsub(/([)(\]\[])/,"\\\\\\1") -            dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{url}#{Mx[:rel_c]}/m,text_link_odf(txt,url,trail)). #make sure trailing ']' are not caught in url +            dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{url}#{Mx[:rel_c]}/m, +                text_link_odf(txt,url,trail)). #make sure trailing ']' are not caught in url                gsub(/\\([)(\]\[?])/,'\1') #clumsy fix            end            m=nil @@ -431,11 +454,13 @@ module SiSU_XML_ODF_ODT            @astx||=10000            @astxs||=20000            if str =~/#{Mx[:en_a_o]}\d+\s+/ -            str=str.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/,'<text:note text:id="ftn\1" text:note-class="footnote"><text:note-citation>\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>') +            str=str.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/, +              '<text:note text:id="ftn\1" text:note-class="footnote"><text:note-citation>\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>')            end            if str =~/#{Mx[:en_a_o]}([*]+)\s+/              a=$1.gsub(/([*])/,"\\\\\\1") -              str=str.gsub(/#{Mx[:en_a_o]}([*]+)\s+(.+?)#{Mx[:en_a_c]}/,%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>}) +              str=str.gsub(/#{Mx[:en_a_o]}([*]+)\s+(.+?)#{Mx[:en_a_c]}/, +                %{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})                @astxs+=1            end            if str=~/#{Mx[:en_a_o]}[*+]+\s/ @@ -444,7 +469,8 @@ module SiSU_XML_ODF_ODT                a=x[0].gsub(/([*+])/,"\\\\\\1")                str=group_clean(str)                str=footnote_urls(str) -              str=str.gsub(/#{Mx[:en_a_o]}(#{a})\s+(.+?)#{Mx[:en_a_c]}/,%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>}) +              str=str.gsub(/#{Mx[:en_a_o]}(#{a})\s+(.+?)#{Mx[:en_a_c]}/, +                %{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})                @astx+=1              end            end @@ -454,7 +480,8 @@ module SiSU_XML_ODF_ODT                a=x[0].gsub(/([*+])/,"\\\\\\1")                str=group_clean(str)                str=footnote_urls(str) -              str=str.gsub(/#{Mx[:en_b_o]}(#{a})\s+(.+?)#{Mx[:en_b_c]}/,%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>}) +              str=str.gsub(/#{Mx[:en_b_o]}(#{a})\s+(.+?)#{Mx[:en_b_c]}/, +                %{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})                @astx+=1              end            end @@ -495,7 +522,8 @@ module SiSU_XML_ODF_ODT          dob.obj.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/).each_with_index do |parablock,i|            set_ref=(i==0) ? "#{p_num[:set_ref]}#{set_bookmark_tag(dob)}" : ''            parablock=group_clean(parablock) -          parablock=parablock.gsub(/<text:a xl:type="simple" xl:href="(.+?)">/m,'<text:a xl:type="simple" xl:href="\1">'). +          parablock=parablock.gsub(/<text:a xl:type="simple" xl:href="(.+?)">/m, +              '<text:a xl:type="simple" xl:href="\1">').              gsub(/<(\/text:a)>/,'<\1>').              gsub(/<(text:note text:id=.+?)>/,'<\1>').              gsub(/<(text:p text:style-name="Footnote")>/,'<\1>'). @@ -519,13 +547,15 @@ module SiSU_XML_ODF_ODT          dob.obj.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/).each_with_index do |parablock,i|            set_ref=(i==0) ? "#{p_num[:set_ref]}#{set_bookmark_tag(dob)}" : ''            parablock=group_clean(parablock) -          parablock=parablock.gsub(/<text:a xl:type="simple" xl:href="(.+?)">/m,'<text:a xl:type="simple" xl:href="\1">'). +          parablock=parablock.gsub(/<text:a xl:type="simple" xl:href="(.+?)">/m, +              '<text:a xl:type="simple" xl:href="\1">').              gsub(/<(\/text:a)>/,'<\1>').              gsub(/<(text:note text:id=.+?)>/,'<\1>').              gsub(/<(text:p text:style-name="Footnote")>/,'<\1>').              gsub(/<(\/?text:(?:note-citation|note-body|note|p))>/,'<\1>')            parablock=footnote(parablock) -          parray << %{<text:p text:style-name="P_group">#{set_ref}#{parablock}</text:p>} if parablock =~/\S+/ +          parray << %{<text:p text:style-name="P_group">#{set_ref}#{parablock}</text:p>} \ +            if parablock =~/\S+/          end          dob.obj=parray.join \          + %{<text:p text:style-name="P_group">#{p_num[:display]}</text:p>} \ @@ -593,7 +623,7 @@ module SiSU_XML_ODF_ODT          if dob.is==:heading            @@odf[:body] << heading(dob,p_num).obj << break_line*2            if SiSU_Env::ProcessingSettings.new(md).build.toc? -            if dob.lv =~/[A-C1]/i +            if dob.lv =~/[A-D1]/i                @@odf[:toc] << toc(dob,p_num).obj              end            end @@ -623,8 +653,8 @@ module SiSU_XML_ODF_ODT          dir.path.odt_bld          @data_mod,@endnotes,@level,@cont,@copen,@odf_contents_close=Array.new(6){[]}          @rcdc=false -        (0..6).each { |x| @cont[x]=@level[x]=false } -        (4..6).each { |x| @odf_contents_close[x]='' } +        (0..7).each { |x| @cont[x]=@level[x]=false } +        (4..7).each { |x| @odf_contents_close[x]='' }          odf_tail #($1,$2)          bullet=image_src('bullet_09.png')          if bullet @@ -636,7 +666,7 @@ module SiSU_XML_ODF_ODT          odf_book_idx          odf_metadata          data.each do |dob| -          #p dob.obj if dob.obj =~safe_characters and @md.opt.cmd =~/V/ #KEEP +          #p dob.obj if dob.obj =~safe_characters and @md.opt.selections.str =~/V/ #KEEP            dob.obj='' if dob.obj =~/#{Mx[:lv_o]}\d+:.*?#{Mx[:lv_c]}.+?#{Mx[:pa_non_object_dummy_heading]}/ #fix Mx[:lv_o]            para_array=[]            dob.obj=dob.obj.gsub(/</,'<').gsub(/>/,'>') @@ -668,7 +698,8 @@ module SiSU_XML_ODF_ODT            dob.obj=dob.obj.gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>').              gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'<ins>\1</ins>').              gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'<cite>\1</cite>'). -            gsub(/#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}/,'<text:bookmark-start text:name="\1"/><text:bookmark-end text:name="\1"/>'). #check +            gsub(/#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}/, +              '<text:bookmark-start text:name="\1"/><text:bookmark-end text:name="\1"/>'). #check              gsub(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;').              gsub(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;').              gsub(/#{Mx[:mk_o]}[~-]##{Mx[:mk_c]}/,'') @@ -706,7 +737,8 @@ module SiSU_XML_ODF_ODT            wordlist=dob.obj.scan(/\S+/)            dob.obj=tidywords(wordlist).join(' ').strip            @rcdc=true if @rcdc==false \ -          and (dob.obj =~/~metadata/ or dob =~/#{Mx[:lv_o]}1:meta#{Mx[:lv_x]}\s*Document Information/) #fix Mx[:lv_o] +          and (dob.obj =~/~metadata/ \ +          or dob =~/#{Mx[:lv_o]}1:meta#{Mx[:lv_x]}\s*Document Information/) #fix Mx[:lv_o]            if dob.is !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ #check              if defined? dob.ocn and dob.ocn =~/\d+/                @p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(@make,dob.ocn) @@ -835,7 +867,8 @@ WOK          end          od.close          opendoc=@md.file.base_filename.odt #watch where output by language -        FileUtils::mkdir_p(@md.file.output_path.odt.dir) unless FileTest.directory?(@md.file.output_path.odt.dir) +        FileUtils::mkdir_p(@md.file.output_path.odt.dir) \ +          unless FileTest.directory?(@md.file.output_path.odt.dir)          if FileTest.directory?(@env.processing_path.odt) \          and SiSU_Env::SystemCall.new.zip            pwd=Dir.pwd diff --git a/lib/sisu/v5/xml_odf_odt_format.rb b/lib/sisu/v5/xml_odf_odt_format.rb index bfbd075c..90ca1cba 100644 --- a/lib/sisu/v5/xml_odf_odt_format.rb +++ b/lib/sisu/v5/xml_odf_odt_format.rb @@ -166,6 +166,8 @@ module SiSU_XML_ODF_ODT_Format      end      def heading_body6      end +    def heading_body7 +    end    end    class Table      @@tablehead,@@table_counter=0,0 #reinitialise on new file diff --git a/lib/sisu/v5/xml_sax.rb b/lib/sisu/v5/xml_sax.rb index 58719798..69dc39a3 100644 --- a/lib/sisu/v5/xml_sax.rb +++ b/lib/sisu/v5/xml_sax.rb @@ -116,7 +116,7 @@ module SiSU_XML_SAX          end          SiSU_XML_SAX::Source::Songsheet.new(@particulars).song        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure @@ -141,7 +141,7 @@ module SiSU_XML_SAX            end            SiSU_Rexml::Rexml.new(@md,@file.place_file.xml_sax.dir).xml if @md.opt.act[:maintenance][:set]==:on # test rexml parsing, comment out when not in use #debug          rescue -          SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do +          SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do              __LINE__.to_s + ':' + __FILE__            end          ensure @@ -333,8 +333,8 @@ WOK          @endnotes,@level,@cont,@copen,@xml_contents_close=[],[],[],[],[]          @rcdc=false          xml_head -        (0..6).each { |x| @cont[x]=@level[x]=false } -        (4..6).each { |x| @xml_contents_close[x]='' } +        (0..7).each { |x| @cont[x]=@level[x]=false } +        (4..7).each { |x| @xml_contents_close[x]='' }          data.each do |dob|            @trans.char_enc.utf8(dob) if @sys.locale =~/utf-?8/i #% utf8            dob=@trans.markup(dob) @@ -361,6 +361,7 @@ WOK                    when 4 then x.heading_body4                    when 5 then x.heading_body5                    when 6 then x.heading_body6 +                  when 7 then x.heading_body7                    end                  else                    if dob.is==:verse @@ -415,7 +416,7 @@ WOK              dob.obj=dob.obj.gsub(/#{Mx[:pa_o]}:\S+#{Mx[:pa_c]}/,'') if dob.obj            end          end -        6.downto(4) do |x| +        7.downto(4) do |x|            y=x - 1; v=x - 3            @@xml[:body] << "#{Ax[:tab]*5}</content>\n#{Ax[:tab]*y}</contents#{v}>" if @level[x]==true          end @@ -423,7 +424,7 @@ WOK            y=x - 1            @@xml[:body] << "#{Ax[:tab]*y}</heading#{x}>" if @level[x]==true          end -        #6.downto(1) { |x| y=x - 1; @@xml[:body] << "#{Ax[:tab]*y}</level #{x}>" if @level[x]==true } +        #7.downto(1) { |x| y=x - 1; @@xml[:body] << "#{Ax[:tab]*y}</level #{x}>" if @level[x]==true }        end        def pre          rdf=SiSU_XML_Tags::RDF.new(@md) diff --git a/lib/sisu/v5/xml_scaffold_structure_collapsed.rb b/lib/sisu/v5/xml_scaffold_structure_collapsed.rb index f36c937f..25a3dea0 100644 --- a/lib/sisu/v5/xml_scaffold_structure_collapsed.rb +++ b/lib/sisu/v5/xml_scaffold_structure_collapsed.rb @@ -79,7 +79,7 @@ module SiSU_XML_Scaffold_Structure_Collapse          @md,@ao_array=@particulars.md,@particulars.ao_array          SiSU_XML_Scaffold_Structure_Collapse::Source::Scroll.new(@ao_array,@md).songsheet        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/xml_scaffold_structure_sisu.rb b/lib/sisu/v5/xml_scaffold_structure_sisu.rb index 44344328..40df4fa8 100644 --- a/lib/sisu/v5/xml_scaffold_structure_sisu.rb +++ b/lib/sisu/v5/xml_scaffold_structure_sisu.rb @@ -79,7 +79,7 @@ module SiSU_XML_Scaffold_Structure_Sisu          @md,@ao_array=@particulars.md,@particulars.ao_array          SiSU_XML_Scaffold_Structure_Sisu::Source::Scroll.new(@ao_array,@md).songsheet        rescue -        SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do +        SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__          end        ensure diff --git a/lib/sisu/v5/zap.rb b/lib/sisu/v5/zap.rb index 75707247..487d1fa5 100644 --- a/lib/sisu/v5/zap.rb +++ b/lib/sisu/v5/zap.rb @@ -75,7 +75,7 @@ module SiSU_Zap          unless @opt.act[:quiet][:set]==:on            tell=SiSU_Screen::Ansi.new(              @opt.act[:color_state][:set], -            "Clean files related to processing #{@opt.cmd} ->", +            "Clean files related to processing #{@opt.selections.str} ->",              "#{@opt.fns} -> #{zap_path}"            )            tell.warn diff --git a/lib/sisu/v6/ao_doc_str.rb b/lib/sisu/v6/ao_doc_str.rb index 2a96abb7..67670a55 100644 --- a/lib/sisu/v6/ao_doc_str.rb +++ b/lib/sisu/v6/ao_doc_str.rb @@ -1223,7 +1223,7 @@ module SiSU_AO_DocumentStructureExtract      end      def structure_info        def lv -        %w[A~ B~ C~ D~ 1 2 3] +        %w[A~ B~ C~ D~ 1 2 3 4]        end        def possible_parents(child)          case child @@ -1234,6 +1234,7 @@ module SiSU_AO_DocumentStructureExtract          when /1/  then 'A~, B~, C~, D~'          when /2/  then '1'          when /3/  then '2' +        when /4/  then '3'          end        end        def possible_children(parent) @@ -1244,20 +1245,21 @@ module SiSU_AO_DocumentStructureExtract          when /D~/ then '1'          when /1/  then '2'          when /2/  then '3' -        when /3/  then 'none' +        when /3/  then '4' +        when /4/  then 'none'          end        end        self      end      def document_structure_check_info(node,node_parent,status=:ok) -      node_ln=/^([0-6])/.match(node)[1].to_i -      node_parent_ln=/^([0-6])/.match(node_parent)[1].to_i +      node_ln=/^([0-7])/.match(node)[1].to_i +      node_parent_ln=/^([0-7])/.match(node_parent)[1].to_i        if status==:error \        or @md.opt.act[:maintenance][:set]==:on          puts %{node: #{node},    parent node: #{node_parent}  #{status.upcase}}          if status==:error -          node_ln=/^([0-6])/.match(node)[1].to_i -          node_parent_ln=/^([0-6])/.match(node_parent)[1].to_i +          node_ln=/^([0-7])/.match(node)[1].to_i +          node_parent_ln=/^([0-7])/.match(node_parent)[1].to_i            STDERR.puts %{current level: #{structure_info.lv[node_ln]} (possible parent levels: #{structure_info.possible_parents(structure_info.lv[node_ln])})  parent level:  #{structure_info.lv[node_parent_ln]} (possible child levels: #{structure_info.possible_children(structure_info.lv[node_parent_ln])})  SKIPPED processing file: [#{@md.opt.lng}] "#{@md.fns}"} @@ -1297,12 +1299,12 @@ SKIPPED processing file: [#{@md.opt.lng}] "#{@md.fns}"        required_headers_present?        data=@data        @o_array=[] -      node=ocn=ocn_dv=ocn_sp=ocnh=ocnh0=ocnh1=ocnh2=ocnh3=ocnh4=ocnh5=ocnh6=ocno=ocnp=ocnt=ocnc=ocng=ocni=ocnu=0 # h heading, o other, t table, g group, i image +      node=ocn=ocn_dv=ocn_sp=ocnh=ocnh0=ocnh1=ocnh2=ocnh3=ocnh4=ocnh5=ocnh6=ocnh7=ocno=ocnp=ocnt=ocnc=ocng=ocni=ocnu=0 # h heading, o other, t table, g group, i image        regex_exclude_ocn_and_node = /#{Rx[:meta]}|^@\S+?:\s|^4~endnotes|^#{Mx[:lv_o]}4:endnotes#{Mx[:lv_c]}|^\^~ |<:e[:_]\d+?>|^<:\#|<:- |<[:!]!4|<hr width|#{Mx[:br_endnotes]}|\A\s*\Z/mi #ocn here #  added with Tune.code #ยก -      parent=node1=node2=node3=node4=node5=node6=nil +      parent=node1=node2=node3=node4=node5=node6=node7=nil        node0='0:0;0'        @collapsed_lv0=0 -      @lev_occurences={ a: 0, b: 0, c: 0, d: 0, l1: 0, l2: 0, l3: 0 } +      @lev_occurences={ a: 0, b: 0, c: 0, d: 0, l1: 0, l2: 0, l3: 0, l4: 0 }        data.each do |dob|          h={}          if (dob.obj !~ regex_exclude_ocn_and_node || dob.is==:code) \ @@ -1336,7 +1338,8 @@ SKIPPED processing file: [#{@md.opt.lng}] "#{@md.fns}"            or ln.to_s =~@md.lv3 \            or ln.to_s =~@md.lv4 \            or ln.to_s =~@md.lv5 \ -          or ln.to_s =~@md.lv6) +          or ln.to_s =~@md.lv6 \ +          or ln.to_s =~@md.lv7)              if not dob.obj =~/~#|-#/                ocnh+=1              end @@ -1523,7 +1526,7 @@ or this level should be level :B~ rather than #{dob.lv}}                  warning_incorrect_parent_level_or_level(dob.obj)                  puts "parent is level 4~ & this level #{dob.lv}  either parent should be level 5~ -or this level should be 5~ rather #{dob.lv}" #level 6 +or this level should be 5~ rather #{dob.lv}"                  document_structure_check_info(node6,node4,:error)                  @collapsed_lv6=@collapsed_lv4+1                  node4 @@ -1549,6 +1552,59 @@ or this level should be 5~ rather #{dob.lv}" #level 6                end                collapsed_level=@collapsed_lv6                node,ocn_sp=node6,"h#{ocnh}" +            elsif ln==7 \ +            or ln=~@md.lv7 +              @lev_occurences[:l4] += 1 +              if not dob.obj =~/~#|-#/ +                ocn_flag=true +                ocnh7+=1 +                node7="7:#{ocnh7};#{ocn}" +              else +                ocn_flag=false +                node7="7:0;0" +              end +              parent=if node6 +                document_structure_check_info(node7,node6) +                @collapsed_lv7=@collapsed_lv6+1 +                node5 +              elsif node5 +                warning_incorrect_parent_level_or_level(dob.obj) +                puts "parent is level 5~ & this level #{dob.lv} +either parent should be level 6~ +or this level should be 6~ rather #{dob.lv}" +                document_structure_check_info(node7,node5,:error) +                @collapsed_lv6=@collapsed_lv5+1 +                node5 +              elsif node4 +                warning_incorrect_parent_level_or_level(dob.obj) +                puts "parent is level 4~ & this level #{dob.lv} +either parent should be level 6~ +or this level should be 6~ rather #{dob.lv}" +                document_structure_check_info(node7,node4,:error) +                @collapsed_lv6=@collapsed_lv4+1 +                node4 +              elsif node3 +                warning_incorrect_parent_level_or_level(dob.obj) +                document_structure_check_info(node7,node3,:error) +                @collapsed_lv6=@collapsed_lv3+1 +                node3 +              elsif node2 +                warning_incorrect_parent_level_or_level(dob.obj) +                document_structure_check_info(node7,node2,:error) +                @collapsed_lv6=@collapsed_lv2+1 +                node2 +              elsif node1 +                warning_incorrect_parent_level_or_level(dob.obj) +                document_structure_check_info(node7,node1,:error) +                @collapsed_lv6=@collapsed_lv1+1 +                node1 +              else +                warning_incorrect_parent_level_or_level(dob.obj) +                document_structure_check_info(node7,node0,:error) +                node0 +              end +              collapsed_level=@collapsed_lv7 +              node,ocn_sp=node7,"h#{ocnh}"              end            else              unless @lev_occurences[:l1] > 0 diff --git a/lib/sisu/v6/constants.rb b/lib/sisu/v6/constants.rb index 2a5e124c..38f0449a 100644 --- a/lib/sisu/v6/constants.rb +++ b/lib/sisu/v6/constants.rb @@ -267,8 +267,8 @@ else    }  end  Db={ -  name_prefix:               "SiSU#{SiSU_is[:version_dir]}b_", -  name_prefix_db:            "sisu_#{SiSU_is[:version_dir]}b_", +  name_prefix:               "SiSU#{SiSU_is[:version_dir]}c_", +  name_prefix_db:            "sisu_#{SiSU_is[:version_dir]}c_",    col_title:                  800,    col_title_part:             400,    col_title_edition:           10, diff --git a/lib/sisu/v6/css.rb b/lib/sisu/v6/css.rb index a2c75d3c..9cdb2d76 100644 --- a/lib/sisu/v6/css.rb +++ b/lib/sisu/v6/css.rb @@ -236,7 +236,7 @@ WOK      margin-bottom: 0px;      text-indent: 0mm;    } -  p, h0, h1, h2, h3, h4, h5, h6 { +  p, h0, h1, h2, h3, h4, h5, h6, h7 {      display: block;      font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman;      font-size: 100%; @@ -447,7 +447,7 @@ WOK      padding-left: 0em;      text-indent: 0em;    } -  p, h0, h1, h2, h3, h4, h5, h6 { +  p, h0, h1, h2, h3, h4, h5, h6, h7 {      display: block;      font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman;      font-size: 100%; @@ -1307,18 +1307,18 @@ WOK      font-weight: bold;    } -  h0, h1, h2, h3, h4, h5, h6 { +  h0, h1, h2, h3, h4, h5, h6, h7 {      font-weight: bold;      line-height: 120%;      text-align: left;      margin-top: 20px;      margin-bottom: 10px;    } -  h4.norm, h5.norm, h6.norm { +  h4.norm, h5.norm, h6.norm, h7.norm {      margin-top: 10px;      margin-bottom: 0px;    } -  h1.center, h2.center, h3.center, h4.center, h5.center, h6.center { +  h1.center, h2.center, h3.center, h4.center, h5.center, h6.center, h7.center {      text-align: center;    }    h1 { font-size: 120%; } @@ -1327,6 +1327,7 @@ WOK    h4 { font-size: 105%; }    h5 { font-size: 100%; }    h6 { font-size: 100%; } +  h7 { font-size: 100%; }    h0 { font-size: 80%; }    h1.i {margin-left: 2em;} @@ -1418,6 +1419,8 @@ WOK    }    h6.banner {    } +  h7.banner { +  }    .toc {      font-weight: normal; @@ -1454,6 +1457,11 @@ WOK      font-size: 90%;      line-height: 110%;    } +  h7.toc { +    margin-left: 7em; +    font-size: 85%; +    line-height: 100%; +  }    .microtoc {      margin-top: 2px; @@ -1487,6 +1495,11 @@ WOK      font-weight: normal;      font-size: 90%;    } +  h7.microtoc { +    margin-left: 30mm; +    font-weight: normal; +    font-size: 85%; +  }    .subtoc {      margin-right: 34%; @@ -1504,6 +1517,12 @@ WOK      margin-top: 0px;      margin-bottom: 0px;    } +  h7.subtoc { +    margin-left: 4em; +    font-size: 70%; +    margin-top: 0px; +    margin-bottom: 0px; +  }    div.substance {      width: 100%; @@ -1629,15 +1648,19 @@ WOK      margin-left: 2em;      font-size: 85%;    } +  h7.minitoc { +    margin-left: 3em; +    font-size: 80%; +  }    h0.minitoc {      margin-left: 0em;      font-size: 90%;    } -  h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, p.c { +  h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, h7.c, p.c {      text-align: center    } -  h1.red, h2.red, h3.red, h4.red, h5.red, h6.red { +  h1.red, h2.red, h3.red, h4.red, h5.red, h6.red, h7.red {      text-align: center;      color: #ff0000;      margin-left: 5mm; @@ -1646,7 +1669,7 @@ WOK      margin-bottom: 20px;      margin-right: 15mm;    } -  h1.ruby, h2.ruby, h3.ruby, h4.ruby, h5.ruby, h6.ruby { +  h1.ruby, h2.ruby, h3.ruby, h4.ruby, h5.ruby, h6.ruby, h7.ruby {      text-align: center;      color: #990000;      margin-left: 5mm; @@ -1856,6 +1879,11 @@ WOK        font-weight: bold;        text-align: left;      } +    text[class|="h7"] { +      font-size: 110%; +      font-weight: bold; +      text-align: left; +    }      text[class|="indent0"] {        padding-left: 10%;      } @@ -2591,6 +2619,11 @@ WOK        font-weight: bold;        text-align: left;      } +    text[class|="h7"] { +      font-size: 110%; +      font-weight: bold; +      text-align: left; +    }      text[class|="indent0"] {        padding-left: 10%;      } @@ -3271,6 +3304,11 @@ WOK        font-weight: bold;        text-align: left;      } +    para.h7 { +      font-size: 110%; +      font-weight: bold; +      text-align: left; +    }      table {        margin-left: 5%;        display: block; @@ -3427,6 +3465,11 @@ WOK        font-weight: bold;        text-align: left;      } +    p.h7 { +      font-size: 150%; +      font-weight: bold; +      text-align: left; +    }      ocn {        display: block;        text-align: right; diff --git a/lib/sisu/v6/db_create.rb b/lib/sisu/v6/db_create.rb index 4d551ee2..55eab144 100644 --- a/lib/sisu/v6/db_create.rb +++ b/lib/sisu/v6/db_create.rb @@ -264,6 +264,7 @@ module SiSU_DbCreate              lev4            SMALLINT,              lev5            SMALLINT,              lev6            SMALLINT, +            lev7            SMALLINT,              en_a            SMALLINT NULL,              en_z            SMALLINT NULL,              en_a_asterisk   SMALLINT NULL, @@ -506,9 +507,9 @@ module SiSU_DbCreate            %{COMMENT ON COLUMN doc_objects.metadata_tid              IS 'tie to title in metadata_and_text';},            %{COMMENT ON COLUMN doc_objects.lev_an -            IS 'doc level A-D 1-6';}, +            IS 'doc level A-D 1-4';},            %{COMMENT ON COLUMN doc_objects.lev -            IS 'doc level 0-6 \d\~';}, +            IS 'doc level 0-7 \d\~';},            %{COMMENT ON COLUMN doc_objects.seg              IS 'segment name from level number 4 (lv 1)';},            %{COMMENT ON COLUMN doc_objects.ocn @@ -547,6 +548,8 @@ module SiSU_DbCreate              IS 'document structure, level number 5';},            %{COMMENT ON COLUMN doc_objects.lev6              IS 'document structure, level number 6';}, +          %{COMMENT ON COLUMN doc_objects.lev7 +            IS 'document structure, level number 7';},            %{COMMENT ON COLUMN doc_objects.t_of              IS 'document structure, type of object (object is of)';},            %{COMMENT ON COLUMN doc_objects.t_is diff --git a/lib/sisu/v6/db_import.rb b/lib/sisu/v6/db_import.rb index 5b44b173..54a2f434 100644 --- a/lib/sisu/v6/db_import.rb +++ b/lib/sisu/v6/db_import.rb @@ -118,7 +118,7 @@ module SiSU_DbImport          puts "#{__FILE__}:#{__LINE__}" if @opt.act[:maintenance][:set]==:on        end        @id_n =0 if @col[:lid].nil? or @col[:lid].to_s.empty? -      @col[:lv0]=@col[:lv1]=@col[:lv2]=@col[:lv3]=@col[:lv4]=@col[:lv5]=@col[:lv6]=0 +      @col[:lv0]=@col[:lv1]=@col[:lv2]=@col[:lv3]=@col[:lv4]=@col[:lv5]=@col[:lv6]=@col[:lv7]=0        @db=SiSU_Env::InfoDb.new        @pdf_fn=SiSU_Env::FileOp.new(@md).base_filename        @@dl ||=SiSU_Env::InfoEnv.new.digest.length @@ -390,6 +390,7 @@ module SiSU_DbImport                when /1/ then @col[:lv1]+=1                when /2/ then @col[:lv2]+=1                when /3/ then @col[:lv3]+=1 +              when /4/ then @col[:lv4]+=1                end                @col[:lev]=@col[:plaintext]=@col[:body]=''              elsif data.is==:heading \ @@ -480,7 +481,8 @@ module SiSU_DbImport                @col[:lev]=@col[:plaintext]=@col[:body]=''              elsif data.is==:heading \              && data.ln==6 -              txt,@col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.obj,data.ocn,data.lv,data.odv,data.osp,data.of,data.is,data.node,data.parent,'','' +              txt,       @col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]= +                data.obj,data.ocn,  data.lv,      data.odv,   data.osp,   data.of,    data.is,    data.node,  data.parent,  '',                 ''                @@seg_full=data.name if data.is==:heading && data.ln==6 && data.name #check data.name                @@seg ||='' #nil # watch                @col[:seg]=@@seg @@ -508,6 +510,37 @@ module SiSU_DbImport                t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file_maint)                @tuple_array << t.tuple                @col[:lev]=@col[:plaintext]=@col[:body]='' +            elsif data.is==:heading \ +            && data.ln==7 +              txt,       @col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]= +                data.obj,data.ocn,  data.lv,      data.odv,   data.osp,   data.of,    data.is,    data.node,  data.parent,  '',                 '' +              @@seg_full=data.name if data.is==:heading && data.ln==7 && data.name #check data.name +              @@seg ||='' #nil # watch +              @col[:seg]=@@seg +              @col[:lv7]+=1 +              @col[:lid]+=1 +              @col[:lev]=7 +              @hname=if @col[:seg] \ +              and not @col[:seg].to_s.empty? +                @@hname=@col[:seg].to_s +              else @@hname +              end +              @env=SiSU_Env::InfoEnv.new(@md.fns) +              @base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html" +              txt=endnotes(txt).extract_any +              body=SiSU_FormatShared::CSS_Format.new(@md,data).lev4_plus +              @col[:body]=special_character_escape(body) +              plaintext=@col[:body].dup +              plaintext=strip_markup(plaintext) +              @col[:plaintext]=clean_searchable_text(plaintext) +              book_idx=book_idx_hash_to_str(data.idx) +              @col[:book_idx]=clean_searchable_text(book_idx) +              @en_a,@en_z=@en[0].first,@en[0].last if @en[0] +              @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0] +              @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last if @en_pls[0] +              t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file_maint) +              @tuple_array << t.tuple +              @col[:lev]=@col[:plaintext]=@col[:body]=''                                                                                 #% :structure :layout :comment              elsif data.of==:structure \              || data.of==:layout \ diff --git a/lib/sisu/v6/db_load_tuple.rb b/lib/sisu/v6/db_load_tuple.rb index 46d29896..d1c3005b 100644 --- a/lib/sisu/v6/db_load_tuple.rb +++ b/lib/sisu/v6/db_load_tuple.rb @@ -69,8 +69,8 @@ module SiSU_DbTuple      def initialize(conn,col,opt,file_maint)        @conn,@col,@opt,@file_maint=conn,col,opt,file_maint        @col[:lev]=@col[:lev].to_i -      unless @col[:lev].inspect=~/^[0-6]/ \ -      or @col[:lev]==0..6 +      unless @col[:lev].inspect=~/^[0-7]/ \ +      or @col[:lev]==0..7          @col[:lev]=9        end        @col[:ocn]=0 unless @col[:ocn].inspect=~/\d+/ @@ -78,11 +78,11 @@ module SiSU_DbTuple      end      def tuple                                                                    #% import line        sql_entry=if @col[:en_a] -        "INSERT INTO doc_objects (lid, metadata_tid, lev, lev_an, clean, body, book_idx, ocn, ocnd, ocns, seg, lev0, lev1, lev2, lev3, lev4, lev5, lev6, en_a, en_z, t_of, t_is, node, parent, digest_clean, digest_all) " + -        "VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:lev_an]}', '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:book_idx]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv0]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:en_a]}', '#{@col[:en_z]}', '#{@col[:t_of]}', '#{@col[:t_is]}', '#{@col[:node]}', '#{@col[:parent]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');" +        "INSERT INTO doc_objects (lid, metadata_tid, lev, lev_an, clean, body, book_idx, ocn, ocnd, ocns, seg, lev0, lev1, lev2, lev3, lev4, lev5, lev6, lev7, en_a, en_z, t_of, t_is, node, parent, digest_clean, digest_all) " + +        "VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:lev_an]}', '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:book_idx]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv0]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:lv7]}', '#{@col[:en_a]}', '#{@col[:en_z]}', '#{@col[:t_of]}', '#{@col[:t_is]}', '#{@col[:node]}', '#{@col[:parent]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');"        else -        "INSERT INTO doc_objects (lid, metadata_tid, lev, lev_an, clean, body, book_idx, ocn, ocnd, ocns, seg, lev0, lev1, lev2, lev3, lev4, lev5, lev6, t_of, t_is, node, parent, digest_clean, digest_all) " + -        "VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:lev_an]}', '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:book_idx]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv0]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:t_of]}', '#{@col[:t_is]}', '#{@col[:node]}', '#{@col[:parent]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');" +        "INSERT INTO doc_objects (lid, metadata_tid, lev, lev_an, clean, body, book_idx, ocn, ocnd, ocns, seg, lev0, lev1, lev2, lev3, lev4, lev5, lev6, lev7, t_of, t_is, node, parent, digest_clean, digest_all) " + +        "VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:lev_an]}', '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:book_idx]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv0]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:lv7]}', '#{@col[:t_of]}', '#{@col[:t_is]}', '#{@col[:node]}', '#{@col[:parent]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');"        end        if @opt.act[:verbose_plus][:set]==:on          if @opt.act[:maintenance][:set]==:on @@ -97,7 +97,7 @@ module SiSU_DbTuple          end        end        if @opt.act[:verbose][:set]==:on -        if @col[:lev].inspect =~/[0-356]/ +        if @col[:lev].inspect =~/[0-35-7]/            lev=case @col[:lev].inspect            when /0/ then ':A'            when /1/ then ':B' @@ -105,10 +105,11 @@ module SiSU_DbTuple            when /3/ then ':D'            when /5/ then ' 2'            when /6/ then ' 3' +          when /7/ then ' 4'            end -          puts %{#{lev}>\t#{@col[:lv0]}\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:ocn]}\t#{@col[:node]}\t#{@col[:ocns]}} +          puts %{#{lev}>\t#{@col[:lv0]}\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:lv7]}\t#{@col[:ocn]}\t#{@col[:node]}\t#{@col[:ocns]}}          elsif @col[:lev].inspect =~/[4]/ -          puts %{ #{@cX.green}1>#{@cX.off}\t#{@col[:lv0]}\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:ocn]}\t#{@col[:node]}\t#{@col[:ocns]}\t#{@col[:seg]}} +          puts %{ #{@cX.green}1>#{@cX.off}\t#{@col[:lv0]}\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:lv7]}\t#{@col[:ocn]}\t#{@col[:node]}\t#{@col[:ocns]}\t#{@col[:seg]}}          end        end        sql_entry diff --git a/lib/sisu/v6/html_format.rb b/lib/sisu/v6/html_format.rb index 2f7b030e..b2476719 100644 --- a/lib/sisu/v6/html_format.rb +++ b/lib/sisu/v6/html_format.rb @@ -1065,6 +1065,9 @@ WOK      def heading_body6        heading_normal('h6','norm')      end +    def heading_body7 +      heading_normal('h7','norm') +    end      def title_heading(tag,attrib)        cl=(@make.build.html_minitoc?) \        ? 'content' @@ -1228,6 +1231,8 @@ WOK      end      def navigation_toc_lev6      end +    def navigation_toc_lev7 +    end      def endnote_seg_body(fn='')  #FIX                                                #url construction keep within single line... BUG WATCH 200408        fn='doc' if fn.to_s.empty? #you may wish to reconsider, sends to 'doc' where no segment info        %{ @@ -1265,6 +1270,9 @@ WOK      def subtoc_lev6        subtoc_lev('h6','subtoc') if @txt      end +    def subtoc_lev7 +      subtoc_lev('h7','subtoc') if @txt +    end      def heading_sub(tag,attrib)        @txt=@txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')        %{ @@ -1357,6 +1365,9 @@ WOK      def lev6        lev('h6','toc')      end +    def lev7 +      lev('h7','toc') +    end      def strip_endnotes(txt)        txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')        txt @@ -1389,6 +1400,10 @@ WOK        @txt=strip_endnotes(@txt)        lev('h6','minitoc')      end +    def mini_lev7 +      @txt=strip_endnotes(@txt) +      lev('h7','minitoc') +    end      def mini_lev0 #docinfo        lev('h1','minitoc')      end diff --git a/lib/sisu/v6/html_scroll.rb b/lib/sisu/v6/html_scroll.rb index 27caaff9..9d036469 100644 --- a/lib/sisu/v6/html_scroll.rb +++ b/lib/sisu/v6/html_scroll.rb @@ -88,11 +88,13 @@ module SiSU_HTML_Scroll        @rcdc=false        @scr={ body: [], metadata: [], owner_details: [] }        data.each do |dob| -        dob.obj=dob.obj.gsub(/#{@md.file.output_path.html_seg.rel_image}/m,@md.file.output_path.html_scroll.rel_image) +        dob.obj=dob.obj.gsub(/#{@md.file.output_path.html_seg.rel_image}/m, +          @md.file.output_path.html_scroll.rel_image)          if defined? dob.name and dob.name =~/^meta/ \          and dob.obj =~/Document Information/ -          dob.obj=dob.obj.gsub(/(Document Information(?: \(metadata\))?)/, -            '\1<a name="docinfo"></a>') +          dob.obj=dob.obj. +            gsub(/(Document Information(?: \(metadata\))?)/, +              '\1<a name="docinfo"></a>')          end          if dob.obj =~/^Metadata$/ \          and dob.lv =='B' @@ -108,7 +110,8 @@ module SiSU_HTML_Scroll            gsub(/href="#{Xx[:segment]}/m,'href="')          if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]})/            unless dob.is ==:code -            dob.obj=dob.obj.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ') +            dob.obj=dob.obj. +              gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')            end            if defined? dob.ocn              @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,dob.ocn) @@ -129,6 +132,8 @@ module SiSU_HTML_Scroll                sto.heading_body5              elsif dob.ln==6                sto.heading_body6 +            elsif dob.ln==7 +              sto.heading_body7              end            elsif dob.is==:break \            and dob.from==:markup @@ -162,7 +167,8 @@ module SiSU_HTML_Scroll              elsif dob.ln==4 \              and dob.obj=='Index'                sto.heading_body4 -              book_idx=SiSU_Particulars::CombinedSingleton.instance.get_idx_html(@md.opt).html_idx +              book_idx=SiSU_Particulars::CombinedSingleton. +                instance.get_idx_html(@md.opt).html_idx                book_idx.each do |y| #takes book index prepared for segments & strips segment identifying info                  y.gsub!(/<a href="\S+?\.html#(\d+)">(\1(?:-\d+)?)<\/a>/,                    '<a href="#\1">\2</a>') @@ -176,6 +182,10 @@ module SiSU_HTML_Scroll                unless dob.obj.empty?                  sto.heading_body6                end +            elsif dob.ln==7 +              unless dob.obj.empty? +                sto.heading_body7 +              end              end            elsif dob.is==:para              if dob.indent \ @@ -222,7 +232,9 @@ module SiSU_HTML_Scroll      def tails        scr_tail=[]        format_head_scroll=SiSU_HTML_Format::HeadToc.new(@md) -      scr_tail << format_head_scroll.scroll_tail << format_head_scroll.html_close +      scr_tail \ +      << format_head_scroll.scroll_tail \ +      << format_head_scroll.html_close        scr_tail      end    end diff --git a/lib/sisu/v6/html_segments.rb b/lib/sisu/v6/html_segments.rb index 941610ee..b410d0b0 100644 --- a/lib/sisu/v6/html_segments.rb +++ b/lib/sisu/v6/html_segments.rb @@ -67,7 +67,8 @@ module SiSU_HTML_Seg    require_relative 'shared_metadata'                    # shared_metadata.rb    class Output      def initialize(md,outputfile,seg,minitoc,type='') -      @md,@output_seg_file,@seg,@minitoc,@type=md,outputfile,seg,minitoc,type +      @md, @output_seg_file,@seg,@minitoc,@type= +        md,outputfile,      seg,minitoc,  type        @title_banner_=SiSU_Env::CreateSite.new(@md.opt).html_seg_title_banner?        @file=SiSU_Env::FileOp.new(@md)        @make=SiSU_Env::ProcessingSettings.new(@md) @@ -79,59 +80,97 @@ module SiSU_HTML_Seg        if @seg[:title] =~/\S/          filename_seg=[]          if @make.build.html_top_band? -          filename_seg << @seg[:title] << @seg[:tocband_banner] +          filename_seg \ +          << @seg[:title] \ +          << @seg[:tocband_banner]          else -          filename_seg << @seg[:title] +          filename_seg \ +          << @seg[:title]          end          if @type=='endnotes'            @seg[:headings]=[]            format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)            if @title_banner_ -            @seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author) +            @seg[:headings] \ +            << format_head_seg. +              title_banner(@md.title.main,@md.title.sub,@author)            end            txt_obj={ txt: 'Endnotes', ocn_display: '' }            format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) -          @seg[:headings] << format_seg.title_heading1 -          filename_seg << @seg[:heading_endnotes] << @minitoc << @seg[:headings] << %{\n<div class="#{@cl}">\n} << @seg[:endnote_all] << '</div>' # << '</div>' +          @seg[:headings] \ +          << format_seg.title_heading1 +          filename_seg \ +          << @seg[:heading_endnotes] \ +          << @minitoc << @seg[:headings] \ +          << %{\n<div class="#{@cl}">\n} \ +          << @seg[:endnote_all] \ +          << '</div>' # << '</div>'          elsif @type=='idx'            @seg[:headings]=[]            format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)            if @title_banner_ -            @seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author) +            @seg[:headings] \ +            << format_head_seg. +              title_banner(@md.title.main,@md.title.sub,@author)            end            txt_obj={ txt: 'Index', ocn_display: '' }            format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)            @seg[:headings] << format_seg.title_heading1 -          filename_seg << @seg[:heading_idx] << @minitoc << @seg[:headings] << %{\n<div class="#{@cl}">\n} << @seg[:idx] << '</div>' # << '</div>' +          filename_seg \ +          << @seg[:heading_idx] \ +          << @minitoc << @seg[:headings] \ +          << %{\n<div class="#{@cl}">\n} \ +          << @seg[:idx] \ +          << '</div>' # << '</div>'          elsif @type=='metadata'            metadata=SiSU_Metadata::Summary.new(@md).xhtml_display.metadata            @seg[:headings]=[]            format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)            if @title_banner_ -            @seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author) +            @seg[:headings] \ +            << format_head_seg. +              title_banner(@md.title.main,@md.title.sub,@author)            end            txt_obj={ txt: 'Metadata', ocn_display: '' }            format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)            @seg[:headings] << format_seg.title_heading1 -          filename_seg << @seg[:heading_idx] << @minitoc << @seg[:headings] << %{\n<div class="#{@cl}">\n} << metadata << '</div>' # << '</div>' +          filename_seg \ +          << @seg[:heading_idx] \ +          << @minitoc \ +          << @seg[:headings] \ +          << %{\n<div class="#{@cl}">\n} \ +          << metadata \ +          << '</div>' # << '</div>'          else            if @make.build.html_top_band? -            filename_seg << @minitoc << @seg[:headings] << @seg[:main] << "\n</div>\n" +            filename_seg \ +            << @minitoc \ +            << @seg[:headings] \ +            << @seg[:main] \ +            << "\n</div>\n"            else -            filename_seg << @minitoc << @seg[:main] << "\n</div>\n" +            filename_seg \ +            << @minitoc \ +            << @seg[:main] \ +            << "\n</div>\n"            end          end          filename_seg <<=if @make.build.html_top_band? -          @seg[:tail] << @seg[:tocband_bannerless] << @seg[:credits] +          @seg[:tail] \ +          << @seg[:tocband_bannerless] \ +          << @seg[:credits]          else -          @seg[:tail] << @seg[:credits] +          @seg[:tail] \ +          << @seg[:credits]          end          filename_seg=filename_seg.flatten.compact #watch          filename_seg.each do |str|            unless str =~/\A\s*\Z/              str=str.strip. -              gsub(Xx[:html_relative2],@file.path_rel_links.html_seg_2). -              gsub(Xx[:html_relative1],@file.path_rel_links.html_seg_1) +              gsub(Xx[:html_relative2], +                @file.path_rel_links.html_seg_2). +              gsub(Xx[:html_relative1], +                @file.path_rel_links.html_seg_1)              @output_seg_file << str            end          end @@ -146,7 +185,17 @@ module SiSU_HTML_Seg      @@loop_count=@@seg_total=@@tracker=0      @@is4=@@is3=@@is2=@@is1=@@is0=0      @@heading0=@@heading1=@@heading2=@@heading3=@@heading4=0 -    @@seg[:tocband_banner],@@seg[:tocband_bannerless],@@seg[:title],@@seg[:headings],@@seg[:main],@@seg[:idx],@@seg[:tail],@@seg[:credits],@@seg_subtoc_array,@@seg_endnotes_array,@@seg[:endnote_all]=Array.new(11){[]} +    @@seg[:tocband_banner], +      @@seg[:tocband_bannerless], +      @@seg[:title],@@seg[:headings], +      @@seg[:main], +      @@seg[:idx], +      @@seg[:tail], +      @@seg[:credits], +      @@seg_subtoc_array, +      @@seg_endnotes_array, +      @@seg[:endnote_all]= +      Array.new(11){[]}      @@seg[:heading_endnotes]=''      @@tablehead,@@number_of_cols=0,0      @@dp,@@segtocband=nil,nil @@ -192,7 +241,8 @@ module SiSU_HTML_Seg        idx_html=nil        if @md.book_idx          #my_make_source_file=SiSU_Env::CreateFile.new(@md.fns) -        idx_html=SiSU_Particulars::CombinedSingleton.instance.get_idx_html(@md.opt).html_idx +        idx_html=SiSU_Particulars::CombinedSingleton. +          instance.get_idx_html(@md.opt).html_idx          idx_html.each {|x| @@seg[:idx] << x }          @@seg[:heading_idx]=''        end @@ -215,7 +265,8 @@ module SiSU_HTML_Seg            @@seg_name.length          ).segmented        end -      map_nametags=SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map #p map_nametags +      map_nametags=SiSU_Particulars::CombinedSingleton. +        instance.get_map_nametags(@md).nametags_map #p map_nametags        data.each do |dob|          if defined? dob.obj \          and dob.obj =~/href="#{Xx[:segment]}#+\S+?"/ @@ -227,10 +278,12 @@ module SiSU_HTML_Seg                lng=(inf.output_dir_structure.by_language_code?) \                ? ''                : '.' + @md.opt.lng -              dob.obj.sub!(/href="#{Xx[:segment]}#+(\S+?)"/,%{href="#{map_nametags[m][:segname]}#{lng}#{Sfx[:html]}#\\1"}) +              dob.obj.sub!(/href="#{Xx[:segment]}#+(\S+?)"/, +                %{href="#{map_nametags[m][:segname]}#{lng}#{Sfx[:html]}#\\1"})              else                p "NOT FOUND name_tags: #{m}" -              dob.obj.sub!(/href="#{Xx[:segment]}#+(\S+?)"/,%{href="#\\1"}) # not satisfactory +              dob.obj.sub!(/href="#{Xx[:segment]}#+(\S+?)"/, +                %{href="#\\1"}) # not satisfactory              end            end          end @@ -281,7 +334,8 @@ module SiSU_HTML_Seg                if tracking != 0                  @file=SiSU_Env::FileOp.new(@md)                  unless FileTest.directory?(@file.output_path.html_seg.dir) -                  FileUtils::mkdir_p(@file.output_path.html_seg.dir) if File.writable?("#{@file.output_path.base.dir}/.") +                  FileUtils::mkdir_p(@file.output_path.html_seg.dir) \ +                    if File.writable?("#{@file.output_path.base.dir}/.")                  end                  SiSU_HTML_Seg::Seg.new(@md).tail                  fnh={ @@ -357,7 +411,7 @@ module SiSU_HTML_Seg        && (@make.build.html_navigation_bar?)          x=if (dob.is==:heading \          || dob.is==:heading_insert) \ -        && (dob.ln.to_s =~/^[0-6]/) +        && (dob.ln.to_s =~/^[0-7]/)            x=if @@tracker < @@seg_total-1              format_head_seg.dot_control_pre_next            else @@ -387,10 +441,14 @@ module SiSU_HTML_Seg        @p_num ||= ''        if @@is0==1          @author=%{<b>#{@md.author}</b>\n} if @md.author.to_s =~/\S/ -        @@seg[:tocband_banner] << format_head_seg.navigation_band(@@segtocband,@@seg[:dot_nav]) -        @@seg[:tocband_bannerless] << '<br />' << format_head_seg.navigation_band_bottom(@@segtocband,@@seg[:dot_nav]) +        @@seg[:tocband_banner] \ +        << format_head_seg.navigation_band(@@segtocband,@@seg[:dot_nav]) +        @@seg[:tocband_bannerless] \ +        << '<br />' \ +        << format_head_seg.navigation_band_bottom(@@segtocband,@@seg[:dot_nav])          if @title_banner_ -          @@seg[:headings] << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author).gsub(clean,'') +          @@seg[:headings] \ +          << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author).gsub(clean,'')          end          ocn=(@@heading0[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \          ? $1 @@ -398,8 +456,10 @@ module SiSU_HTML_Seg          @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)          txt_obj={ txt: @@heading0, ocn_display: @p_num.ocn_display }          format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) -        @@seg[:headings] << format_seg.title_heading0.gsub(clean,'') -        @@heading0=@@heading0.gsub(/ <a name="-[\d*+]+" href="#_[\d*+]+"> <sup>[\d*+]+<\/sup> <\/a>/,'') +        @@seg[:headings] \ +        << format_seg.title_heading0.gsub(clean,'') +        @@heading0=@@heading0. +          gsub(/ <a name="-[\d*+]+" href="#_[\d*+]+"> <sup>[\d*+]+<\/sup> <\/a>/,'')        end        if @@is1==1          heading1=@@heading1 @@ -409,8 +469,10 @@ module SiSU_HTML_Seg          @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)          txt_obj={ txt: heading1, ocn_display: @p_num.ocn_display }          format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) -        @@seg[:headings] << format_seg.title_heading1.gsub(clean,'') -        @@heading1=@@heading1.gsub(/ <a name="-[\d*+]+" href="#_[\d*+]+"> <sup>[\d*+]+<\/sup> <\/a>/,'') +        @@seg[:headings] \ +        << format_seg.title_heading1.gsub(clean,'') +        @@heading1=@@heading1. +          gsub(/ <a name="-[\d*+]+" href="#_[\d*+]+"> <sup>[\d*+]+<\/sup> <\/a>/,'')        end        if @@is2==1          heading2=@@heading2 @@ -420,8 +482,10 @@ module SiSU_HTML_Seg          @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)          txt_obj={ txt: heading2, ocn_display: @p_num.ocn_display }          format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) -        @@seg[:headings] << format_seg.title_heading2.gsub(clean,'') -        @@heading2=@@heading2.gsub(/ <a name="-[\d*+]+" href="#_[\d*+]+"> <sup>[\d*+]+<\/sup> <\/a>/,'') +        @@seg[:headings] \ +        << format_seg.title_heading2.gsub(clean,'') +        @@heading2=@@heading2. +          gsub(/ <a name="-[\d*+]+" href="#_[\d*+]+"> <sup>[\d*+]+<\/sup> <\/a>/,'')        end        if @@is3==1          heading3=@@heading3 @@ -431,8 +495,10 @@ module SiSU_HTML_Seg          @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)          txt_obj={ txt: heading3, ocn_display: @p_num.ocn_display }          format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) -        @@seg[:headings] << format_seg.title_heading3.gsub(clean,'') -        @@heading3=@@heading3.gsub(/ <a name="-[\d*+]+" href="#_[\d*+]+"> <sup>[\d*+]+<\/sup> <\/a>/,'') +        @@seg[:headings] \ +        << format_seg.title_heading3.gsub(clean,'') +        @@heading3=@@heading3. +          gsub(/ <a name="-[\d*+]+" href="#_[\d*+]+"> <sup>[\d*+]+<\/sup> <\/a>/,'')        end        if @@is4==1          heading4=@@heading4 @@ -442,7 +508,8 @@ module SiSU_HTML_Seg          @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)          txt_obj={ txt: heading4, ocn_display: @p_num.ocn_display }          format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) -        @@seg[:headings] << format_seg.title_heading4.gsub(clean,'') +        @@seg[:headings] \ +        << format_seg.title_heading4.gsub(clean,'')        end        @@tracker=@@tracker+1      end @@ -467,6 +534,8 @@ module SiSU_HTML_Seg                sto.seg_heading5              elsif dob.ln==6                sto.seg_heading6 +            elsif dob.ln==7 +              sto.seg_heading6              end            elsif dob.is==:para              if dob.indent \ @@ -589,7 +658,7 @@ module SiSU_HTML_Seg            end          end          if dob.is==:heading \ -        && (dob.ln.to_s =~/^[56]/) +        && (dob.ln.to_s =~/^[5-7]/)            case dob.ln            when 5              txt_obj={ txt: dob.obj.strip, ocn: dob.ocn } @@ -599,6 +668,10 @@ module SiSU_HTML_Seg              txt_obj={ txt: dob.obj.strip, ocn: dob.ocn }              format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)              subtoc=format_seg.subtoc_lev6 #keep and make available, this is the subtoc +          when 7 +            txt_obj={ txt: dob.obj.strip, ocn: dob.ocn } +            format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj) +            subtoc=format_seg.subtoc_lev7 #keep and make available, this is the subtoc            end            @@seg_subtoc_array << subtoc          end diff --git a/lib/sisu/v6/hub_options.rb b/lib/sisu/v6/hub_options.rb index 09559507..acd95612 100644 --- a/lib/sisu/v6/hub_options.rb +++ b/lib/sisu/v6/hub_options.rb @@ -1117,11 +1117,11 @@ end            { bool: false, set: :na }          end          act[:xml_sax]=(select_arr.inspect \ -        =~/"--xml-sax"/) \ +        =~/"--xml-sax"|"--sax"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na }          act[:xml_dom]=(select_arr.inspect \ -        =~/"--xml-dom"/) \ +        =~/"--xml-dom"|"--dom"/) \          ? { bool: true, set: :on }          : { bool: false, set: :na }          act[:xml_docbook_book]=(select_arr.inspect \ diff --git a/lib/sisu/v6/texpdf.rb b/lib/sisu/v6/texpdf.rb index 42e8383f..9861a5b5 100644 --- a/lib/sisu/v6/texpdf.rb +++ b/lib/sisu/v6/texpdf.rb @@ -648,6 +648,8 @@ module SiSU_TeX                tst.heading_level_2              when 6                tst.heading_level_3 +            when 7 +              tst.heading_level_4              else dob              end            when :heading_insert diff --git a/lib/sisu/v6/texpdf_format.rb b/lib/sisu/v6/texpdf_format.rb index ba99efb7..95764b60 100644 --- a/lib/sisu/v6/texpdf_format.rb +++ b/lib/sisu/v6/texpdf_format.rb @@ -323,6 +323,9 @@ module SiSU_TeX_Pdf      def heading_level_3        heading_sublevels(@dob)      end +    def heading_level_4 +      heading_sublevels(@dob) +    end      def hang        case @dob.indent        when /0/ diff --git a/lib/sisu/v6/txt_plain.rb b/lib/sisu/v6/txt_plain.rb index 69008276..fb39de37 100644 --- a/lib/sisu/v6/txt_plain.rb +++ b/lib/sisu/v6/txt_plain.rb @@ -254,6 +254,9 @@ WOK            def l6              '.'            end +          def l7 +            '.' +          end            self          end          def bold @@ -402,6 +405,9 @@ WOK              end            when 5 then wrapped.upcase << break_line << decorate.heading_underscore.l5*times + p_num << break_line*2            when 6 then wrapped.upcase << break_line << decorate.heading_underscore.l6*times + p_num << break_line*2 +          when 7 +            wrapped.upcase << break_line << decorate.heading_underscore.l7*times + p_num << break_line*2 +          #when 7 then wrapped.upcase << break_line << decorate.heading_underscore.l7*times + p_num << break_line*2            end          else            @plaintext[:body] << wrapped + p_num << break_line # main text, contents, body KEEP @@ -419,7 +425,9 @@ WOK          if make.build.plaintext_ocn?            if defined? dob.ocn \            and dob.ocn.is_a?(Fixnum) -            (defined? dob.ocn) ? "\n#{Dx[:ocn_o]}#{dob.ocn}#{Dx[:ocn_c]}" : '' +            (defined? dob.ocn) \ +            ? "\n#{Dx[:ocn_o]}#{dob.ocn}#{Dx[:ocn_c]}" \ +            : ''            else ''            end          else '' @@ -428,8 +436,8 @@ WOK        def markup(data)                                                       # Used for major markup instructions          SiSU_Env::InfoEnv.new(@md.fns)          @data_mod,@endnotes,@level,@cont,@copen,@plaintext_contents_close=Array.new(6){[]} -        (0..6).each { |x| @cont[x]=@level[x]=false } -        (4..6).each { |x| @plaintext_contents_close[x]='' } +        (0..7).each { |x| @cont[x]=@level[x]=false } +        (4..7).each { |x| @plaintext_contents_close[x]='' }          plaintext_tail #($1,$2)          plaintext_metadata          table_message='[table omitted, see other document formats]' diff --git a/lib/sisu/v6/xhtml.rb b/lib/sisu/v6/xhtml.rb index ee19a12e..409a2b6c 100644 --- a/lib/sisu/v6/xhtml.rb +++ b/lib/sisu/v6/xhtml.rb @@ -310,8 +310,8 @@ WOK          @rcdc=false          @level,@cont,@copen,@xml_contents_close=[],[],[],[]          xml_head -        (0..6).each { |x| @cont[x]=@level[x]=false } -        (4..6).each { |x| @xml_contents_close[x]='' } +        (0..7).each { |x| @cont[x]=@level[x]=false } +        (4..7).each { |x| @xml_contents_close[x]='' }          data.each do |dob|            dob=@trans.char_enc.utf8(dob) if @sys.locale =~/utf-?8/i #% utf8            dob=@trans.markup(dob) @@ -337,6 +337,7 @@ WOK                  when 4 then x.heading_body4                  when 5 then x.heading_body5                  when 6 then x.heading_body6 +                when 7 then x.heading_body7                  end                else                  if dob.is ==:verse diff --git a/lib/sisu/v6/xhtml_epub2.rb b/lib/sisu/v6/xhtml_epub2.rb index 0e65b469..9ab7c6ec 100644 --- a/lib/sisu/v6/xhtml_epub2.rb +++ b/lib/sisu/v6/xhtml_epub2.rb @@ -268,6 +268,7 @@ module SiSU_XHTML_EPUB2                lv_name='section_a' + @s_a_no.to_s                @nav_no+=1                @nav_no2=@nav_no +              @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4] @@ -275,7 +276,8 @@ module SiSU_XHTML_EPUB2                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[1]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[0] -              @ncxo[0],@ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=true,false,false,false,false,false,false +              @ncxo[0],@ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= +                true,  false,   false,   false,   false,   false,   false,   false                @epub.sections(dob_toc,lv_name)                if @level_a_first_occurrence \                && @make.build.toc? @@ -293,13 +295,15 @@ module SiSU_XHTML_EPUB2                lv_name='section_b' + @s_b_no.to_s                @nav_no+=1                @nav_no2=@nav_no +              @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[1] -              @ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=true,false,false,false,false,false +              @ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= +                true,  false,   false,   false,   false,   false,   false                @epub.sections(dob_toc,lv_name)                @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc                md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) @@ -311,12 +315,14 @@ module SiSU_XHTML_EPUB2                lv_name='section_c' + @s_c_no.to_s                @nav_no+=1                @nav_no2=@nav_no +              @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2] -              @ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=true,false,false,false,false +              @ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= +                true,  false,   false,   false,   false,   false                @epub.sections(dob_toc,lv_name)                @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc                md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) @@ -328,11 +334,13 @@ module SiSU_XHTML_EPUB2                lv_name='section_d' + @s_d_no.to_s                @nav_no+=1                @nav_no3=@nav_no +              @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3] -              @ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=true,false,false,false +              @ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= +                true,  false,   false,   false,   false                @epub.sections(dob_toc,lv_name)                @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc                md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) @@ -344,10 +352,12 @@ module SiSU_XHTML_EPUB2                lv_name=dob_toc.name                @nav_no+=1                @dob_name=dob.name +              @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4] -              @ncxo[4],@ncxo[5],@ncxo[6]=true,false,false +              @ncxo[4],@ncxo[5],@ncxo[6],@ncxo[7]= +                true,  false,   false,   false                @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc                md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name)                md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) @@ -358,9 +368,11 @@ module SiSU_XHTML_EPUB2                hashtag='#o' + dob_toc.ocn.to_s                lv_name=@dob_name                @nav_no+=1 +              @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5] -              @ncxo[5],@ncxo[6]=true,false +              @ncxo[5],@ncxo[6],@ncxo[7]= +                true,  false, false                @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name,hashtag) if dob_toc                md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name,hashtag)                md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name,hashtag) @@ -371,13 +383,27 @@ module SiSU_XHTML_EPUB2                hashtag='#o' + dob_toc.ocn.to_s                lv_name=@dob_name                @nav_no+=1 +              @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7]                @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6] -              @ncxo[6]=true +              @ncxo[6],@ncxo[7]= +                true,  false                @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name,hashtag) if dob_toc                md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name,hashtag)                md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name,hashtag)                md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name,hashtag)                SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_6 +            when 7 +              @ncx_cls=[] +              hashtag='#o' + dob_toc.ocn.to_s +              lv_name=@dob_name +              @nav_no+=1 +              @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[7] +              @ncxo[7]=true +              @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name,hashtag) if dob_toc +              md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name,hashtag) +              md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name,hashtag) +              md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name,hashtag) +              SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_7              else nil              end              toc.each do |k,d| @@ -594,6 +620,27 @@ module SiSU_XHTML_EPUB2          end          toc        end +      def level_7 +        dob=@data +        linkname=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'').strip +        ocn=dob.ocn +        toc={} +        if ocn \ +        and ocn !~/#/ +          p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn) +          lnk_n_txt=%{  <a href="#{@@seg_url}#{Sfx[:epub_xhtml]}#o#{ocn}"> +  #{linkname} +</a>} +          txt_obj={ txt: lnk_n_txt } +          format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) +          toc[:seg]=format_toc.lev7 +          title=%{#{p_num.goto}#{linkname}</a>} +          txt_obj={ txt: title } +          format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) +          toc[:scr]=format_toc.lev7 +        end +        toc +      end      end      class ScrollHeadAndSegToc < Toc        def initialize(md='',toc='',links_guide_toc='') diff --git a/lib/sisu/v6/xhtml_epub2_format.rb b/lib/sisu/v6/xhtml_epub2_format.rb index 626eb79f..aba5b761 100644 --- a/lib/sisu/v6/xhtml_epub2_format.rb +++ b/lib/sisu/v6/xhtml_epub2_format.rb @@ -162,7 +162,7 @@ module SiSU_XHTML_EPUB2_Format      padding-left: 0em;      text-indent: 0mm;    } -  p, h0, h1, h2, h3, h4, h5, h6 { +  p, h0, h1, h2, h3, h4, h5, h6, h7 {      display: block;      font-family: verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman;      font-size: 100%; @@ -992,18 +992,18 @@ module SiSU_XHTML_EPUB2_Format      font-weight: bold;    } -  h0, h1, h2, h3, h4, h5, h6 { +  h0, h1, h2, h3, h4, h5, h6, h7 {      font-weight: bold;      line-height: 120%;      text-align: left;      margin-top: 20px;      margin-bottom: 10px;    } -  h4.norm, h5.norm, h6.norm { +  h4.norm, h5.norm, h6.norm, h7.norm {      margin-top: 10px;      margin-bottom: 0px;    } -  h1.center, h2.center, h3.center, h4.center, h5.center, h6.center { +  h1.center, h2.center, h3.center, h4.center, h5.center, h6.center, h7.center {      text-align: center;    }    h1 { font-size: 120%; } @@ -1012,6 +1012,7 @@ module SiSU_XHTML_EPUB2_Format    h4 { font-size: 105%; }    h5 { font-size: 100%; }    h6 { font-size: 100%; } +  h7 { font-size: 100%; }    h0 { font-size: 80%; }    h1.i {margin-left: 2em;} @@ -1059,6 +1060,11 @@ module SiSU_XHTML_EPUB2_Format      font-size: 90%;      line-height: 110%;    } +  h7.toc { +    margin-left: 7em; +    font-size: 90%; +    line-height: 105%; +  }    .microtoc {      margin-top: 2px; @@ -1092,6 +1098,11 @@ module SiSU_XHTML_EPUB2_Format      font-weight: normal;      font-size: 90%;    } +  h7.microtoc { +    margin-left: 30mm; +    font-weight: normal; +    font-size: 85%; +  }    .subtoc {      margin-right: 34%; @@ -1109,6 +1120,12 @@ module SiSU_XHTML_EPUB2_Format      margin-top: 0px;      margin-bottom: 0px;    } +  h7.subtoc { +    margin-left: 4em; +    font-size: 70%; +    margin-top: 0px; +    margin-bottom: 0px; +  }    div.substance {      width: 100%; @@ -1196,10 +1213,10 @@ module SiSU_XHTML_EPUB2_Format      background-color: #f9f9aa;    } -  h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, p.c { +  h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, h7.c, p.c {      text-align: center    } -  h1.red, h2.red, h3.red, h4.red, h5.red, h6.red { +  h1.red, h2.red, h3.red, h4.red, h5.red, h6.red, h7.red {      text-align: center;      color: #ff0000;      margin-left: 5mm; @@ -1208,7 +1225,7 @@ module SiSU_XHTML_EPUB2_Format      margin-bottom: 20px;      margin-right: 15mm;    } -  h1.ruby, h2.ruby, h3.ruby, h4.ruby, h5.ruby, h6.ruby { +  h1.ruby, h2.ruby, h3.ruby, h4.ruby, h5.ruby, h6.ruby, h7.ruby {      text-align: center;      color: #990000;      margin-left: 5mm; @@ -2043,6 +2060,9 @@ output_epub_cont_seg.close      def seg_heading6        seg_heading_sub('p','bold',@txt)      end +    def seg_heading7 +      seg_heading_sub('p','bold',@txt) +    end      def dl #check :trailer        "<dl><b>#{@txt}</b> #{@trailer}</dl>"      end @@ -2149,6 +2169,9 @@ output_epub_cont_seg.close      def subtoc_lev6        subtoc_lev('h6','subtoc') if @txt      end +    def subtoc_lev7 +      subtoc_lev('h7','subtoc') if @txt +    end      def heading_sub(tag,attrib,txt)        txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')        %{ @@ -2177,6 +2200,9 @@ output_epub_cont_seg.close      def heading6        heading_sub('p','bold',@txt)      end +    def heading7 +      heading_sub('h7','bold',@txt) +    end      def navigation_heading4        %{<table summary="navigation segment heading 4" width=100% bgcolor="#08163f" border="0">  <tr><td align="center"> @@ -2195,6 +2221,11 @@ output_epub_cont_seg.close    #{@txt}  </p>}      end +    def navigation_heading7 +      %{<p class="bold"> +  #{@txt} +</p>} +    end      def navigation_center        %{<p class="centerbold">#{@txt}</p>}      end @@ -2238,6 +2269,9 @@ output_epub_cont_seg.close      def lev6        lev('h6','toc')      end +    def lev7 +      lev('h7','toc') +    end      def lev0 #docinfo        lev('h0','toc')      end diff --git a/lib/sisu/v6/xhtml_epub2_segments.rb b/lib/sisu/v6/xhtml_epub2_segments.rb index 8f44b3e8..e5e44886 100644 --- a/lib/sisu/v6/xhtml_epub2_segments.rb +++ b/lib/sisu/v6/xhtml_epub2_segments.rb @@ -372,6 +372,8 @@ WOK              sto.seg_heading5            elsif dob.ln==6              sto.seg_heading6 +          elsif dob.ln==7 +            sto.seg_heading7            end          elsif dob.is==:para            if dob.indent \ @@ -486,7 +488,7 @@ WOK            end          end          if dob.is==:heading \ -        and dob.ln.to_s =~/^[56]/ +        and dob.ln.to_s =~/^[5-7]/            case dob.ln            when 5              format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,dob) @@ -494,6 +496,9 @@ WOK            when 6              format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,dob)              subtoc=format_seg.subtoc_lev6 #keep and make available, this is the subtoc +          when 7 +            format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,dob) +            subtoc=format_seg.subtoc_lev7 #keep and make available, this is the subtoc            end            @@seg_subtoc_array << subtoc          end diff --git a/lib/sisu/v6/xml_dom.rb b/lib/sisu/v6/xml_dom.rb index a3a64946..1285a1cc 100644 --- a/lib/sisu/v6/xml_dom.rb +++ b/lib/sisu/v6/xml_dom.rb @@ -226,12 +226,15 @@ WOK  WOK          if lv==4            @copen[1]=true -          @copen[2]=@copen[3]=false +          @copen[2]=@copen[3]=@copen[4]=false          elsif lv==5            @copen[2]=true -          @copen[3]=false +          @copen[3]=@copen[4]=false          elsif lv==6            @copen[3]=true +          @copen[4]=false +        elsif lv==7 +          @copen[4]=true          end        end        def xml_structure(dob,type='norm') @@ -259,21 +262,24 @@ WOK              @cont[2]=false if @cont[2]              @cont[3]=false if @cont[3]              ####### attempt to close contents -            if @copen[3] # 6~ +            if @copen[4] # 4~ +              [4,3,2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" } +              @copen[1]=@copen[2]=@copen[3]=@copen[4]=false +            elsif @copen[3] # 3~                [3,2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }                @copen[1]=@copen[2]=@copen[3]=false -            elsif @copen[2] # 5~ +            elsif @copen[2] # 2~                [2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }                @copen[1]=@copen[2]=@copen[3]=false -            elsif @copen[1] # 4~ +            elsif @copen[1] # 1~                [1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }                @copen[1]=@copen[2]=@copen[3]=false              end              @@xml[:body] << "#{Ax[:tab]*y}</heading#{x}>" if @level[x]              @level[x]=false            end -        when 4..6 -          6.downto(lv) do |x| +        when 4..7 +          7.downto(lv) do |x|              if @level[x]==true                @xml_contents_close[x]=''              end @@ -284,42 +290,61 @@ WOK            case lv            when 4              @@xml[:body] << "#{Ax[:tab]*5}</content>" if @cont[1] -            if @copen[3]==true # 6~ +            if @copen[4]==true # 4~ +              [4,3,2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" } +            elsif @copen[3]==true # 3~                [3,2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" } -            elsif @copen[2]==true # 5~ +            elsif @copen[2]==true # 2~                [2,1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" } -            elsif @copen[1]==true # 4~ +            elsif @copen[1]==true # 1~                [1].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }              end              @cont[1]=true            when 5 -            if @cont[2] \ +            if @cont[3] \ +            or @cont[2] \              or @cont[1]                @@xml[:body] << "#{Ax[:tab]*5}</content>"              end -            if @copen[3]==true  #6~ +            if @copen[4]==true  #4~ +              [4,3,2].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" } +            elsif @copen[3]==true  #3~                [3,2].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" } -            elsif @copen[2]==true #5~ +            elsif @copen[2]==true #2~                [2].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }              end              @cont[2]=true            when 6 -            if @cont[3] \ +            if @cont[4] \ +            or @cont[3] \              or @cont[2] \              or @cont[1]                @@xml[:body] << "#{Ax[:tab]*5}</content>"              end -            if @copen[3] #6{ +            if @copen[4] #4~ +              [4,3].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" } +            elsif @copen[3] #3~                [3].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" }              end              @cont[3]=true +          when 7 +            if @cont[4] \ +            or @cont[3] \ +            or @cont[2] \ +            or @cont[1] +              @@xml[:body] << "#{Ax[:tab]*5}</content>" +            end +            if @copen[4] #4~ +              [4].each { |v| @@xml[:body] << "#{Ax[:tab]*n}</contents#{v}>" } +            end +            @cont[4]=true            end          end          xml_el ||=''          xml_element(dob,xml_el,xml_content,type)          if lv            @level[lv]=true -          ((lv+1)..6).each { |x| @level[x]=false } +          ((lv+1)..7).each { |x| @level[x]=false }          end        end        def add_to_body(dob,type='norm') @@ -367,8 +392,8 @@ WOK          @level,@cont,@copen,@xml_contents_close=[],[],[],[]          @rcdc=false          type='norm' -        (0..6).each { |x| @cont[x]=@level[x]=false } -        (4..6).each { |x| @xml_contents_close[x]='' } +        (0..7).each { |x| @cont[x]=@level[x]=false } +        (4..7).each { |x| @xml_contents_close[x]='' }          xml_head          data.each do |dob|            @trans.char_enc.utf8(dob) if @sys.locale =~/utf-?8/i #% utf8 @@ -420,6 +445,10 @@ WOK                      type="heading_content_#{dob.lv}"                      xml_structure(dob,type)                      dob.obj=x.heading_body6 +                  elsif dob.ln==7 +                    type="heading_content_#{dob.lv}" +                    xml_structure(dob,type) +                    dob.obj=x.heading_body7                    end                  else                    dob.ocn @@ -486,7 +515,7 @@ WOK            end          end          @content_flag=true -        6.downto(4) do |x| +        7.downto(4) do |x|            y=x - 1; v=x - 3            if @level[x]==true #2004w36 bug fix? watch/test previous logic broke on free.for.all @coontent_flag introduced              if @content_flag==true diff --git a/lib/sisu/v6/xml_format.rb b/lib/sisu/v6/xml_format.rb index 70c1a27f..38cc7f85 100644 --- a/lib/sisu/v6/xml_format.rb +++ b/lib/sisu/v6/xml_format.rb @@ -1115,6 +1115,9 @@ WOK      def heading_body6        heading_normal('h6','norm')      end +    def heading_body7 +      heading_normal('h7','norm') +    end      def title_header(tag,attrib)        %{  <div class="content"> @@ -1291,6 +1294,9 @@ WOK      def subtoc_lev6        subtoc_lev('h6','subtoc') if @txt      end +    def subtoc_lev7 +      subtoc_lev('h7','subtoc') if @txt +    end      #% para sisu      def header_sub(tag,attrib)        @txt=@txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ') @@ -1303,12 +1309,6 @@ WOK  </div>  }      end -    def header5 -      header_sub('p','bold') -    end -    def header6 -      header_sub('p','bold') -    end      def header4        %{  <div class="substance"> @@ -1320,6 +1320,15 @@ WOK  </div>  }      end +    def header5 +      header_sub('p','bold') +    end +    def header6 +      header_sub('p','bold') +    end +    def header7 +      header_sub('p','bold') +    end      def navigation_header4        %{<table summary="navigation segment header 4" width=100% bgcolor="#08163f" border="0">  <tr><td align="center"> @@ -1338,6 +1347,11 @@ WOK    #{@txt}  </p>}      end +    def navigation_header7 +      %{<p class="bold"> +  #{@txt} +</p>} +    end      def navigation_center        "<center>#{@txt}</center>"      end @@ -1381,6 +1395,10 @@ WOK      def lev6        lev('h6','toc')      end +    def lev7 +      lev('h7','toc') +      #lev('b','toc') +    end      def lev0 #docinfo        lev('h0','toc')      end @@ -1402,6 +1420,9 @@ WOK      def mini_lev6        lev('h6','minitoc')      end +    def mini_lev7 +      lev('h7','minitoc') +    end      def mini_lev0 #docinfo        lev('h0','minitoc')      end diff --git a/lib/sisu/v6/xml_odf_odt.rb b/lib/sisu/v6/xml_odf_odt.rb index bb69be5d..c5e06109 100644 --- a/lib/sisu/v6/xml_odf_odt.rb +++ b/lib/sisu/v6/xml_odf_odt.rb @@ -111,7 +111,9 @@ module SiSU_XML_ODF_ODT              SiSU_Screen::Ansi.new(                @opt.act[:color_state][:set],                @opt.fns, -              "file://#{@md.file.output_path.odt.dir}/#{@md.file.base_filename.odt}" +              'file://' \ +              + @md.file.output_path.odt.dir + '/' \ +              + @md.file.base_filename.odt              ).flow            end          end @@ -173,16 +175,19 @@ module SiSU_XML_ODF_ODT                if x =~/\S+/ then @n << x                end              end -          else              @n << n +          else                  @n << n            end          end        end        def odf_book_idx        if @md.book_idx -        idx_arr,idx_raw=[],SiSU_Particulars::CombinedSingleton.instance.get_idx_raw(@md.opt).raw_idx +        idx_arr=[] +        idx_raw=SiSU_Particulars::CombinedSingleton. +          instance.get_idx_raw(@md.opt).raw_idx          idx_raw.each do |x|            x=if x.is_a?(String) -            SiSU_XML_ODF_ODT_Format::FormatBookIndex.new(x).book_idx_bookmark +            SiSU_XML_ODF_ODT_Format::FormatBookIndex.new(x). +              book_idx_bookmark            else nil            end            idx_arr << x.strip if x.is_a?(String) @@ -191,7 +196,8 @@ module SiSU_XML_ODF_ODT        end        end        def odf_metadata -        @@odf[:metadata]=SiSU_Metadata::Summary.new(@md).odf.metadata +        @@odf[:metadata]=SiSU_Metadata::Summary.new(@md). +          odf.metadata        end        def odf_tail          manifest="#{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}" @@ -224,19 +230,22 @@ module SiSU_XML_ODF_ODT          @@docstart=false          if dob.use_ != :dummy            dob.tmp=dob.obj -          dob.obj=%{#{breakpage}<text:h text:style-name="H_#{dob.ln}" text:outline-level="#{dob.ln}">#{p_num[:set_ref]}#{set_bookmark_tag(dob)}#{dob.obj}#{p_num[:display]}</text:h>} +          dob.obj=%{#{breakpage}<text:h text:style-name="H_#{dob.ln}" text:outline-level="#{dob.ln}">} \ +          + %{#{p_num[:set_ref]}#{set_bookmark_tag(dob)}#{dob.obj}#{p_num[:display]}</text:h>}          else dob.tmp,dob.obj='',''          end          dob        end        def toc(dob,p_num) -        hardspace=(dob.lv =~/[A-C]/i) \ +        hardspace=(dob.lv =~/[A-D]/i) \          ? '<text:p text:style-name="Standard"/>'          : ''          toc_heading=dob.ocn \ -        ? %{<text:bookmark-ref text:reference-format="text" text:ref-name="#{dob.ocn}">#{dob.tmp}</text:bookmark-ref>} +        ? (%{<text:bookmark-ref text:reference-format="text" text:ref-name="#{dob.ocn}">} \ +          + %{#{dob.tmp}</text:bookmark-ref>})          : dob.tmp -        dob.obj=%{<text:h text:style-name="H_#{dob.ln}" text:outline-level="#{dob.ln}">#{toc_heading}</text:h>#{hardspace}} +        dob.obj=%{<text:h text:style-name="H_#{dob.ln}" text:outline-level="#{dob.ln}">} \ +        + %{#{toc_heading}</text:h>#{hardspace}}          dob        end        def image_src(i) @@ -253,7 +262,9 @@ module SiSU_XML_ODF_ODT                @md.opt.act[:color_state][:set],                "ERROR - image:",                %{"#{i}" missing}, -              "search locations: #{@env.path.image_source_include_local},#{@env.path.image_source_include_remote} and #{@env.path.image_source_include}" +              "search locations: #{@env.path.image_source_include_local}," \ +              + "#{@env.path.image_source_include_remote} and" \ +              + "#{@env.path.image_source_include}"              ).error2 unless @md.opt.act[:quiet][:set]==:on              nil            end @@ -271,7 +282,9 @@ module SiSU_XML_ODF_ODT              @md.opt.act[:color_state][:set],              "ERROR - image:",                %{"#{i}" missing}, -              "search locations: #{@env.path.image_source_include_local},#{@env.path.image_source_include_remote} and #{@env.path.image_source_include}" +              "search locations: #{@env.path.image_source_include_local}," \ +              + "#{@env.path.image_source_include_remote} and" \ +              + "#{@env.path.image_source_include}"            ).error2 unless @md.opt.act[:quiet][:set]==:on            nil          end @@ -280,8 +293,10 @@ module SiSU_XML_ODF_ODT          # copy image to od image directory (unless exists)          # divide pixel dimension by 37.79485 and retain 3 decimal places          m=img[1] -        i=/^(\S+?\.(?:png|jpg|gif))/.match(m).captures.join if m =~/^(\S+?\.(?:png|jpg|gif))/ -        c=/^\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"/.match(m).captures.join if m =~/^\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"/ +        i=/^(\S+?\.(?:png|jpg|gif))/.match(m).captures.join \ +          if m =~/^(\S+?\.(?:png|jpg|gif))/ +        c=/^\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"/.match(m).captures.join \ +          if m =~/^\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"/          w,h=/\s(\d+)x(\d+)/.match(m).captures if m =~/\s\d+x\d+/          w=(w.to_i/37.79485).to_s          h=(h.to_i/37.79485).to_s @@ -290,7 +305,10 @@ module SiSU_XML_ODF_ODT          image_source=image_src(i)          if image_source            if FileTest.file?("#{image_source}/#{i}") -            FileUtils::cp("#{image_source}/#{i}","#{@env.processing_path.odt}/Pictures/#{i}") +            FileUtils::cp( +              "#{image_source}/#{i}", +              "#{@env.processing_path.odt}/Pictures/#{i}" +            )            else STDERR.puts %{\t*WARN* did not find image - "#{image_source}/#{i}" [#{__FILE__}:#{__LINE__}]}            end          end @@ -325,7 +343,8 @@ module SiSU_XML_ODF_ODT        def text_link_odf(txt,url,trail)          txt=txt.gsub(/(\\\+)/,'+') #this is convoluted, and risky :-(          url=url.gsub(/(\\\+)/,'+') #this is convoluted, and risky :-( -        map_nametags=SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map +        map_nametags=SiSU_Particulars::CombinedSingleton. +          instance.get_map_nametags(@md).nametags_map          t=case url          when /^https?:/            %{<text:a xl:type="simple" xl:href="#{url}">#{txt.strip}</text:a>#{trail}} @@ -342,7 +361,8 @@ module SiSU_XML_ODF_ODT            end            t=map_nametags[url] \            && map_nametags[url][:segname] \ -          ? %{<text:a xl:type="simple" xl:href="#{@env.url.root}/#{@md.fnb}/#{map_nametags[url][:segname]}#{Sfx[:html]}##{url}">#{txt.strip}</text:a>#{trail}} +          ? (%{<text:a xl:type="simple" xl:href="#{@env.url.root}/#{@md.fnb}/#{map_nametags[url][:segname]}#{Sfx[:html]}##{url}">} \ +            + %{#{txt.strip}</text:a>#{trail}})            : %{#{txt.strip}#{trail}}          end          t @@ -359,7 +379,8 @@ module SiSU_XML_ODF_ODT              txt=txt.gsub(/([)(\]\[])/,"\\\\\\1").                gsub(/([+?*])/,"\\\\\\1") # problems with +              url=url.gsub(/([+?])/,"\\\\\\1") # problems with + -            dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:url_o]}#{url}#{Mx[:url_c]}/m,text_link_odf(txt,url,trail)). #make sure trailing ']' are not caught in url +            dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:url_o]}#{url}#{Mx[:url_c]}/m, +                text_link_odf(txt,url,trail)). #make sure trailing ']' are not caught in url                gsub(/\\([)(\]\[?])/,'\1') #clumsy fix            end            m=nil @@ -374,7 +395,8 @@ module SiSU_XML_ODF_ODT              txt=txt.gsub(/([)(\]\[])/,"\\\\\\1").                gsub(/([+?*])/,"\\\\\\1") # problems with +              url=url.gsub(/([+?])/,"\\\\\\1") # problems with + -            dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{url}#{Mx[:rel_c]}/m,text_link_odf_bookmark(txt,url,trail)). #make sure trailing ']' are not caught in url +            dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{url}#{Mx[:rel_c]}/m, +                text_link_odf_bookmark(txt,url,trail)). #make sure trailing ']' are not caught in url                gsub(/\\([)(\]\[?])/,'\1') #clumsy fix            end            m=nil @@ -387,7 +409,8 @@ module SiSU_XML_ODF_ODT            m.each do |i|              txt,url,trail=i[1],i[2]              txt=txt.gsub(/([)(\]\[])/,"\\\\\\1") -            dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{url}#{Mx[:rel_c]}/m,text_link_odf(txt,url,trail)). #make sure trailing ']' are not caught in url +            dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{url}#{Mx[:rel_c]}/m, +                text_link_odf(txt,url,trail)). #make sure trailing ']' are not caught in url                gsub(/\\([)(\]\[?])/,'\1') #clumsy fix            end            m=nil @@ -431,11 +454,13 @@ module SiSU_XML_ODF_ODT            @astx||=10000            @astxs||=20000            if str =~/#{Mx[:en_a_o]}\d+\s+/ -            str=str.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/,'<text:note text:id="ftn\1" text:note-class="footnote"><text:note-citation>\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>') +            str=str.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/, +              '<text:note text:id="ftn\1" text:note-class="footnote"><text:note-citation>\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>')            end            if str =~/#{Mx[:en_a_o]}([*]+)\s+/              a=$1.gsub(/([*])/,"\\\\\\1") -              str=str.gsub(/#{Mx[:en_a_o]}([*]+)\s+(.+?)#{Mx[:en_a_c]}/,%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>}) +              str=str.gsub(/#{Mx[:en_a_o]}([*]+)\s+(.+?)#{Mx[:en_a_c]}/, +                %{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})                @astxs+=1            end            if str=~/#{Mx[:en_a_o]}[*+]+\s/ @@ -444,7 +469,8 @@ module SiSU_XML_ODF_ODT                a=x[0].gsub(/([*+])/,"\\\\\\1")                str=group_clean(str)                str=footnote_urls(str) -              str=str.gsub(/#{Mx[:en_a_o]}(#{a})\s+(.+?)#{Mx[:en_a_c]}/,%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>}) +              str=str.gsub(/#{Mx[:en_a_o]}(#{a})\s+(.+?)#{Mx[:en_a_c]}/, +                %{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})                @astx+=1              end            end @@ -454,7 +480,8 @@ module SiSU_XML_ODF_ODT                a=x[0].gsub(/([*+])/,"\\\\\\1")                str=group_clean(str)                str=footnote_urls(str) -              str=str.gsub(/#{Mx[:en_b_o]}(#{a})\s+(.+?)#{Mx[:en_b_c]}/,%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>}) +              str=str.gsub(/#{Mx[:en_b_o]}(#{a})\s+(.+?)#{Mx[:en_b_c]}/, +                %{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})                @astx+=1              end            end @@ -495,7 +522,8 @@ module SiSU_XML_ODF_ODT          dob.obj.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/).each_with_index do |parablock,i|            set_ref=(i==0) ? "#{p_num[:set_ref]}#{set_bookmark_tag(dob)}" : ''            parablock=group_clean(parablock) -          parablock=parablock.gsub(/<text:a xl:type="simple" xl:href="(.+?)">/m,'<text:a xl:type="simple" xl:href="\1">'). +          parablock=parablock.gsub(/<text:a xl:type="simple" xl:href="(.+?)">/m, +              '<text:a xl:type="simple" xl:href="\1">').              gsub(/<(\/text:a)>/,'<\1>').              gsub(/<(text:note text:id=.+?)>/,'<\1>').              gsub(/<(text:p text:style-name="Footnote")>/,'<\1>'). @@ -519,13 +547,15 @@ module SiSU_XML_ODF_ODT          dob.obj.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/).each_with_index do |parablock,i|            set_ref=(i==0) ? "#{p_num[:set_ref]}#{set_bookmark_tag(dob)}" : ''            parablock=group_clean(parablock) -          parablock=parablock.gsub(/<text:a xl:type="simple" xl:href="(.+?)">/m,'<text:a xl:type="simple" xl:href="\1">'). +          parablock=parablock.gsub(/<text:a xl:type="simple" xl:href="(.+?)">/m, +              '<text:a xl:type="simple" xl:href="\1">').              gsub(/<(\/text:a)>/,'<\1>').              gsub(/<(text:note text:id=.+?)>/,'<\1>').              gsub(/<(text:p text:style-name="Footnote")>/,'<\1>').              gsub(/<(\/?text:(?:note-citation|note-body|note|p))>/,'<\1>')            parablock=footnote(parablock) -          parray << %{<text:p text:style-name="P_group">#{set_ref}#{parablock}</text:p>} if parablock =~/\S+/ +          parray << %{<text:p text:style-name="P_group">#{set_ref}#{parablock}</text:p>} \ +            if parablock =~/\S+/          end          dob.obj=parray.join \          + %{<text:p text:style-name="P_group">#{p_num[:display]}</text:p>} \ @@ -593,7 +623,7 @@ module SiSU_XML_ODF_ODT          if dob.is==:heading            @@odf[:body] << heading(dob,p_num).obj << break_line*2            if SiSU_Env::ProcessingSettings.new(md).build.toc? -            if dob.lv =~/[A-C1]/i +            if dob.lv =~/[A-D1]/i                @@odf[:toc] << toc(dob,p_num).obj              end            end @@ -623,8 +653,8 @@ module SiSU_XML_ODF_ODT          dir.path.odt_bld          @data_mod,@endnotes,@level,@cont,@copen,@odf_contents_close=Array.new(6){[]}          @rcdc=false -        (0..6).each { |x| @cont[x]=@level[x]=false } -        (4..6).each { |x| @odf_contents_close[x]='' } +        (0..7).each { |x| @cont[x]=@level[x]=false } +        (4..7).each { |x| @odf_contents_close[x]='' }          odf_tail #($1,$2)          bullet=image_src('bullet_09.png')          if bullet @@ -668,7 +698,8 @@ module SiSU_XML_ODF_ODT            dob.obj=dob.obj.gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>').              gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'<ins>\1</ins>').              gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'<cite>\1</cite>'). -            gsub(/#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}/,'<text:bookmark-start text:name="\1"/><text:bookmark-end text:name="\1"/>'). #check +            gsub(/#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}/, +              '<text:bookmark-start text:name="\1"/><text:bookmark-end text:name="\1"/>'). #check              gsub(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;').              gsub(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;').              gsub(/#{Mx[:mk_o]}[~-]##{Mx[:mk_c]}/,'') @@ -706,7 +737,8 @@ module SiSU_XML_ODF_ODT            wordlist=dob.obj.scan(/\S+/)            dob.obj=tidywords(wordlist).join(' ').strip            @rcdc=true if @rcdc==false \ -          and (dob.obj =~/~metadata/ or dob =~/#{Mx[:lv_o]}1:meta#{Mx[:lv_x]}\s*Document Information/) #fix Mx[:lv_o] +          and (dob.obj =~/~metadata/ \ +          or dob =~/#{Mx[:lv_o]}1:meta#{Mx[:lv_x]}\s*Document Information/) #fix Mx[:lv_o]            if dob.is !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ #check              if defined? dob.ocn and dob.ocn =~/\d+/                @p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(@make,dob.ocn) @@ -835,7 +867,8 @@ WOK          end          od.close          opendoc=@md.file.base_filename.odt #watch where output by language -        FileUtils::mkdir_p(@md.file.output_path.odt.dir) unless FileTest.directory?(@md.file.output_path.odt.dir) +        FileUtils::mkdir_p(@md.file.output_path.odt.dir) \ +          unless FileTest.directory?(@md.file.output_path.odt.dir)          if FileTest.directory?(@env.processing_path.odt) \          and SiSU_Env::SystemCall.new.zip            pwd=Dir.pwd diff --git a/lib/sisu/v6/xml_odf_odt_format.rb b/lib/sisu/v6/xml_odf_odt_format.rb index 68457d00..09c039bc 100644 --- a/lib/sisu/v6/xml_odf_odt_format.rb +++ b/lib/sisu/v6/xml_odf_odt_format.rb @@ -166,6 +166,8 @@ module SiSU_XML_ODF_ODT_Format      end      def heading_body6      end +    def heading_body7 +    end    end    class Table      @@tablehead,@@table_counter=0,0 #reinitialise on new file diff --git a/lib/sisu/v6/xml_sax.rb b/lib/sisu/v6/xml_sax.rb index d90b552b..d595e4a4 100644 --- a/lib/sisu/v6/xml_sax.rb +++ b/lib/sisu/v6/xml_sax.rb @@ -333,8 +333,8 @@ WOK          @endnotes,@level,@cont,@copen,@xml_contents_close=[],[],[],[],[]          @rcdc=false          xml_head -        (0..6).each { |x| @cont[x]=@level[x]=false } -        (4..6).each { |x| @xml_contents_close[x]='' } +        (0..7).each { |x| @cont[x]=@level[x]=false } +        (4..7).each { |x| @xml_contents_close[x]='' }          data.each do |dob|            @trans.char_enc.utf8(dob) if @sys.locale =~/utf-?8/i #% utf8            dob=@trans.markup(dob) @@ -361,6 +361,7 @@ WOK                    when 4 then x.heading_body4                    when 5 then x.heading_body5                    when 6 then x.heading_body6 +                  when 7 then x.heading_body7                    end                  else                    if dob.is==:verse @@ -415,7 +416,7 @@ WOK              dob.obj=dob.obj.gsub(/#{Mx[:pa_o]}:\S+#{Mx[:pa_c]}/,'') if dob.obj            end          end -        6.downto(4) do |x| +        7.downto(4) do |x|            y=x - 1; v=x - 3            @@xml[:body] << "#{Ax[:tab]*5}</content>\n#{Ax[:tab]*y}</contents#{v}>" if @level[x]==true          end @@ -423,7 +424,7 @@ WOK            y=x - 1            @@xml[:body] << "#{Ax[:tab]*y}</heading#{x}>" if @level[x]==true          end -        #6.downto(1) { |x| y=x - 1; @@xml[:body] << "#{Ax[:tab]*y}</level #{x}>" if @level[x]==true } +        #7.downto(1) { |x| y=x - 1; @@xml[:body] << "#{Ax[:tab]*y}</level #{x}>" if @level[x]==true }        end        def pre          rdf=SiSU_XML_Tags::RDF.new(@md) | 
