diff options
| author | Ralph Amissah <ralph@amissah.com> | 2014-12-25 00:45:15 -0500 | 
|---|---|---|
| committer | Ralph Amissah <ralph@amissah.com> | 2015-01-07 22:42:40 -0500 | 
| commit | 059e31210711c0b51b2ae1ea9e4c82ec75ad5b89 (patch) | |
| tree | 750356ec3c642cf3e97a87a503aca8d1cd7659ab /lib | |
| parent | c&d: html, ocn link back to self reinstated (diff) | |
c&d: po4a (& git) revisited, revisit
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sisu/current/ao.rb | 18 | ||||
| -rw-r--r-- | lib/sisu/current/ao_doc_str.rb | 690 | ||||
| -rw-r--r-- | lib/sisu/current/ao_numbering.rb | 10 | ||||
| -rw-r--r-- | lib/sisu/current/dp.rb | 26 | ||||
| -rw-r--r-- | lib/sisu/current/git.rb | 6 | ||||
| -rw-r--r-- | lib/sisu/current/po4a.rb | 334 | ||||
| -rw-r--r-- | lib/sisu/current/se_info_env.rb | 2 | ||||
| -rw-r--r-- | lib/sisu/develop/ao.rb | 18 | ||||
| -rw-r--r-- | lib/sisu/develop/ao_doc_str.rb | 690 | ||||
| -rw-r--r-- | lib/sisu/develop/ao_numbering.rb | 10 | ||||
| -rw-r--r-- | lib/sisu/develop/dp.rb | 29 | ||||
| -rw-r--r-- | lib/sisu/develop/git.rb | 78 | ||||
| -rw-r--r-- | lib/sisu/develop/po4a.rb | 334 | ||||
| -rw-r--r-- | lib/sisu/develop/se_info_env.rb | 2 | 
14 files changed, 1265 insertions, 982 deletions
| diff --git a/lib/sisu/current/ao.rb b/lib/sisu/current/ao.rb index 633c4442..e24fd4e9 100644 --- a/lib/sisu/current/ao.rb +++ b/lib/sisu/current/ao.rb @@ -86,8 +86,8 @@ module SiSU_AO      @@idx_arr={ sst: [], tex: [], html: [], xhtml: [] }      @@map_arr={ nametags: [], ocn_htmlseg: [] }      @@fns=nil -    def initialize(opt,fnx=nil) -      @opt,@fnx=opt,fnx +    def initialize(opt,fnx=nil,process=:complete) +      @opt,@fnx,@process=opt,fnx,process        @@fns ||=opt.fns        fn_use=if fnx \        and fnx =~/\.ss[tmi]$/ @@ -273,6 +273,7 @@ module SiSU_AO    protected      def create_ao        ao_array=[] +      fnp = @fnx ? "#{@opt.fno} #{@fnx}" : @opt.fno        unless @opt.act[:quiet][:set]==:on          tell=(@opt.act[:verbose][:set]==:on \          || @opt.act[:verbose_plus][:set]==:on \ @@ -283,7 +284,8 @@ module SiSU_AO            )          : SiSU_Screen::Ansi.new(              @opt.act[:color_state][:set], -            'Document Abstraction',"[#{@opt.f_pth[:lng_is]}] #{@opt.fno}" +            'Document Abstraction', +            "[#{@opt.f_pth[:lng_is]}] #{fnp}"            )          tell.blue_title_hi        end @@ -296,7 +298,7 @@ module SiSU_AO        meta=file_array=@env.source_file_processing_array(fn)        @md=SiSU_Param::Parameters::Instructions.new(meta,@opt).extract        meta=nil -      ao=SiSU_AO::Make.new(fn,@md,file_array).song +      ao=SiSU_AO::Make.new(fn,@md,file_array,@fnx,@process).song        if (@opt.act[:verbose][:set]==:on \        || @opt.act[:verbose_plus][:set]==:on \        || @opt.act[:maintenance][:set]==:on) @@ -347,7 +349,7 @@ module SiSU_AO        ao=[]        ao=(FileTest.file?(@fnc)) \        ? (File.open(@fnc,'r:utf-8'){ |f| ao=Marshal.load(f)}) -      : SiSU_AO::Source.new(@opt).create_ao +      : SiSU_AO::Source.new(@opt,@fnx,@process).create_ao      end      def read_idx_sst        m=[] @@ -519,8 +521,8 @@ module SiSU_AO      end    end    class Make -    def initialize(fn,md,data) -      @fn,@md,@data=fn,md,data +    def initialize(fn,md,data,fnx,process) +      @fn,@md,@data,@fnx,@process=fn,md,data,fnx,process        @env=SiSU_Env::InfoEnv.new(@md.fns)      end      def reset @@ -551,7 +553,7 @@ module SiSU_AO        data_obj,          tags_map,          ocn_html_seg_map= -          SiSU_AO_Numbering::Numbering.new(@md,data_obj).            # ao_numbering.rb +          SiSU_AO_Numbering::Numbering.new(@md,data_obj,@fnx,@process). # ao_numbering.rb              numbering_song        data_obj,          book_index_rel, diff --git a/lib/sisu/current/ao_doc_str.rb b/lib/sisu/current/ao_doc_str.rb index 40e1e0d0..50916d10 100644 --- a/lib/sisu/current/ao_doc_str.rb +++ b/lib/sisu/current/ao_doc_str.rb @@ -1257,8 +1257,8 @@ module SiSU_AO_DocumentStructureExtract      end    end    class OCN -    def initialize(md,data) -      @md,@data=md,data +    def initialize(md,data,fnx,process) +      @md,@data,@fnx,@process=md,data,fnx,process      end      def structure_info        def lv @@ -1318,31 +1318,33 @@ has incorrect level and/or parent level  --}      end      def required_headers_present? -      unless (defined? @md.title \ -      and @md.title.full) -         STDERR.puts %{required header missing: +      if @process == :complete +        unless (defined? @md.title \ +        and @md.title.full) +           STDERR.puts %{required header missing:  @title:  SKIPPED processing file:  [#{@md.opt.lng}] "#{@md.fns}"  } -        if @md.opt.act[:no_stop][:set]==:on -          $process_document = :skip -        else exit +          if @md.opt.act[:no_stop][:set]==:on +            $process_document = :skip +          else exit +          end          end -      end -      unless (defined? @md.creator.author \ -      and @md.creator.author) -         STDERR.puts %{required header missing: +        unless (defined? @md.creator.author \ +        and @md.creator.author) +           STDERR.puts %{required header missing:  @creator:   :author: anonymous?  SKIPPED processing file:  [#{@md.opt.lng}] "#{@md.fns}"  } -        if @md.opt.act[:no_stop][:set]==:on -          $process_document = :skip -        else exit +          if @md.opt.act[:no_stop][:set]==:on +            $process_document = :skip +          else exit +          end          end        end      end @@ -1381,337 +1383,341 @@ SKIPPED processing file:            if not dob.obj =~/~#|-#/              ocn+=1            end -          if dob.is==:heading \ -          and (ln.to_s =~/^[0-9]/ \ -          or ln.to_s =~@md.lv0 \ -          or ln.to_s =~@md.lv1 \ -          or ln.to_s =~@md.lv2 \ -          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.lv7) -            if not dob.obj =~/~#|-#/ -              ocnh+=1 -            end -            if ln==0 \ -            or ln=~@md.lv0 -              @lev_occurences[:a] += 1 -              if not dob.obj =~/~#|-#/ -                ocn_flag=true -                ocnh0+=1                     #heading -                node0="0:#{ocnh0};#{ocn}" -              else -                #document_structure_check_info(node0,node0,:error) #fix -                ocn_flag=false -                node0="0:0;0" -              end -              document_structure_check_info(node0,node0) -              @collapsed_lv0=0 -              collapsed_level=@collapsed_lv0 -              node,ocn_sp,parent=node0,"h#{ocnh}",'ROOT' -            elsif ln==1 \ -            or ln=~@md.lv1 -              @lev_occurences[:b] += 1 +          if @process == :complete \ +          or (@fnx == @md.opt.fns \ +          && @md.opt.fns =~/.sst$/) +            if dob.is==:heading \ +            and (ln.to_s =~/^[0-9]/ \ +            or ln.to_s =~@md.lv0 \ +            or ln.to_s =~@md.lv1 \ +            or ln.to_s =~@md.lv2 \ +            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.lv7)                if not dob.obj =~/~#|-#/ -                ocn_flag=true -                ocnh1+=1                     #heading -                node1="1:#{ocnh1};#{ocn}" -              else -                #document_structure_check_info(node0,node0,:error) #fix -                ocn_flag=false -                node1="1:0;0" +                ocnh+=1                end -              parent=if node0 -                document_structure_check_info(node1,node0) -                @collapsed_lv1=@collapsed_lv0+1 -                node0 -              else -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node0,node0,:error) -                node0 -              end -              collapsed_level=@collapsed_lv1 -              node,ocn_sp,parent=node1,"h#{ocnh}",node0 #FIX -            elsif ln==2 \ -            or ln=~@md.lv2 -              @lev_occurences[:c] += 1 -              if not dob.obj =~/~#|-#/ -                ocn_flag=true -                ocnh2+=1 -                node2="2:#{ocnh2};#{ocn}" -              else -                #document_structure_check_info(node0,node0,:error) #fix -                ocn_flag=false -                node2="2:0;0" -              end -              parent=if node1 -                document_structure_check_info(node2,node1) -                @collapsed_lv2=@collapsed_lv1+1 -                node1 -              else -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node2,node0,:error) -                node0 -              end -              collapsed_level=@collapsed_lv2 -              node,ocn_sp=node2,"h#{ocnh}" -            elsif ln==3 \ -            or ln=~@md.lv3 -              @lev_occurences[:d] += 1 -              if not dob.obj =~/~#|-#/ -                ocn_flag=true -                ocnh3+=1 -                node3="3:#{ocnh3};#{ocn}" -              else -                #document_structure_check_info(node0,node0,:error) #fix -                ocn_flag=false -                node3="3:0;0" -              end -              parent=if node2 -                document_structure_check_info(node3,node2) -                @collapsed_lv3=@collapsed_lv2+1 -                node2 -              elsif node1 -                warning_incorrect_parent_level_or_level(dob.obj) -                puts %{parent is :A~ & this level #{dob.lv} +              if ln==0 \ +              or ln=~@md.lv0 +                @lev_occurences[:a] += 1 +                if not dob.obj =~/~#|-#/ +                  ocn_flag=true +                  ocnh0+=1                     #heading +                  node0="0:#{ocnh0};#{ocn}" +                else +                  #document_structure_check_info(node0,node0,:error) #fix +                  ocn_flag=false +                  node0="0:0;0" +                end +                document_structure_check_info(node0,node0) +                @collapsed_lv0=0 +                collapsed_level=@collapsed_lv0 +                node,ocn_sp,parent=node0,"h#{ocnh}",'ROOT' +              elsif ln==1 \ +              or ln=~@md.lv1 +                @lev_occurences[:b] += 1 +                if not dob.obj =~/~#|-#/ +                  ocn_flag=true +                  ocnh1+=1                     #heading +                  node1="1:#{ocnh1};#{ocn}" +                else +                  #document_structure_check_info(node0,node0,:error) #fix +                  ocn_flag=false +                  node1="1:0;0" +                end +                parent=if node0 +                  document_structure_check_info(node1,node0) +                  @collapsed_lv1=@collapsed_lv0+1 +                  node0 +                else +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node0,node0,:error) +                  node0 +                end +                collapsed_level=@collapsed_lv1 +                node,ocn_sp,parent=node1,"h#{ocnh}",node0 #FIX +              elsif ln==2 \ +              or ln=~@md.lv2 +                @lev_occurences[:c] += 1 +                if not dob.obj =~/~#|-#/ +                  ocn_flag=true +                  ocnh2+=1 +                  node2="2:#{ocnh2};#{ocn}" +                else +                  #document_structure_check_info(node0,node0,:error) #fix +                  ocn_flag=false +                  node2="2:0;0" +                end +                parent=if node1 +                  document_structure_check_info(node2,node1) +                  @collapsed_lv2=@collapsed_lv1+1 +                  node1 +                else +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node2,node0,:error) +                  node0 +                end +                collapsed_level=@collapsed_lv2 +                node,ocn_sp=node2,"h#{ocnh}" +              elsif ln==3 \ +              or ln=~@md.lv3 +                @lev_occurences[:d] += 1 +                if not dob.obj =~/~#|-#/ +                  ocn_flag=true +                  ocnh3+=1 +                  node3="3:#{ocnh3};#{ocn}" +                else +                  #document_structure_check_info(node0,node0,:error) #fix +                  ocn_flag=false +                  node3="3:0;0" +                end +                parent=if node2 +                  document_structure_check_info(node3,node2) +                  @collapsed_lv3=@collapsed_lv2+1 +                  node2 +                elsif node1 +                  warning_incorrect_parent_level_or_level(dob.obj) +                  puts %{parent is :A~ & this level #{dob.lv}  either parent should be level :B~  or this level should be level :B~ rather than #{dob.lv}} -                document_structure_check_info(node3,node1,:error) -                @collapsed_lv3=@collapsed_lv1+1 -                node1 -              else -                document_structure_check_info(node3,node0,:error) -                warning_incorrect_parent_level_or_level(dob.obj) -                node0 -              end -              collapsed_level=@collapsed_lv3 -              node,ocn_sp=node3,"h#{ocnh}" -            elsif ln==4 \ -            or ln=~@md.lv4 -              @lev_occurences[:l1] += 1 -              if not dob.obj =~/~#|-#/ -                ocn_flag=true -                ocnh4+=1 -                node4="4:#{ocnh4};#{ocn}" -              else -                ocn_flag=false -                node4="4:0;0" -              end -              parent=if node3 -                document_structure_check_info(node4,node3) -                @collapsed_lv4=@collapsed_lv3+1 -                node3 -              elsif node2 -                document_structure_check_info(node4,node2) -                @collapsed_lv4=@collapsed_lv2+1 -                node2 -              elsif node1 -                document_structure_check_info(node4,node1) -                @collapsed_lv4=@collapsed_lv1+1 -                node1 -              elsif node0 -                document_structure_check_info(node4,node0) -                @collapsed_lv4=@collapsed_lv0+1 -                node0 -              else -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node4,node0,:error) -                node0 -              end -              collapsed_level=@collapsed_lv4 -              node,ocn_sp=node4,"h#{ocnh}" -            elsif ln==5 \ -            or ln=~@md.lv5 -              @lev_occurences[:l2] += 1 -              if not dob.obj =~/~#|-#/ -                ocn_flag=true -                ocnh5+=1 -                node5="5:#{ocnh5};#{ocn}" -              else -                ocn_flag=false -                node5="5:0;0" -              end -              parent=if node4 -                document_structure_check_info(node5,node4) -                @collapsed_lv5=@collapsed_lv4+1 -                node4 -              elsif node3 -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node5,node3,:error) -                @collapsed_lv5=@collapsed_lv3+1 -                node3 -              elsif node2 -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node5,node2,:error) -                @collapsed_lv5=@collapsed_lv2+1 -                node2 -              elsif node1 -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node5,node1,:error) -                @collapsed_lv5=@collapsed_lv1+1 -                node1 -              else -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node5,node0,:error) -                node0 -              end -              collapsed_level=@collapsed_lv5 -              node,ocn_sp=node5,"h#{ocnh}" -            elsif ln==6 \ -            or ln=~@md.lv6 -              @lev_occurences[:l3] += 1 -              if not dob.obj =~/~#|-#/ -                ocn_flag=true -                ocnh6+=1 -                node6="6:#{ocnh6};#{ocn}" -              else -                ocn_flag=false -                node6="6:0;0" -              end -              parent=if node5 -                document_structure_check_info(node6,node5) -                @collapsed_lv6=@collapsed_lv5+1 -                node5 -              elsif node4 -                warning_incorrect_parent_level_or_level(dob.obj) -                puts "parent is level #4 (1~) & this level ##{dob.ln} (#{dob.lv}~) +                  document_structure_check_info(node3,node1,:error) +                  @collapsed_lv3=@collapsed_lv1+1 +                  node1 +                else +                  document_structure_check_info(node3,node0,:error) +                  warning_incorrect_parent_level_or_level(dob.obj) +                  node0 +                end +                collapsed_level=@collapsed_lv3 +                node,ocn_sp=node3,"h#{ocnh}" +              elsif ln==4 \ +              or ln=~@md.lv4 +                @lev_occurences[:l1] += 1 +                if not dob.obj =~/~#|-#/ +                  ocn_flag=true +                  ocnh4+=1 +                  node4="4:#{ocnh4};#{ocn}" +                else +                  ocn_flag=false +                  node4="4:0;0" +                end +                parent=if node3 +                  document_structure_check_info(node4,node3) +                  @collapsed_lv4=@collapsed_lv3+1 +                  node3 +                elsif node2 +                  document_structure_check_info(node4,node2) +                  @collapsed_lv4=@collapsed_lv2+1 +                  node2 +                elsif node1 +                  document_structure_check_info(node4,node1) +                  @collapsed_lv4=@collapsed_lv1+1 +                  node1 +                elsif node0 +                  document_structure_check_info(node4,node0) +                  @collapsed_lv4=@collapsed_lv0+1 +                  node0 +                else +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node4,node0,:error) +                  node0 +                end +                collapsed_level=@collapsed_lv4 +                node,ocn_sp=node4,"h#{ocnh}" +              elsif ln==5 \ +              or ln=~@md.lv5 +                @lev_occurences[:l2] += 1 +                if not dob.obj =~/~#|-#/ +                  ocn_flag=true +                  ocnh5+=1 +                  node5="5:#{ocnh5};#{ocn}" +                else +                  ocn_flag=false +                  node5="5:0;0" +                end +                parent=if node4 +                  document_structure_check_info(node5,node4) +                  @collapsed_lv5=@collapsed_lv4+1 +                  node4 +                elsif node3 +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node5,node3,:error) +                  @collapsed_lv5=@collapsed_lv3+1 +                  node3 +                elsif node2 +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node5,node2,:error) +                  @collapsed_lv5=@collapsed_lv2+1 +                  node2 +                elsif node1 +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node5,node1,:error) +                  @collapsed_lv5=@collapsed_lv1+1 +                  node1 +                else +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node5,node0,:error) +                  node0 +                end +                collapsed_level=@collapsed_lv5 +                node,ocn_sp=node5,"h#{ocnh}" +              elsif ln==6 \ +              or ln=~@md.lv6 +                @lev_occurences[:l3] += 1 +                if not dob.obj =~/~#|-#/ +                  ocn_flag=true +                  ocnh6+=1 +                  node6="6:#{ocnh6};#{ocn}" +                else +                  ocn_flag=false +                  node6="6:0;0" +                end +                parent=if node5 +                  document_structure_check_info(node6,node5) +                  @collapsed_lv6=@collapsed_lv5+1 +                  node5 +                elsif node4 +                  warning_incorrect_parent_level_or_level(dob.obj) +                  puts "parent is level #4 (1~) & this level ##{dob.ln} (#{dob.lv}~)  either parent should be level #5 (2~)  or this level should be #5 (2~) rather ##{dob.ln} (#{dob.lv}~)" -                document_structure_check_info(node6,node4,:error) -                @collapsed_lv6=@collapsed_lv4+1 -                node4 -              elsif node3 -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node6,node3,:error) -                @collapsed_lv6=@collapsed_lv3+1 -                node3 -              elsif node2 -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node6,node2,:error) -                @collapsed_lv6=@collapsed_lv2+1 -                node2 -              elsif node1 -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node6,node1,:error) -                @collapsed_lv6=@collapsed_lv1+1 -                node1 -              else -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node6,node0,:error) -                node0 -              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 (2~) & this level ##{dob.ln} (#{dob.lv}~) +                  document_structure_check_info(node6,node4,:error) +                  @collapsed_lv6=@collapsed_lv4+1 +                  node4 +                elsif node3 +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node6,node3,:error) +                  @collapsed_lv6=@collapsed_lv3+1 +                  node3 +                elsif node2 +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node6,node2,:error) +                  @collapsed_lv6=@collapsed_lv2+1 +                  node2 +                elsif node1 +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node6,node1,:error) +                  @collapsed_lv6=@collapsed_lv1+1 +                  node1 +                else +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node6,node0,:error) +                  node0 +                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 (2~) & this level ##{dob.ln} (#{dob.lv}~)  either parent should be level #6 (3~)  or this level should be #6 (3~) rather ##{dob.ln} (#{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 (1~) & this level ##{dob.ln} (#{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 (1~) & this level ##{dob.ln} (#{dob.lv}~)  either parent should be level 6~  or this level should be #6 (3~) rather ##{dob.ln} (#{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 +                  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 -              collapsed_level=@collapsed_lv7 -              node,ocn_sp=node7,"h#{ocnh}" -            end -          else -            unless @lev_occurences[:l1] > 0 -              STDERR.puts %{Substantive text objects must follow a level 1~ heading and there are none at this point in processing: #{@lev_occurences[:l1]} +            else +              unless @lev_occurences[:l1] > 0 +                STDERR.puts %{Substantive text objects must follow a level 1~ heading and there are none at this point in processing: #{@lev_occurences[:l1]}  SKIPPED processing file:  [#{@md.opt.lng}] "#{@md.fns}"} -              puts dob.obj #.gsub(/^(.{1,80})/,'"\1"') -              exit -            end -            unless @ln >= 4 -              lev=case @ln -              when 0 then 'A' -              when 1 then 'B' -              when 2 then 'C' -              when 3 then 'D' -              when 4 then '1' -              when 5 then '2' -              when 6 then '3' -              when 7 then '4' -              when 8 then '5' -              when 9 then '6' +                puts dob.obj #.gsub(/^(.{1,80})/,'"\1"') +                exit                end -              STDERR.puts %{Substantive text objects must follow a level 1~ 2~ or 3~ heading: #{lev}~ +              unless @ln >= 4 +                lev=case @ln +                when 0 then 'A' +                when 1 then 'B' +                when 2 then 'C' +                when 3 then 'D' +                when 4 then '1' +                when 5 then '2' +                when 6 then '3' +                when 7 then '4' +                when 8 then '5' +                when 9 then '6' +                end +                STDERR.puts %{Substantive text objects must follow a level 1~ 2~ or 3~ heading: #{lev}~  SKIPPED processing file:  [#{@md.opt.lng}] "#{@md.fns}"} -              puts dob.obj.gsub(/^(.{1,80})/,'"\1"') -              if @md.opt.act[:no_stop][:set]==:on -                $process_document = :skip -                break -              else exit +                puts dob.obj.gsub(/^(.{1,80})/,'"\1"') +                if @md.opt.act[:no_stop][:set]==:on +                  $process_document = :skip +                  break +                else exit +                end +              end +              if not dob.obj =~/~#|-#/ +                ocn_flag=true +              else +                ocn_flag=false +              end +              ocno+=1 +              if dob.is==:table +                ocnt+=1 +                ocn_sp,parent="t#{ocnt}",node +              elsif dob.is==:code +                ocnc+=1 +                ocn_sp,parent="c#{ocnc}",node +              elsif dob.is==:group \ +              || dob.is==:box \ +              || dob.is==:block \ +              || dob.is==:alt \ +              || dob.is==:verse +                ocng+=1 #group, poem +                ocn_sp,parent="g#{ocng}",node +              elsif dob.is==:image #check +                ocni+=1 +                ocn_sp,parent="i#{ocni}",node +              else ocnp+=1                                 #paragraph +                ocn_sp,parent="p#{ocnp}",node                end -            end -            if not dob.obj =~/~#|-#/ -              ocn_flag=true -            else -              ocn_flag=false -            end -            ocno+=1 -            if dob.is==:table -              ocnt+=1 -              ocn_sp,parent="t#{ocnt}",node -            elsif dob.is==:code -              ocnc+=1 -              ocn_sp,parent="c#{ocnc}",node -            elsif dob.is==:group \ -            || dob.is==:box \ -            || dob.is==:block \ -            || dob.is==:alt \ -            || dob.is==:verse -              ocng+=1 #group, poem -              ocn_sp,parent="g#{ocng}",node -            elsif dob.is==:image #check -              ocni+=1 -              ocn_sp,parent="i#{ocni}",node -            else ocnp+=1                                 #paragraph -              ocn_sp,parent="p#{ocnp}",node              end            end            if dob.is==:heading @@ -1760,24 +1766,28 @@ SKIPPED processing file:          end          @o_array << dob        end -      unless @lev_occurences[:a] == 1 -        STDERR.puts %{The number of level A~ in this document: #{@lev_occurences[:a]} +      if @process == :complete \ +      or (@fnx == @md.opt.fns \ +      && @md.opt.fns =~/.sst$/) +        unless @lev_occurences[:a] == 1 +          STDERR.puts %{The number of level A~ in this document: #{@lev_occurences[:a]}  There must be one level A~ (no more and no less)  SKIPPED processing file:  [#{@md.opt.lng}] "#{@md.fns}"} -        if @md.opt.act[:no_stop][:set]==:on -          $process_document = :skip -        else exit +          if @md.opt.act[:no_stop][:set]==:on +            $process_document = :skip +          else exit +          end          end -      end -      unless @lev_occurences[:l1] > 0 -        STDERR.puts %{The number of level 1~ in this document: #{@lev_occurences[:l1]} +        unless @lev_occurences[:l1] > 0 +          STDERR.puts %{The number of level 1~ in this document: #{@lev_occurences[:l1]}  There must be at least one level 1~ (and as many as required)  SKIPPED processing file:  [#{@md.opt.lng}] "#{@md.fns}"} -        if @md.opt.act[:no_stop][:set]==:on -          $process_document = :skip -        else exit +          if @md.opt.act[:no_stop][:set]==:on +            $process_document = :skip +          else exit +          end          end        end        @o_array diff --git a/lib/sisu/current/ao_numbering.rb b/lib/sisu/current/ao_numbering.rb index 9df1479a..31986a86 100644 --- a/lib/sisu/current/ao_numbering.rb +++ b/lib/sisu/current/ao_numbering.rb @@ -58,8 +58,8 @@ module SiSU_AO_Numbering    class Numbering      attr_accessor :obj,:osp,:ocn,:lv,:name,:index,:comment      @@segments_count=0 -    def initialize(md,data) -      @md,@data=md,data +    def initialize(md,data,fnx,process) +      @md,@data,@fnx,@process=md,data,fnx,process        @obj=@type=@ocn=@lv=@name=@index=@comment=nil        @chosen_seg_names=[]      end @@ -104,7 +104,9 @@ module SiSU_AO_Numbering          data=ocn(data.compact) #watch          data=xml(data.compact)          data=minor_numbering(data.compact) -        data,tags_map,ocn_html_seg_map=name_para_seg_filename(data) +        if @process==:complete +          data,tags_map,ocn_html_seg_map=name_para_seg_filename(data) +        end          data=set_heading_top(data) unless @md.set_heading_top          [data,tags_map,ocn_html_seg_map]        ensure @@ -277,7 +279,7 @@ module SiSU_AO_Numbering        @tuned_file=@tuned_file.flatten      end      def ocn(data)                                                                      #and auto segment numbering increment -      @tuned_file=SiSU_AO_DocumentStructureExtract::OCN.new(@md,data).ocn +      @tuned_file=SiSU_AO_DocumentStructureExtract::OCN.new(@md,data,@fnx,@process).ocn        @tuned_file      end      def xml(data) diff --git a/lib/sisu/current/dp.rb b/lib/sisu/current/dp.rb index c57112de..9c8ab9fc 100644 --- a/lib/sisu/current/dp.rb +++ b/lib/sisu/current/dp.rb @@ -540,7 +540,9 @@ module SiSU_Param                SiSU_Screen::Ansi.new(                  @opt.act[:color_state][:set],                  'WARNING Document Copyright missing; provide @rights: :copyright:' -              ).warn unless @opt.act[:quiet][:set]==:on +              ).warn if (@opt.act[:verbose][:set]==:on \ +                || @opt.act[:verbose_plus][:set]==:on \ +                || @opt.act[:maintenance][:set]==:on)                ''              end              l,n=Db[:col_info_note],'rights.copyright.text' @@ -612,7 +614,9 @@ module SiSU_Param                SiSU_Screen::Ansi.new(                  @opt.act[:color_state][:set],                  'WARNING Document Rights information missing; provide @rights: :copyright:' -              ).warn unless @opt.act[:quiet][:set]==:on +              ).warn if (@opt.act[:verbose][:set]==:on \ +                || @opt.act[:verbose_plus][:set]==:on \ +                || @opt.act[:maintenance][:set]==:on)              else                l,n=Db[:col_info_note],'rights.all'                validate_length(s,l,n) @@ -670,7 +674,9 @@ module SiSU_Param                SiSU_Screen::Ansi.new(                  @opt.act[:color_state][:set],                  'WARNING Document Rights information missing; provide @rights: :copyright:' -              ).warn unless @opt.act[:quiet][:set]==:on +              ).warn if (@opt.act[:verbose][:set]==:on \ +                || @opt.act[:verbose_plus][:set]==:on \ +                || @opt.act[:maintenance][:set]==:on)              else                l,n=Db[:col_info_note],'rights.all'                validate_length(s,l,n) @@ -1421,11 +1427,13 @@ module SiSU_Param              SiSU_Screen::Ansi.new(                @opt.act[:color_state][:set],                '*WARN* endnote number mismatch', -              "endnotes: #{@en[:note]} != endnote reference marks: #{@en[:mark]} (difference = #{@en[:mismatch]})" +              "endnotes: #{@en[:note]} != endnote reference marks: #{@en[:mark]} " \ +              + "(difference = #{@en[:mismatch]})"              ).warn unless @opt.act[:quiet][:set]==:on              footnote_conversion_errors=File.new("#{Dir.pwd}/footnote_conversion_errors.txt",'a')              footnote_conversion_errors << -              "#{@fns}:\n\tendnotes: #{@en[:note]} != endnote reference marks: #{@en[:mark]} (difference = #{@en[:mismatch]})\n" +              "#{@fns}:\n\tendnotes: #{@en[:note]} != endnote reference marks: #{@en[:mark]} " \ +              + "(difference = #{@en[:mismatch]})\n"            end            if not @title \            or not defined? @title.main \ @@ -1438,7 +1446,9 @@ module SiSU_Param                  @opt.act[:color_state][:set],                  'WARNING: Document Title missing',                  'please provide @title:' -              ).warn unless @opt.act[:quiet][:set]==:on +              ).warn if (@opt.act[:verbose][:set]==:on \ +                || @opt.act[:verbose_plus][:set]==:on \ +                || @opt.act[:maintenance][:set]==:on)              end            end            if @author !~/[\S]/ @@ -1450,7 +1460,9 @@ module SiSU_Param                  @opt.act[:color_state][:set],                  'WARNING: Document Author missing',                  'please provide @creator: :author:' -              ).warn unless @opt.act[:quiet][:set]==:on +              ).warn if (@opt.act[:verbose][:set]==:on \ +                || @opt.act[:verbose_plus][:set]==:on \ +                || @opt.act[:maintenance][:set]==:on)              end            end            @struct={} diff --git a/lib/sisu/current/git.rb b/lib/sisu/current/git.rb index f9723186..0ec3520b 100644 --- a/lib/sisu/current/git.rb +++ b/lib/sisu/current/git.rb @@ -59,8 +59,8 @@ module SiSU_Git    require_relative 'se'                                 # se.rb    require_relative 'ao'                                 # ao.rb    class Source -    def initialize(opt) -      @opt=opt +    def initialize(opt,process=:complete) +      @opt,@process=opt,process        @env=SiSU_Env::InfoEnv.new        @md=SiSU_Param::Parameters.new(@opt).get        @file=SiSU_Env::FileOp.new(@md) @@ -88,7 +88,7 @@ module SiSU_Git          video:     git_path_fnb + '/' + Gt[:sisupod] + '/' + Gt[:video],          conf:      git_path_fnb + '/' + Gt[:sisupod] + '/' + Gt[:conf]        } -      SiSU_AO::Source.new(@opt).read                                         # -m +      SiSU_AO::Source.new(@opt,nil,@process).read                            # -m      end      def create_file_structure_git        make_dir_fnb diff --git a/lib/sisu/current/po4a.rb b/lib/sisu/current/po4a.rb index 7d602f7c..097fb2c6 100644 --- a/lib/sisu/current/po4a.rb +++ b/lib/sisu/current/po4a.rb @@ -63,12 +63,15 @@ module SiSU_Po4a    require_relative 'po4a_set'                           # po4a_set.rb    include SiSU_Param    class Source -    @@opt_src,@@opt_trn,@@opt_src_,@@opt_trn_,@@md_src,@@md_trn=nil,nil,nil,nil,nil,nil +    @@opt_src,@@opt_trn,@@opt_src_,@@opt_trn_,@@md_src,@@md_trn= +      nil,nil,nil,nil,nil,nil      def initialize(opt,fn=nil)        @opt,@fn=opt,fn        #unless @opt.fns =~/(.+?\.(?:-|ssm\.)?sst)$/        #  puts "#{@opt.fns} not a processed file type"        #end +      file_arr=SiSU_Info_Env::InfoEnv.new.source_file_processing_array(@opt.fns) +      SiSU_Param::Parameters::Instructions.new(file_arr,@opt).extract        r=Px[:lng_lst_rgx].gsub(/\|en\|/,'|')        @lang_regx=%r{(?:#{r})}        if opt.fns =~/\S+?~#{@lang_regx}\.ss[mti]/ \ @@ -94,36 +97,44 @@ module SiSU_Po4a          end          md=SiSU_Param::Parameters.new(@opt).get          src[:files].each do |fn| -          SiSU_AO::Source.new(@opt,fn).read             # -m            env=SiSU_Env::InfoEnv.new(@opt.fns) +          file=SiSU_Env::FileOp.new(md)            m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm|ssi)$/ #watch added match for sss            @fnn,@fnb,@fnt=fn[m,1],fn[m,2],fn[m,3]            unless @opt.act[:quiet][:set]==:on -            path=env.path.output_tell              tool=(@opt.act[:verbose][:set]==:on \              || @opt.act[:verbose_plus][:set]==:on \              || @opt.act[:maintenance][:set]==:on) \ -            ? "#{env.program.text_editor} #{path}/#{md.fnb}/#{md.fn[:plain]}" +            ? "#{env.program.text_editor} #{file.output_path.pot.dir}/"              : @opt.fns              (@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],'Pot po4a',tool).green_hi_blue -            : SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],'Pot po4a',tool).green_title_hi +            ? SiSU_Screen::Ansi.new( +                @opt.act[:color_state][:set], +                'Pot po4a', +                tool +              ).green_hi_blue +            : SiSU_Screen::Ansi.new( +                @opt.act[:color_state][:set], +                'Pot po4a', +                tool +              ).green_title_hi              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],                  @opt.fns, -                "#{path}/#{md.fnb}/#{md.fn[:plain]}" +                file.output_path.pot.dir                ).flow              end            end            if @opt.fns =~/\S+?~#{@lang_regx}\.ss[mti]/ \            or @opt.f_pth[:lng] !=@opt.lng_base              opt_lang_trn_fn=fn -            @ao_array_lang_translation=SiSU_AO::Source.new(@opt,opt_lang_trn_fn).get # ao file drawn here +            @ao_array_lang_translation= +              SiSU_AO::Source.new(@opt,opt_lang_trn_fn,:po4a).get # ao file drawn here              opt_lang_src_fn=if fn =~/\S+?~\S{2}(?:_\S{2})?\.ss[mti]/                fn.gsub(/(\S+?)~\S{2}(?:_\S{2})?(\.ss[mti])/,'\1\2') #check i              else fn @@ -138,14 +149,16 @@ module SiSU_Po4a              else nil              end              if FileTest.file?("#{srcdir}/#{opt_lang_src_fn}") -              @ao_array_lang_src=SiSU_AO::Source.new(@@opt_src,opt_lang_src_fn).get # ao file drawn here +              @ao_array_lang_src= +                SiSU_AO::Source.new(@@opt_src,opt_lang_src_fn,:po4a).get # ao file drawn here              else                puts "no identified source document"                exit              end              Dir.chdir(transdir) if transdir            else -            @ao_array_lang_src=SiSU_AO::Source.new(@opt,fn).get # ao file drawn here +            @ao_array_lang_src= +              SiSU_AO::Source.new(@opt,fn,:po4a).get # ao file drawn here              @ao_array_lang_translation=nil            end            wrap_width=if defined? md.make.plaintext_wrap \ @@ -156,7 +169,13 @@ module SiSU_Po4a              env.plaintext_wrap            else 78            end -          SiSU_Po4a::Source::Scroll.new(fn,@ao_array_lang_src,@ao_array_lang_translation,@@md_src,@@md_trn,wrap_width).songsheet +          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.selections.str,@opt.fns).location do @@ -170,14 +189,24 @@ module SiSU_Po4a        include SiSU_Po4aUtils        @@endnotes={ para: [], end: [] }        def initialize(fn,data_src,data_trn,md_src,md_trn,wrap_width) -        @fn,@data_src,@data_trn,@md_src,@md_trn,@wrap_width=fn,data_src,data_trn,md_src,md_trn,wrap_width +        @fn,@data_src,@data_trn,@md_src,@md_trn,@wrap_width= +         fn, data_src, data_trn, md_src, md_trn, wrap_width          @md=(md_trn.nil?) \          ? md_src          : md_trn          @tab="\t"          @@endnotes_=(@md.opt.selections.str =~/--endnote/) ? true : false    # --footnote -        @br=(@md.opt.selections.str =~/--dos/) ? "\r\n" : "\n"               # --unix -        @pot={ body: [], open: [], close: [], head: [], metadata: [], tail: [] } +        @pot={ +          body: [], +          open: [], +          close: [], +          head: [], +          metadata: [], +          tail: [] +        } +      end +      def br +        (@md.opt.selections.str =~/--dos/) ? "\r\n" : "\n"  # --unix        end        def songsheet  ############## BUG @fn changes value @@ -185,7 +214,7 @@ module SiSU_Po4a          pot=pot_markup(@data_src,@data_trn)          publish(fn,pot)        end -      def extract_endnotes(dob='')                                   #% Used for extraction of endnotes from paragraphs +      def extract_endnotes(dob='')                                             #% used for extraction of endnotes from paragraphs          notes_a=dob.obj.scan(/#{Mx[:en_a_o]}([\d]+\s+.+?)#{Mx[:en_a_c]}/)          ##notes_a=dob.obj.scan(/#{Mx[:en_a_o]}([\d*+]+\s+.+?)#{Mx[:en_a_c]}/)          #notes_b=dob.obj.scan(/#{Mx[:en_b_o]}([\d*+]+\s+.+?)#{Mx[:en_b_c]}/) @@ -193,8 +222,8 @@ module SiSU_Po4a          notes_a.flatten.each do |n| #high cost to deal with <br> appropriately within plaintext, consider            n=n.dup.to_s            n=n.gsub(/^([\d]+)\s+/,'^~\1 '). -           #gsub(/^([\d*+]+)\s+/,'^~\1 '). -            gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br>') +            gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/, +              ' \\\\\\ ')            @n << n          end          notes_a=@n.flatten @@ -212,14 +241,21 @@ module SiSU_Po4a            mark="^~ "            instruct=s_mark=''            if @md.opt.act[:maintenance][:set]==:on -            instruct=%{\n# footnotes, the preferred sisu markup for a footnote is~{this is a footnote}~ however, for translation a footnote reference marker in the text~^ with a set of notes following the paragraph starting on a newline with "^~ this is a footnote", is easier to deal with, if possible these should be converted back to~{inline notes}~} +            instruct=%{\n# footnotes, the preferred sisu markup for a footnote is~{this is a footnote}~ } \ +            + %{however, for translation a footnote reference marker in the text~^ } \ +            + %{with a set of notes following the paragraph starting on a newline with "^~ this is a footnote", } \ +            + %{is easier to deal with, if possible these should be converted back to~{inline notes}~}              s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}            end            desc="#{d}#{s_mark}#{instruct}" -          orig=(orig_notes[i].to_s =~/^\^~[\d*+]+/) ? (orig_notes[i].to_s.gsub(/^\^~[\d*+]+/,'^~')) : orig_notes[i].to_s +          orig=(orig_notes[i].to_s =~/^\^~[\d*+]+/) \ +          ? (orig_notes[i].to_s.gsub(/^\^~[\d*+]+/,'^~')) +          : orig_notes[i].to_s            trans=if trn_notes.is_a?(Array) \            and trn_notes.length==orig_notes.length -            (trn_notes[i].to_s =~/^\^~[\d*+]+/) ? (trn_notes[i].to_s.gsub(/^\^~[\d*+]+/,'^~')) : trn_notes[i].to_s +            (trn_notes[i].to_s =~/^\^~[\d*+]+/) \ +            ? (trn_notes[i].to_s.gsub(/^\^~[\d*+]+/,'^~')) +            : trn_notes[i].to_s            else ''            end            util=pot_structure(desc,orig,trans) @@ -238,7 +274,7 @@ GSUB            @@endnotes[:para] << wrap            @@endnotes[:end] << '' << wrap          end -        @@endnotes[:para].each {|e| @pot[:body] << e << @br} +        @@endnotes[:para].each {|e| @pot[:body] << e << br}          @@endnotes[:para]=[]          @@endnotes        end @@ -297,10 +333,10 @@ GSUB            meta_src.metadata_tags.classify.topic_register,            meta_src.metadata_tags.classify.loc,            meta_src.metadata_tags.classify.dewey, -          meta_src.metadata_tags.notes.relation, -          meta_src.metadata_tags.notes.type, -          meta_src.metadata_tags.identifier.oclc, -          meta_src.metadata_tags.identifier.isbn, +          #meta_src.metadata_tags.notes.relation, +          #meta_src.metadata_tags.notes.type, +          #meta_src.metadata_tags.identifier.oclc, +          #meta_src.metadata_tags.identifier.isbn,            'msgstr ""',          ]          w << [ @@ -340,7 +376,7 @@ GSUB                z += %{"#{x}"\n} if x =~/^\s+:\S+?: /              end            end -          @pot[:metadata] << z << @br +          @pot[:metadata] << z << br            #puts z unless z.empty?          end        end @@ -425,20 +461,20 @@ GSUB            meta_src.metadata_tags.classify.topic_register,            meta_src.metadata_tags.classify.loc,            meta_src.metadata_tags.classify.dewey, -          meta_src.metadata_tags.notes.relation, -          meta_src.metadata_tags.notes.type, -          meta_src.metadata_tags.identifier.oclc, -          meta_src.metadata_tags.identifier.isbn, +          #meta_src.metadata_tags.notes.relation, +          #meta_src.metadata_tags.notes.type, +          #meta_src.metadata_tags.identifier.oclc, +          #meta_src.metadata_tags.identifier.isbn,            'msgstr ""',            meta_trn.metadata_tags.classify.head,            meta_trn.metadata_tags.classify.subject,            meta_trn.metadata_tags.classify.topic_register,            meta_trn.metadata_tags.classify.loc,            meta_trn.metadata_tags.classify.dewey, -          meta_trn.metadata_tags.notes.relation, -          meta_trn.metadata_tags.notes.type, -          meta_trn.metadata_tags.identifier.oclc, -          meta_trn.metadata_tags.identifier.isbn, +          #meta_trn.metadata_tags.notes.relation, +          #meta_trn.metadata_tags.notes.type, +          #meta_trn.metadata_tags.identifier.oclc, +          #meta_trn.metadata_tags.identifier.isbn,          ]          w << [            "#. #{@po4a_identify_type} - metadata: date", @@ -493,14 +529,22 @@ GSUB                z += %{"#{x}"\n} if x =~/^\s+:\S+?: /              end            end -          @pot[:metadata] << z << @br +          @pot[:metadata] << z << br            #puts z unless z.empty?          end        end        def pot_structure(desc,orig,trans,indent=0,hang=0) -        SiSU_Po4aUtils::Wrap.new(@md,orig,trans,desc,@wrap_width,indent,hang) +        SiSU_Po4aUtils::Wrap.new( +          @md, +          orig, +          trans, +          desc, +          @wrap_width, +          indent, +          hang +        )        end -      def pot_structure_heading(dob_src='',notes_s='',dob_trn='',notes_t='')                    #% Used to extract the structure of a document +      def pot_structure_heading(dob_src='',notes_s='',dob_trn='',notes_t='')   #% used to extract the structure of a document          lv=n=n3=nil          lv=dob_src.ln          n=lv - 1 @@ -511,7 +555,9 @@ GSUB          d="#{dob_src.is.to_s} (level #{dob_src.lv})"          instruct=s_mark=''          if @md.opt.act[:maintenance][:set]==:on -          instruct=%{\n# markup for headings is marker at the start of the line/object, indicating the heading level, and if provided an associated name tag, this heading is "#{mark}"} +          instruct=%{\n# markup for headings is marker at the start of the line/object, } \ +          + %{indicating the heading level, and if provided an associated name tag, } \ +          + %{this heading is "#{mark}"}            s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}          end          desc="#{d}#{s_mark}#{instruct}" @@ -519,18 +565,18 @@ GSUB          trans=(dob_trn=='') ? '' : "#{s_mark}#{dob_trn.obj}"          util=pot_structure(desc,orig,trans)          wrapped=util.line_wrap -        @pot[:body] << wrapped << @br # main text, contents, body KEEP +        @pot[:body] << wrapped << br # main text, contents, body KEEP          if @@endnotes[:para] \          and notes_s.length > 0 \          and not @@endnotes_ -          @pot[:body] << @br +          @pot[:body] << br            wrap_endnotes(notes_s,notes_t)          elsif @@endnotes[:para] \          and @@endnotes_ -          @pot[:body] << @br*2 +          @pot[:body] << br*2          end        end -      def pot_structure_para(dob_src='',notes_s='',dob_trn='',notes_t='')                       #% Used to extract the structure of a document +      def pot_structure_para(dob_src='',notes_s='',dob_trn='',notes_t='')      #% used to extract the structure of a document          util=nil          wrapped=if dob_src.indent =~/[1-9]/ \          and dob_src.indent == dob_src.hang @@ -540,7 +586,8 @@ GSUB              d="#{dob_src.is.to_s}: indent #{dob_src.indent}, bullet"              instruct=s_mark=''              if @md.opt.act[:maintenance][:set]==:on -              instruct=%{\n# markup for indented bullet text is at the start of the line/object, an underscore followed by the indent level and an asterisk "#{mark}"} +              instruct=%{\n# markup for indented bullet text is at the start of the line/object, } \ +              + %{an underscore followed by the indent level and an asterisk "#{mark}"}                s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}              end              desc="#{d}#{s_mark}#{instruct}" @@ -549,7 +596,8 @@ GSUB              d="#{dob_src.is.to_s}: indent #{dob_src.indent}"              instruct=s_mark=''              if @md.opt.act[:maintenance][:set]==:on -              instruct=%{\n# markup for indented text is at the start of the line/object, an underscore followed by the indent level "#{mark}"} +              instruct=%{\n# markup for indented text is at the start of the line/object, } \ +              + %{an underscore followed by the indent level "#{mark}"}                s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}              end              desc="#{d}#{s_mark}#{instruct}" @@ -564,7 +612,11 @@ GSUB            d="#{dob_src.is.to_s}: hang #{dob_src.hang} indent #{dob_src.indent}"            instruct=s_mark=''            if @md.opt.act[:maintenance][:set]==:on -            instruct=%{\n# markup for indented text with a first line indented to a different level from the rest of the paragraph, is at the start of the line/object, an underscore and the first indent level a second underscore and the indent level for the rest of the paragraph, "#{mark1}"} +            instruct=%{\n# markup for indented text with a first line indented } \ +            + %{to a different level from the rest of the paragraph, } \ +            + %{is at the start of the line/object, } \ +            + %{an underscore and the first indent level } \ +            + %{a second underscore and the indent level for the rest of the paragraph, "#{mark1}"}              s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}            end            desc="#{d}#{s_mark}#{instruct}" @@ -578,7 +630,8 @@ GSUB              d="#{dob_src.is.to_s}: bullet"              instruct=s_mark=''              if @md.opt.act[:maintenance][:set]==:on -              instruct=%{\n# markup for indented text is at the start of the line/object, an underscore followed by an asterisk "#{mark}"} +              instruct=%{\n# markup for indented text is at the start of the line/object, } \ +              + %{an underscore followed by an asterisk "#{mark}"}                s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}              end              desc="#{d}#{s_mark}#{instruct}" @@ -599,23 +652,24 @@ GSUB            util=pot_structure(desc,orig,trans)          end          wrapped=util.line_wrap -        @pot[:body] << wrapped << @br # main text, contents, body KEEP +        @pot[:body] << wrapped << br # main text, contents, body KEEP          if @@endnotes[:para] \          and notes_s.length > 0 \          and not @@endnotes_ -          @pot[:body] << @br +          @pot[:body] << br            wrap_endnotes(notes_s,notes_t)          elsif @@endnotes[:para] \          and @@endnotes_ -          @pot[:body] << @br*2 +          @pot[:body] << br*2          end        end -      def pot_structure_block(dob_src='',notes_s='',dob_trn='',notes_t='')                      #% Used to extract the structure of a document +      def pot_structure_block(dob_src='',notes_s='',dob_trn='',notes_t='')     #% used to extract the structure of a document          mark="block{\\n\\n...\\n\\n}block"          d=dob_src.is.to_s          instruct=s_mark=''          if @md.opt.act[:maintenance][:set]==:on -          instruct="\n# block text is a text block with an opening and closing marker, the content of which may be wrapped" +          instruct=%{\n# block text is a text block with an opening and closing marker, } \ +          + %{the content of which may be wrapped}            s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}          end          desc="#{d}#{s_mark}#{instruct}" @@ -623,14 +677,15 @@ GSUB          trans=(dob_trn=='') ? '' : dob_trn.obj          util=pot_structure(desc,orig,trans)          unwrapped=util.no_line_wrap_block -        @pot[:body] << unwrapped << @br +        @pot[:body] << unwrapped << br        end -      def pot_structure_group(dob_src='',notes_s='',dob_trn='',notes_t='')                      #% Used to extract the structure of a document +      def pot_structure_group(dob_src='',notes_s='',dob_trn='',notes_t='')     #% used to extract the structure of a document          mark="group{\\n\\n...\\n\\n}group"          d=dob_src.is.to_s          instruct=s_mark=''          if @md.opt.act[:maintenance][:set]==:on -          instruct="\n# group text is a text block with an opening and closing marker, the content of which may be wrapped" +          instruct=%{\n# group text is a text block with an opening and closing marker, } \ +          + %{the content of which may be wrapped}            s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}          end          desc="#{d}#{s_mark}#{instruct}" @@ -638,14 +693,17 @@ GSUB          trans=(dob_trn=='') ? '' : dob_trn.obj          util=pot_structure(desc,orig,trans)          unwrapped=util.no_line_wrap_block -        @pot[:body] << unwrapped << @br +        @pot[:body] << unwrapped << br        end -      def pot_structure_verse(dob_src='',notes_s='',dob_trn='',notes_t='')                      #% Used to extract the structure of a document +      def pot_structure_verse(dob_src='',notes_s='',dob_trn='',notes_t='')     #% used to extract the structure of a document          mark="poem{\n\nverse\n\nverse\n\n...\n\n}poem"          d=dob_src.is.to_s          instruct=s_mark=''          if @md.opt.act[:maintenance][:set]==:on -          instruct="\n# verse are part of the text block described as a poem, the first verse is preceeded by an opening marker, and the last verse by a closing marker, the content of which should remain unwrapped" +          instruct=%{\n# verse are part of the text block described as a poem, } \ +          + %{the first verse is preceeded by an opening marker, } \ +          + %{and the last verse by a closing marker, } \ +          + %{the content of which should remain unwrapped}            s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}          end          desc="#{d}#{s_mark}#{instruct}" @@ -653,14 +711,15 @@ GSUB          trans=(dob_trn=='') ? '' : dob_trn.obj          util=pot_structure(desc,orig,trans)          unwrapped=util.no_line_wrap_block -        @pot[:body] << unwrapped << @br +        @pot[:body] << unwrapped << br        end -      def pot_structure_code(dob_src='',notes_s='',dob_trn='',notes_t='')                       #% Used to extract the structure of a document +      def pot_structure_code(dob_src='',notes_s='',dob_trn='',notes_t='')      #% used to extract the structure of a document          mark="code{\\n\\n...\\n\\n}code"          d=dob_src.is.to_s          instruct=s_mark=''          if @md.opt.act[:maintenance][:set]==:on -          instruct="\n# codeblocks are a text block with an opening and closing marker, the content of which should remain unwrapped" +          instruct=%{\n# codeblocks are a text block with an opening and closing marker, } \ +          + %{the content of which should remain unwrapped}            s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}          end          desc="#{d}#{s_mark}#{instruct}" @@ -668,14 +727,15 @@ GSUB          trans=(dob_trn=='') ? '' : dob_trn.obj          util=pot_structure(desc,orig,trans)          unwrapped=util.no_line_wrap_block -        @pot[:body] << unwrapped << @br +        @pot[:body] << unwrapped << br        end -      def pot_structure_table(dob_src='',notes_s='',dob_trn='',notes_t='')                      #% Used to extract the structure of a document +      def pot_structure_table(dob_src='',notes_s='',dob_trn='',notes_t='')     #% used to extract the structure of a document          mark="table{\\n\\n...\\n\\n}table"          d=dob_src.is.to_s          instruct=s_mark=''          if @md.opt.act[:maintenance][:set]==:on -          instruct="\n# tables are a text block with an opening and closing marker, the content of which should remain unwrapped" +          instruct=%{\n# tables are a text block with an opening and closing marker, } \ +          + %{the content of which should remain unwrapped}            s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}          end          desc="#{d}#{s_mark}#{instruct}" @@ -685,27 +745,27 @@ GSUB          trans=trans.gsub(/#{Mx[:tc_c]}/,"\n")          util=pot_structure(desc,orig,trans)          unwrapped=util.no_line_wrap_block -        @pot[:body] << unwrapped << @br +        @pot[:body] << unwrapped << br        end -      def pot_structure_idx(dob_src='',dob_trn='')                      #% Used to extract the structure of a document -        mark="={ ... }" -        instruct=s_mark='' -        if @md.opt.act[:maintenance][:set]==:on -          instruct="\n# the book index should be attached unwrapped to the preceding text block (there should be a new line, but no empty line)" -          s_mark="\n# " + %{"\\n#{mark}\\n\\n"} -        end -        d='book-idx' -        desc="#{d}#{s_mark}#{instruct}" -        orig='={' + dob_src.idx + '}' -        trans=if defined? dob_trn.idx \ -        and not dob_trn.idx.nil? \ -        and not dob_trn.idx.empty? -          '={' + dob_trn.idx + '}' -        else '' -        end -        util=pot_structure(desc,orig,trans) -        unwrapped=util.no_line_wrap_block -        @pot[:body] << unwrapped << @br +      def pot_structure_idx(dob_src='',dob_trn='')                             #% used for book index but broken as original markup lost, already abstracted, fix +        #mark="={ ... }" +        #instruct=s_mark='' +        #if @md.opt.act[:maintenance][:set]==:on +        #  instruct="\n# the book index should be attached unwrapped to the preceding text block (there should be a new line, but no empty line)" +        #  s_mark="\n# " + %{"\\n#{mark}\\n\\n"} +        #end +        #d='book-idx' +        #desc="#{d}#{s_mark}#{instruct}" +        #orig='={' + dob_src.idx + '}' +        #trans=if defined? dob_trn.idx \ +        #and not dob_trn.idx.nil? \ +        #and not dob_trn.idx.empty? +        #  '={' + dob_trn.idx + '}' +        #else '' +        #end +        #util=pot_structure(desc,orig,trans) +        #unwrapped=util.no_line_wrap_block +        #@pot[:body] << unwrapped << br        end        def pot_markup(data_src,data_trn)          #@endnotes,@copen,@pot_contents_close=Array.new(3){[]} @@ -734,24 +794,35 @@ GSUB                s+=1;t+=1                next              end -            if (data_src[s].is == :comment or data_trn[t].is == :comment) \ +            if ((data_src[s].is == :comment) \ +            || (data_trn[t].is == :comment)) \              and (data_src[s].is != data_trn[t].is)                if data_src[s].is == :comment -                puts "src (comment):\n\t" + data_src[s].obj if @md.opt.act[:maintenance][:set]==:on +                if @md.opt.act[:maintenance][:set]==:on +                  puts "src (comment):\n\t" \ +                  + data_src[s].obj +                end                  s+=1                  #next if data_src[s].is == :comment                elsif data_trn[t].is == :comment -                puts "trans (comment):\n\t" + data_trn[t].obj if @md.opt.act[:maintenance][:set]==:on +                if @md.opt.act[:maintenance][:set]==:on +                  puts "trans (comment):\n\t" \ +                  + data_trn[t].obj +                end                  t+=1                  #next if data_trn[t].is == :comment                end              end -            if (defined? data_src[s].ocn and data_src[s].ocn.is_a?(Fixnum)) \ -            and (defined? data_trn[t].ocn and data_trn[t].ocn.is_a?(Fixnum)) \ +            if ((defined? data_src[s].ocn) \ +            && (data_src[s].ocn.is_a?(Fixnum))) \ +            and ((defined? data_trn[t].ocn) \ +            && (data_trn[t].ocn.is_a?(Fixnum))) \              and (data_src[s].ocn == data_trn[t].ocn)                @m_s,@m_t=s,t -            elsif (defined? data_src[s].ocn and data_src[s].ocn.is_a?(Fixnum)) \ -            and (defined? data_trn[t].ocn and data_trn[t].ocn.is_a?(Fixnum)) \ +            elsif ((defined? data_src[s].ocn) \ +            && (data_src[s].ocn.is_a?(Fixnum))) \ +            and ((defined? data_trn[t].ocn) \ +            && (data_trn[t].ocn.is_a?(Fixnum))) \              and (data_src[s].ocn != data_trn[t].ocn)                p '--- OCN ---'                p 'mis-match' @@ -766,7 +837,8 @@ GSUB                p data_trn[@m_t].ocn                p data_trn[@m_t].obj                exit -            elsif (defined? data_src[s].ocn and defined? data_trn[t].ocn \ +            elsif (((defined? data_src[s].ocn) \ +            && (defined? data_trn[t].ocn)) \              and data_src[s].ocn.class != data_trn[t].ocn.class)                p '--- OCN class ---'                p 'mis-match' @@ -813,13 +885,20 @@ GSUB              @p_num=SiSU_Po4aUtils::ParagraphNumber.new(paranum)            end            case dob_src.is -          when :heading then pot_structure_heading(dob_src,notes_s,dob_trn,notes_t) -          when :para    then pot_structure_para(dob_src,notes_s,dob_trn,notes_t) -          when :group   then pot_structure_group(dob_src,notes_s,dob_trn,notes_t) -          when :block   then pot_structure_block(dob_src,notes_s,dob_trn,notes_t) -          when :verse   then pot_structure_verse(dob_src,notes_s,dob_trn,notes_t) -          when :code    then pot_structure_code(dob_src,notes_s,dob_trn,notes_t) -          when :table   then pot_structure_table(dob_src,notes_s,dob_trn,notes_t) +          when :heading +            pot_structure_heading(dob_src,notes_s,dob_trn,notes_t) +          when :para +            pot_structure_para(dob_src,notes_s,dob_trn,notes_t) +          when :group +            pot_structure_group(dob_src,notes_s,dob_trn,notes_t) +          when :block +            pot_structure_block(dob_src,notes_s,dob_trn,notes_t) +          when :verse +            pot_structure_verse(dob_src,notes_s,dob_trn,notes_t) +          when :code +            pot_structure_code(dob_src,notes_s,dob_trn,notes_t) +          when :table +            pot_structure_table(dob_src,notes_s,dob_trn,notes_t)            end            if defined? dob_src.idx \            and not dob_src.idx.nil? \ @@ -835,9 +914,10 @@ GSUB          end          #[dob_src,dob_trn]        end -      def markup(dob)                                     # Used for major markup instructions +      def markup(dob)                                                          # used for major markup instructions          SiSU_Env::InfoEnv.new(@md.fns) -        dob.obj=dob.obj.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/, +        dob.obj=dob.obj. +          gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,              "#{Px[:po_bold_o]}\\1#{Px[:po_bold_c]}").            gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,              "#{Px[:po_italics_o]}\\1#{Px[:po_italics_c]}"). @@ -857,19 +937,26 @@ GSUB              "#{Px[:po_monospace_o]}\\1#{Px[:po_monospace_c]}")          notes=''          unless dob.is==:code -          dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,'\1'). +          dob.obj=dob.obj. +            gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,'\1').              gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1'). -            gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1 [link: <\2>]'). -            gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image/,'\1 [link: local image]'). +            gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/, +              '\1 [link: <\2>]'). +            gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image/, +              '\1 [link: local image]').              gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1')            notes=extract_endnotes(dob)            #% ### footnotes current state - extracted -          dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'~^').   # endnote marker marked up +          dob.obj=dob.obj. +            gsub(/#{Mx[:en_a_o]}([\d]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'~^').   # endnote marker marked up            #% ### footnotes current state - keep inline            #dob.obj.gsub!(/#{Mx[:en_a_o]}[\d]+\s+(.+?)#{Mx[:en_a_c]}/,'~{ \1 }~')     # inline endnote with marker marked up -            gsub(/#{Mx[:en_b_o]}[\d]+\s+(.+?)#{Mx[:en_b_c]}/,'~[ \1 ]~').     # inline endnote with marker marked up -            gsub(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/,'~{\1 \2 }~'). # inline endnote with marker marked up -            gsub(/#{Mx[:en_b_o]}([*+]+)\s+(.+?)#{Mx[:en_b_c]}/,'~[\1 \2 ]~'). # inline endnote with marker marked up +            gsub(/#{Mx[:en_b_o]}[\d]+\s+(.+?)#{Mx[:en_b_c]}/, +              '~[ \1 ]~').     # inline endnote with marker marked up +            gsub(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/, +              '~{\1 \2 }~'). # inline endnote with marker marked up +            gsub(/#{Mx[:en_b_o]}([*+]+)\s+(.+?)#{Mx[:en_b_c]}/, +              '~[\1 \2 ]~'). # inline endnote with marker marked up              gsub(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<').              gsub(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>').              gsub(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&'). @@ -898,9 +985,12 @@ GSUB            gsub(/<a href=".+?">(.+?)<\/a>/m,'\1').            gsub(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,'').                       # remove name links            gsub(/ |#{Mx[:nbsp]}/,' ').                                       # decide on -          gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,'    [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]") -          gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/,'    [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]") -          gsub(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]') +          gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/, +            '    [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]") +          gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/, +            '    [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]") +          gsub(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/, +            '[image: "\1"]')          [dob,notes]        end        def publish(fn,pot) @@ -910,18 +1000,18 @@ GSUB          content << pot[:metadata]          content << pot[:body]          content << @@endnotes[:end] if @@endnotes_ -        Output.new(fn,content,@md).po4a +        Output.new(fn,content,@md,@process).po4a          @@endnotes={ para: [], end: [] }        end      end      class Output <Source        include SiSU_Param        include SiSU_Env -      def initialize(fn,content,md) -        @fn,@content,@md=fn,content,md +      def initialize(fn,content,md,process=:complete) +        @fn,@content,@md,@process=fn,content,md,process          @file=SiSU_Env::FileOp.new(md,fn)        end -      def po4a                                                                #%pot output +      def po4a                                                                 #%pot output          file_pot=(@md.opt.f_pth[:lng] ==@md.opt.lng_base) \          ? @file.write_file.pot          : @file.write_file.po @@ -951,12 +1041,20 @@ GSUB        def po4a_git          unless @md.opt.act[:maintenance][:set]==:on            require_relative 'git'                           # git.rb -          git=SiSU_Git::Source.new(@md.opt) -          git.create_file_structure_git unless FileTest.directory?(@file.output_path.pot_git.dir) +          git=SiSU_Git::Source.new(@md.opt,@process) +          unless FileTest.directory?(@file.output_path.pot_git.dir) +            git.create_file_structure_git +          end            if @md.opt.f_pth[:lng] ==@md.opt.lng_base -            FileUtils::cp(@file.place_file.pot.dir, @file.output_path.pot_git.dir) +            FileUtils::cp( +              @file.place_file.pot.dir, +              @file.output_path.pot_git.dir +            )            else # naive, work on --> -            FileUtils::cp(@file.place_file.po.dir, @file.output_path.po_git.dir) #unless FileTest.file?(@file.place_file.po_git.dir) +            FileUtils::cp( +              @file.place_file.po.dir, +              @file.output_path.po_git.dir +            ) #unless FileTest.file?(@file.place_file.po_git.dir)            end            git.read          end diff --git a/lib/sisu/current/se_info_env.rb b/lib/sisu/current/se_info_env.rb index 85dd043c..276f14e6 100644 --- a/lib/sisu/current/se_info_env.rb +++ b/lib/sisu/current/se_info_env.rb @@ -1060,7 +1060,7 @@ WOK          @sys.home        end        def sisurc_path -        GetInit.new.sisu_yaml.rc_path +        SiSU_Get_Init::GetInit.new.sisu_yaml.rc_path        end        def pwd          @sys.pwd diff --git a/lib/sisu/develop/ao.rb b/lib/sisu/develop/ao.rb index 0373149e..1ca49338 100644 --- a/lib/sisu/develop/ao.rb +++ b/lib/sisu/develop/ao.rb @@ -83,8 +83,8 @@ module SiSU_AO      end    end    class Source <Instantiate -    def initialize(opt,fnx=nil) -      @opt,@fnx=opt,fnx +    def initialize(opt,fnx=nil,process=:complete) +      @opt,@fnx,@process=opt,fnx,process        @per ||=SiSU_AO_Persist::Persist.new.persist_init        @per.fns ||=opt.fns        fn_use=if fnx \ @@ -273,6 +273,7 @@ module SiSU_AO    protected      def create_ao        ao_array=[] +      fnp = @fnx ? "#{@opt.fno} #{@fnx}" : @opt.fno        unless @opt.act[:quiet][:set]==:on          tell=(@opt.act[:verbose][:set]==:on \          || @opt.act[:verbose_plus][:set]==:on \ @@ -283,7 +284,8 @@ module SiSU_AO            )          : SiSU_Screen::Ansi.new(              @opt.act[:color_state][:set], -            'Document Abstraction',"[#{@opt.f_pth[:lng_is]}] #{@opt.fno}" +            'Document Abstraction', +            "[#{@opt.f_pth[:lng_is]}] #{fnp}"            )          tell.blue_title_hi        end @@ -296,7 +298,7 @@ module SiSU_AO        meta=file_array=@env.source_file_processing_array(fn)        @md=SiSU_Param::Parameters::Instructions.new(meta,@opt).extract        meta=nil -      ao=SiSU_AO::Make.new(fn,@md,file_array).song +      ao=SiSU_AO::Make.new(fn,@md,file_array,@fnx,@process).song        if (@opt.act[:verbose][:set]==:on \        || @opt.act[:verbose_plus][:set]==:on \        || @opt.act[:maintenance][:set]==:on) @@ -347,7 +349,7 @@ module SiSU_AO        ao=[]        ao=(FileTest.file?(@fnc)) \        ? (File.open(@fnc,'r:utf-8'){ |f| ao=Marshal.load(f)}) -      : SiSU_AO::Source.new(@opt).create_ao +      : SiSU_AO::Source.new(@opt,@fnx,@process).create_ao      end      def read_idx_sst        m=[] @@ -519,8 +521,8 @@ module SiSU_AO      end    end    class Make -    def initialize(fn,md,data) -      @fn,@md,@data=fn,md,data +    def initialize(fn,md,data,fnx,process) +      @fn,@md,@data,@fnx,@process=fn,md,data,fnx,process        @env=SiSU_Env::InfoEnv.new(@md.fns)      end      def reset @@ -551,7 +553,7 @@ module SiSU_AO        data_obj,          tags_map,          ocn_html_seg_map= -          SiSU_AO_Numbering::Numbering.new(@md,data_obj).            # ao_numbering.rb +          SiSU_AO_Numbering::Numbering.new(@md,data_obj,@fnx,@process). # ao_numbering.rb              numbering_song        data_obj,          book_index_rel, diff --git a/lib/sisu/develop/ao_doc_str.rb b/lib/sisu/develop/ao_doc_str.rb index bf7716dc..7f054660 100644 --- a/lib/sisu/develop/ao_doc_str.rb +++ b/lib/sisu/develop/ao_doc_str.rb @@ -1233,8 +1233,8 @@ module SiSU_AO_DocumentStructureExtract      end    end    class OCN -    def initialize(md,data) -      @md,@data=md,data +    def initialize(md,data,fnx,process) +      @md,@data,@fnx,@process=md,data,fnx,process      end      def structure_info        def lv @@ -1294,31 +1294,33 @@ has incorrect level and/or parent level  --}      end      def required_headers_present? -      unless (defined? @md.title \ -      and @md.title.full) -         STDERR.puts %{required header missing: +      if @process == :complete +        unless (defined? @md.title \ +        and @md.title.full) +           STDERR.puts %{required header missing:  @title:  SKIPPED processing file:  [#{@md.opt.lng}] "#{@md.fns}"  } -        if @md.opt.act[:no_stop][:set]==:on -          $process_document = :skip -        else exit +          if @md.opt.act[:no_stop][:set]==:on +            $process_document = :skip +          else exit +          end          end -      end -      unless (defined? @md.creator.author \ -      and @md.creator.author) -         STDERR.puts %{required header missing: +        unless (defined? @md.creator.author \ +        and @md.creator.author) +           STDERR.puts %{required header missing:  @creator:   :author: anonymous?  SKIPPED processing file:  [#{@md.opt.lng}] "#{@md.fns}"  } -        if @md.opt.act[:no_stop][:set]==:on -          $process_document = :skip -        else exit +          if @md.opt.act[:no_stop][:set]==:on +            $process_document = :skip +          else exit +          end          end        end      end @@ -1357,337 +1359,341 @@ SKIPPED processing file:            if not dob.obj =~/~#|-#/              ocn+=1            end -          if dob.is==:heading \ -          and (ln.to_s =~/^[0-9]/ \ -          or ln.to_s =~@md.lv0 \ -          or ln.to_s =~@md.lv1 \ -          or ln.to_s =~@md.lv2 \ -          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.lv7) -            if not dob.obj =~/~#|-#/ -              ocnh+=1 -            end -            if ln==0 \ -            or ln=~@md.lv0 -              @lev_occurences[:a] += 1 -              if not dob.obj =~/~#|-#/ -                ocn_flag=true -                ocnh0+=1                     #heading -                node0="0:#{ocnh0};#{ocn}" -              else -                #document_structure_check_info(node0,node0,:error) #fix -                ocn_flag=false -                node0="0:0;0" -              end -              document_structure_check_info(node0,node0) -              @collapsed_lv0=0 -              collapsed_level=@collapsed_lv0 -              node,ocn_sp,parent=node0,"h#{ocnh}",'ROOT' -            elsif ln==1 \ -            or ln=~@md.lv1 -              @lev_occurences[:b] += 1 +          if @process == :complete \ +          or (@fnx == @md.opt.fns \ +          && @md.opt.fns =~/.sst$/) +            if dob.is==:heading \ +            and (ln.to_s =~/^[0-9]/ \ +            or ln.to_s =~@md.lv0 \ +            or ln.to_s =~@md.lv1 \ +            or ln.to_s =~@md.lv2 \ +            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.lv7)                if not dob.obj =~/~#|-#/ -                ocn_flag=true -                ocnh1+=1                     #heading -                node1="1:#{ocnh1};#{ocn}" -              else -                #document_structure_check_info(node0,node0,:error) #fix -                ocn_flag=false -                node1="1:0;0" +                ocnh+=1                end -              parent=if node0 -                document_structure_check_info(node1,node0) -                @collapsed_lv1=@collapsed_lv0+1 -                node0 -              else -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node0,node0,:error) -                node0 -              end -              collapsed_level=@collapsed_lv1 -              node,ocn_sp,parent=node1,"h#{ocnh}",node0 #FIX -            elsif ln==2 \ -            or ln=~@md.lv2 -              @lev_occurences[:c] += 1 -              if not dob.obj =~/~#|-#/ -                ocn_flag=true -                ocnh2+=1 -                node2="2:#{ocnh2};#{ocn}" -              else -                #document_structure_check_info(node0,node0,:error) #fix -                ocn_flag=false -                node2="2:0;0" -              end -              parent=if node1 -                document_structure_check_info(node2,node1) -                @collapsed_lv2=@collapsed_lv1+1 -                node1 -              else -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node2,node0,:error) -                node0 -              end -              collapsed_level=@collapsed_lv2 -              node,ocn_sp=node2,"h#{ocnh}" -            elsif ln==3 \ -            or ln=~@md.lv3 -              @lev_occurences[:d] += 1 -              if not dob.obj =~/~#|-#/ -                ocn_flag=true -                ocnh3+=1 -                node3="3:#{ocnh3};#{ocn}" -              else -                #document_structure_check_info(node0,node0,:error) #fix -                ocn_flag=false -                node3="3:0;0" -              end -              parent=if node2 -                document_structure_check_info(node3,node2) -                @collapsed_lv3=@collapsed_lv2+1 -                node2 -              elsif node1 -                warning_incorrect_parent_level_or_level(dob.obj) -                puts %{parent is :A~ & this level #{dob.lv} +              if ln==0 \ +              or ln=~@md.lv0 +                @lev_occurences[:a] += 1 +                if not dob.obj =~/~#|-#/ +                  ocn_flag=true +                  ocnh0+=1                     #heading +                  node0="0:#{ocnh0};#{ocn}" +                else +                  #document_structure_check_info(node0,node0,:error) #fix +                  ocn_flag=false +                  node0="0:0;0" +                end +                document_structure_check_info(node0,node0) +                @collapsed_lv0=0 +                collapsed_level=@collapsed_lv0 +                node,ocn_sp,parent=node0,"h#{ocnh}",'ROOT' +              elsif ln==1 \ +              or ln=~@md.lv1 +                @lev_occurences[:b] += 1 +                if not dob.obj =~/~#|-#/ +                  ocn_flag=true +                  ocnh1+=1                     #heading +                  node1="1:#{ocnh1};#{ocn}" +                else +                  #document_structure_check_info(node0,node0,:error) #fix +                  ocn_flag=false +                  node1="1:0;0" +                end +                parent=if node0 +                  document_structure_check_info(node1,node0) +                  @collapsed_lv1=@collapsed_lv0+1 +                  node0 +                else +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node0,node0,:error) +                  node0 +                end +                collapsed_level=@collapsed_lv1 +                node,ocn_sp,parent=node1,"h#{ocnh}",node0 #FIX +              elsif ln==2 \ +              or ln=~@md.lv2 +                @lev_occurences[:c] += 1 +                if not dob.obj =~/~#|-#/ +                  ocn_flag=true +                  ocnh2+=1 +                  node2="2:#{ocnh2};#{ocn}" +                else +                  #document_structure_check_info(node0,node0,:error) #fix +                  ocn_flag=false +                  node2="2:0;0" +                end +                parent=if node1 +                  document_structure_check_info(node2,node1) +                  @collapsed_lv2=@collapsed_lv1+1 +                  node1 +                else +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node2,node0,:error) +                  node0 +                end +                collapsed_level=@collapsed_lv2 +                node,ocn_sp=node2,"h#{ocnh}" +              elsif ln==3 \ +              or ln=~@md.lv3 +                @lev_occurences[:d] += 1 +                if not dob.obj =~/~#|-#/ +                  ocn_flag=true +                  ocnh3+=1 +                  node3="3:#{ocnh3};#{ocn}" +                else +                  #document_structure_check_info(node0,node0,:error) #fix +                  ocn_flag=false +                  node3="3:0;0" +                end +                parent=if node2 +                  document_structure_check_info(node3,node2) +                  @collapsed_lv3=@collapsed_lv2+1 +                  node2 +                elsif node1 +                  warning_incorrect_parent_level_or_level(dob.obj) +                  puts %{parent is :A~ & this level #{dob.lv}  either parent should be level :B~  or this level should be level :B~ rather than #{dob.lv}} -                document_structure_check_info(node3,node1,:error) -                @collapsed_lv3=@collapsed_lv1+1 -                node1 -              else -                document_structure_check_info(node3,node0,:error) -                warning_incorrect_parent_level_or_level(dob.obj) -                node0 -              end -              collapsed_level=@collapsed_lv3 -              node,ocn_sp=node3,"h#{ocnh}" -            elsif ln==4 \ -            or ln=~@md.lv4 -              @lev_occurences[:l1] += 1 -              if not dob.obj =~/~#|-#/ -                ocn_flag=true -                ocnh4+=1 -                node4="4:#{ocnh4};#{ocn}" -              else -                ocn_flag=false -                node4="4:0;0" -              end -              parent=if node3 -                document_structure_check_info(node4,node3) -                @collapsed_lv4=@collapsed_lv3+1 -                node3 -              elsif node2 -                document_structure_check_info(node4,node2) -                @collapsed_lv4=@collapsed_lv2+1 -                node2 -              elsif node1 -                document_structure_check_info(node4,node1) -                @collapsed_lv4=@collapsed_lv1+1 -                node1 -              elsif node0 -                document_structure_check_info(node4,node0) -                @collapsed_lv4=@collapsed_lv0+1 -                node0 -              else -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node4,node0,:error) -                node0 -              end -              collapsed_level=@collapsed_lv4 -              node,ocn_sp=node4,"h#{ocnh}" -            elsif ln==5 \ -            or ln=~@md.lv5 -              @lev_occurences[:l2] += 1 -              if not dob.obj =~/~#|-#/ -                ocn_flag=true -                ocnh5+=1 -                node5="5:#{ocnh5};#{ocn}" -              else -                ocn_flag=false -                node5="5:0;0" -              end -              parent=if node4 -                document_structure_check_info(node5,node4) -                @collapsed_lv5=@collapsed_lv4+1 -                node4 -              elsif node3 -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node5,node3,:error) -                @collapsed_lv5=@collapsed_lv3+1 -                node3 -              elsif node2 -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node5,node2,:error) -                @collapsed_lv5=@collapsed_lv2+1 -                node2 -              elsif node1 -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node5,node1,:error) -                @collapsed_lv5=@collapsed_lv1+1 -                node1 -              else -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node5,node0,:error) -                node0 -              end -              collapsed_level=@collapsed_lv5 -              node,ocn_sp=node5,"h#{ocnh}" -            elsif ln==6 \ -            or ln=~@md.lv6 -              @lev_occurences[:l3] += 1 -              if not dob.obj =~/~#|-#/ -                ocn_flag=true -                ocnh6+=1 -                node6="6:#{ocnh6};#{ocn}" -              else -                ocn_flag=false -                node6="6:0;0" -              end -              parent=if node5 -                document_structure_check_info(node6,node5) -                @collapsed_lv6=@collapsed_lv5+1 -                node5 -              elsif node4 -                warning_incorrect_parent_level_or_level(dob.obj) -                puts "parent is level #4 (1~) & this level ##{dob.ln} (#{dob.lv}~) +                  document_structure_check_info(node3,node1,:error) +                  @collapsed_lv3=@collapsed_lv1+1 +                  node1 +                else +                  document_structure_check_info(node3,node0,:error) +                  warning_incorrect_parent_level_or_level(dob.obj) +                  node0 +                end +                collapsed_level=@collapsed_lv3 +                node,ocn_sp=node3,"h#{ocnh}" +              elsif ln==4 \ +              or ln=~@md.lv4 +                @lev_occurences[:l1] += 1 +                if not dob.obj =~/~#|-#/ +                  ocn_flag=true +                  ocnh4+=1 +                  node4="4:#{ocnh4};#{ocn}" +                else +                  ocn_flag=false +                  node4="4:0;0" +                end +                parent=if node3 +                  document_structure_check_info(node4,node3) +                  @collapsed_lv4=@collapsed_lv3+1 +                  node3 +                elsif node2 +                  document_structure_check_info(node4,node2) +                  @collapsed_lv4=@collapsed_lv2+1 +                  node2 +                elsif node1 +                  document_structure_check_info(node4,node1) +                  @collapsed_lv4=@collapsed_lv1+1 +                  node1 +                elsif node0 +                  document_structure_check_info(node4,node0) +                  @collapsed_lv4=@collapsed_lv0+1 +                  node0 +                else +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node4,node0,:error) +                  node0 +                end +                collapsed_level=@collapsed_lv4 +                node,ocn_sp=node4,"h#{ocnh}" +              elsif ln==5 \ +              or ln=~@md.lv5 +                @lev_occurences[:l2] += 1 +                if not dob.obj =~/~#|-#/ +                  ocn_flag=true +                  ocnh5+=1 +                  node5="5:#{ocnh5};#{ocn}" +                else +                  ocn_flag=false +                  node5="5:0;0" +                end +                parent=if node4 +                  document_structure_check_info(node5,node4) +                  @collapsed_lv5=@collapsed_lv4+1 +                  node4 +                elsif node3 +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node5,node3,:error) +                  @collapsed_lv5=@collapsed_lv3+1 +                  node3 +                elsif node2 +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node5,node2,:error) +                  @collapsed_lv5=@collapsed_lv2+1 +                  node2 +                elsif node1 +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node5,node1,:error) +                  @collapsed_lv5=@collapsed_lv1+1 +                  node1 +                else +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node5,node0,:error) +                  node0 +                end +                collapsed_level=@collapsed_lv5 +                node,ocn_sp=node5,"h#{ocnh}" +              elsif ln==6 \ +              or ln=~@md.lv6 +                @lev_occurences[:l3] += 1 +                if not dob.obj =~/~#|-#/ +                  ocn_flag=true +                  ocnh6+=1 +                  node6="6:#{ocnh6};#{ocn}" +                else +                  ocn_flag=false +                  node6="6:0;0" +                end +                parent=if node5 +                  document_structure_check_info(node6,node5) +                  @collapsed_lv6=@collapsed_lv5+1 +                  node5 +                elsif node4 +                  warning_incorrect_parent_level_or_level(dob.obj) +                  puts "parent is level #4 (1~) & this level ##{dob.ln} (#{dob.lv}~)  either parent should be level #5 (2~)  or this level should be #5 (2~) rather ##{dob.ln} (#{dob.lv}~)" -                document_structure_check_info(node6,node4,:error) -                @collapsed_lv6=@collapsed_lv4+1 -                node4 -              elsif node3 -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node6,node3,:error) -                @collapsed_lv6=@collapsed_lv3+1 -                node3 -              elsif node2 -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node6,node2,:error) -                @collapsed_lv6=@collapsed_lv2+1 -                node2 -              elsif node1 -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node6,node1,:error) -                @collapsed_lv6=@collapsed_lv1+1 -                node1 -              else -                warning_incorrect_parent_level_or_level(dob.obj) -                document_structure_check_info(node6,node0,:error) -                node0 -              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 (2~) & this level ##{dob.ln} (#{dob.lv}~) +                  document_structure_check_info(node6,node4,:error) +                  @collapsed_lv6=@collapsed_lv4+1 +                  node4 +                elsif node3 +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node6,node3,:error) +                  @collapsed_lv6=@collapsed_lv3+1 +                  node3 +                elsif node2 +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node6,node2,:error) +                  @collapsed_lv6=@collapsed_lv2+1 +                  node2 +                elsif node1 +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node6,node1,:error) +                  @collapsed_lv6=@collapsed_lv1+1 +                  node1 +                else +                  warning_incorrect_parent_level_or_level(dob.obj) +                  document_structure_check_info(node6,node0,:error) +                  node0 +                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 (2~) & this level ##{dob.ln} (#{dob.lv}~)  either parent should be level #6 (3~)  or this level should be #6 (3~) rather ##{dob.ln} (#{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 (1~) & this level ##{dob.ln} (#{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 (1~) & this level ##{dob.ln} (#{dob.lv}~)  either parent should be level 6~  or this level should be #6 (3~) rather ##{dob.ln} (#{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 +                  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 -              collapsed_level=@collapsed_lv7 -              node,ocn_sp=node7,"h#{ocnh}" -            end -          else -            unless @lev_occurences[:l1] > 0 -              STDERR.puts %{Substantive text objects must follow a level 1~ heading and there are none at this point in processing: #{@lev_occurences[:l1]} +            else +              unless @lev_occurences[:l1] > 0 +                STDERR.puts %{Substantive text objects must follow a level 1~ heading and there are none at this point in processing: #{@lev_occurences[:l1]}  SKIPPED processing file:  [#{@md.opt.lng}] "#{@md.fns}"} -              puts dob.obj #.gsub(/^(.{1,80})/,'"\1"') -              exit -            end -            unless @ln >= 4 -              lev=case @ln -              when 0 then 'A' -              when 1 then 'B' -              when 2 then 'C' -              when 3 then 'D' -              when 4 then '1' -              when 5 then '2' -              when 6 then '3' -              when 7 then '4' -              when 8 then '5' -              when 9 then '6' +                puts dob.obj #.gsub(/^(.{1,80})/,'"\1"') +                exit                end -              STDERR.puts %{Substantive text objects must follow a level 1~ 2~ or 3~ heading: #{lev}~ +              unless @ln >= 4 +                lev=case @ln +                when 0 then 'A' +                when 1 then 'B' +                when 2 then 'C' +                when 3 then 'D' +                when 4 then '1' +                when 5 then '2' +                when 6 then '3' +                when 7 then '4' +                when 8 then '5' +                when 9 then '6' +                end +                STDERR.puts %{Substantive text objects must follow a level 1~ 2~ or 3~ heading: #{lev}~  SKIPPED processing file:  [#{@md.opt.lng}] "#{@md.fns}"} -              puts dob.obj.gsub(/^(.{1,80})/,'"\1"') -              if @md.opt.act[:no_stop][:set]==:on -                $process_document = :skip -                break -              else exit +                puts dob.obj.gsub(/^(.{1,80})/,'"\1"') +                if @md.opt.act[:no_stop][:set]==:on +                  $process_document = :skip +                  break +                else exit +                end +              end +              if not dob.obj =~/~#|-#/ +                ocn_flag=true +              else +                ocn_flag=false +              end +              ocno+=1 +              if dob.is==:table +                ocnt+=1 +                ocn_sp,parent="t#{ocnt}",node +              elsif dob.is==:code +                ocnc+=1 +                ocn_sp,parent="c#{ocnc}",node +              elsif dob.is==:group \ +              || dob.is==:box \ +              || dob.is==:block \ +              || dob.is==:alt \ +              || dob.is==:verse +                ocng+=1 #group, poem +                ocn_sp,parent="g#{ocng}",node +              elsif dob.is==:image #check +                ocni+=1 +                ocn_sp,parent="i#{ocni}",node +              else ocnp+=1                                 #paragraph +                ocn_sp,parent="p#{ocnp}",node                end -            end -            if not dob.obj =~/~#|-#/ -              ocn_flag=true -            else -              ocn_flag=false -            end -            ocno+=1 -            if dob.is==:table -              ocnt+=1 -              ocn_sp,parent="t#{ocnt}",node -            elsif dob.is==:code -              ocnc+=1 -              ocn_sp,parent="c#{ocnc}",node -            elsif dob.is==:group \ -            || dob.is==:box \ -            || dob.is==:block \ -            || dob.is==:alt \ -            || dob.is==:verse -              ocng+=1 #group, poem -              ocn_sp,parent="g#{ocng}",node -            elsif dob.is==:image #check -              ocni+=1 -              ocn_sp,parent="i#{ocni}",node -            else ocnp+=1                                 #paragraph -              ocn_sp,parent="p#{ocnp}",node              end            end            if dob.is==:heading @@ -1736,24 +1742,28 @@ SKIPPED processing file:          end          @o_array << dob        end -      unless @lev_occurences[:a] == 1 -        STDERR.puts %{The number of level A~ in this document: #{@lev_occurences[:a]} +      if @process == :complete \ +      or (@fnx == @md.opt.fns \ +      && @md.opt.fns =~/.sst$/) +        unless @lev_occurences[:a] == 1 +          STDERR.puts %{The number of level A~ in this document: #{@lev_occurences[:a]}  There must be one level A~ (no more and no less)  SKIPPED processing file:  [#{@md.opt.lng}] "#{@md.fns}"} -        if @md.opt.act[:no_stop][:set]==:on -          $process_document = :skip -        else exit +          if @md.opt.act[:no_stop][:set]==:on +            $process_document = :skip +          else exit +          end          end -      end -      unless @lev_occurences[:l1] > 0 -        STDERR.puts %{The number of level 1~ in this document: #{@lev_occurences[:l1]} +        unless @lev_occurences[:l1] > 0 +          STDERR.puts %{The number of level 1~ in this document: #{@lev_occurences[:l1]}  There must be at least one level 1~ (and as many as required)  SKIPPED processing file:  [#{@md.opt.lng}] "#{@md.fns}"} -        if @md.opt.act[:no_stop][:set]==:on -          $process_document = :skip -        else exit +          if @md.opt.act[:no_stop][:set]==:on +            $process_document = :skip +          else exit +          end          end        end        @o_array diff --git a/lib/sisu/develop/ao_numbering.rb b/lib/sisu/develop/ao_numbering.rb index cc6b595a..6e9f2853 100644 --- a/lib/sisu/develop/ao_numbering.rb +++ b/lib/sisu/develop/ao_numbering.rb @@ -58,8 +58,8 @@ module SiSU_AO_Numbering    class Numbering      attr_accessor :obj,:osp,:ocn,:lv,:name,:index,:comment      @@segments_count=0 -    def initialize(md,data) -      @md,@data=md,data +    def initialize(md,data,fnx,process) +      @md,@data,@fnx,@process=md,data,fnx,process        @obj=@type=@ocn=@lv=@name=@index=@comment=nil        @chosen_seg_names=[]      end @@ -104,7 +104,9 @@ module SiSU_AO_Numbering          data=ocn(data.compact) #watch          data=xml(data.compact)          data=minor_numbering(data.compact) -        data,tags_map,ocn_html_seg_map=name_para_seg_filename(data) +        if @process==:complete +          data,tags_map,ocn_html_seg_map=name_para_seg_filename(data) +        end          data=set_heading_top(data) unless @md.set_heading_top          [data,tags_map,ocn_html_seg_map]        ensure @@ -277,7 +279,7 @@ module SiSU_AO_Numbering        @tuned_file=@tuned_file.flatten      end      def ocn(data)                                                                      #and auto segment numbering increment -      @tuned_file=SiSU_AO_DocumentStructureExtract::OCN.new(@md,data).ocn +      @tuned_file=SiSU_AO_DocumentStructureExtract::OCN.new(@md,data,@fnx,@process).ocn        @tuned_file      end      def xml(data) diff --git a/lib/sisu/develop/dp.rb b/lib/sisu/develop/dp.rb index 68f8c610..76fe87ff 100644 --- a/lib/sisu/develop/dp.rb +++ b/lib/sisu/develop/dp.rb @@ -150,7 +150,8 @@ module SiSU_Param          @@md.opt=@opt          @@md        rescue -        SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark('has an existing option been selected?') +        SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). +          mark('has an existing option been selected?')          exit        end      end @@ -545,7 +546,9 @@ module SiSU_Param                SiSU_Screen::Ansi.new(                  @opt.act[:color_state][:set],                  'WARNING Document Copyright missing; provide @rights: :copyright:' -              ).warn unless @opt.act[:quiet][:set]==:on +              ).warn if (@opt.act[:verbose][:set]==:on \ +                || @opt.act[:verbose_plus][:set]==:on \ +                || @opt.act[:maintenance][:set]==:on)                ''              end              l,n=Db[:col_info_note],'rights.copyright.text' @@ -617,7 +620,9 @@ module SiSU_Param                SiSU_Screen::Ansi.new(                  @opt.act[:color_state][:set],                  'WARNING Document Rights information missing; provide @rights: :copyright:' -              ).warn unless @opt.act[:quiet][:set]==:on +              ).warn if (@opt.act[:verbose][:set]==:on \ +                || @opt.act[:verbose_plus][:set]==:on \ +                || @opt.act[:maintenance][:set]==:on)              else                l,n=Db[:col_info_note],'rights.all'                validate_length(s,l,n) @@ -675,7 +680,9 @@ module SiSU_Param                SiSU_Screen::Ansi.new(                  @opt.act[:color_state][:set],                  'WARNING Document Rights information missing; provide @rights: :copyright:' -              ).warn unless @opt.act[:quiet][:set]==:on +              ).warn if (@opt.act[:verbose][:set]==:on \ +                || @opt.act[:verbose_plus][:set]==:on \ +                || @opt.act[:maintenance][:set]==:on)              else                l,n=Db[:col_info_note],'rights.all'                validate_length(s,l,n) @@ -1426,11 +1433,13 @@ module SiSU_Param              SiSU_Screen::Ansi.new(                @opt.act[:color_state][:set],                '*WARN* endnote number mismatch', -              "endnotes: #{@en[:note]} != endnote reference marks: #{@en[:mark]} (difference = #{@en[:mismatch]})" +              "endnotes: #{@en[:note]} != endnote reference marks: #{@en[:mark]} " \ +              + "(difference = #{@en[:mismatch]})"              ).warn unless @opt.act[:quiet][:set]==:on              footnote_conversion_errors=File.new("#{Dir.pwd}/footnote_conversion_errors.txt",'a')              footnote_conversion_errors << -              "#{@fns}:\n\tendnotes: #{@en[:note]} != endnote reference marks: #{@en[:mark]} (difference = #{@en[:mismatch]})\n" +              "#{@fns}:\n\tendnotes: #{@en[:note]} != endnote reference marks: #{@en[:mark]} " \ +              + "(difference = #{@en[:mismatch]})\n"            end            if not @title \            or not defined? @title.main \ @@ -1443,7 +1452,9 @@ module SiSU_Param                  @opt.act[:color_state][:set],                  'WARNING: Document Title missing',                  'please provide @title:' -              ).warn unless @opt.act[:quiet][:set]==:on +              ).warn if (@opt.act[:verbose][:set]==:on \ +                || @opt.act[:verbose_plus][:set]==:on \ +                || @opt.act[:maintenance][:set]==:on)              end            end            if @author !~/[\S]/ @@ -1455,7 +1466,9 @@ module SiSU_Param                  @opt.act[:color_state][:set],                  'WARNING: Document Author missing',                  'please provide @creator: :author:' -              ).warn unless @opt.act[:quiet][:set]==:on +              ).warn if (@opt.act[:verbose][:set]==:on \ +                || @opt.act[:verbose_plus][:set]==:on \ +                || @opt.act[:maintenance][:set]==:on)              end            end            @struct={} diff --git a/lib/sisu/develop/git.rb b/lib/sisu/develop/git.rb index fb2b1631..4d20742a 100644 --- a/lib/sisu/develop/git.rb +++ b/lib/sisu/develop/git.rb @@ -59,8 +59,8 @@ module SiSU_Git    require_relative 'se'                                 # se.rb    require_relative 'ao'                                 # ao.rb    class Source -    def initialize(opt) -      @opt=opt +    def initialize(opt,process=:complete) +      @opt,@process=opt,process        @env=SiSU_Env::InfoEnv.new        @md=SiSU_Param::Parameters.new(@opt).get        @file=SiSU_Env::FileOp.new(@md) @@ -88,7 +88,7 @@ module SiSU_Git          video:     git_path_fnb + '/' + Gt[:sisupod] + '/' + Gt[:video],          conf:      git_path_fnb + '/' + Gt[:sisupod] + '/' + Gt[:conf]        } -      SiSU_AO::Source.new(@opt).read                                         # -m +      SiSU_AO::Source.new(@opt,nil,@process).read                            # -m      end      def create_file_structure_git        make_dir_fnb @@ -132,14 +132,22 @@ module SiSU_Git        (found =~/bin\/git\b/) ? true : false      end      def make_dir_fnb -      FileUtils::mkdir_p(@git_path[:fnb]) unless FileTest.directory?(@git_path[:fnb]) -      FileUtils::mkdir_p(@git_path[:doc]) unless FileTest.directory?(@git_path[:doc]) -      FileUtils::mkdir_p(@git_path[:po]) unless FileTest.directory?(@git_path[:po]) -      FileUtils::mkdir_p(@git_path[:pot]) unless FileTest.directory?(@git_path[:pot]) -      FileUtils::mkdir_p(@git_path[:conf]) unless FileTest.directory?(@git_path[:conf]) -      FileUtils::mkdir_p(@git_path[:image]) unless FileTest.directory?(@git_path[:image]) -      #FileUtils::mkdir_p(@git_path[:audio]) unless FileTest.directory?(@git_path[:audio]) -      #FileUtils::mkdir_p(@git_path[:video]) unless FileTest.directory?(@git_path[:video]) +      FileUtils::mkdir_p(@git_path[:fnb]) \ +        unless FileTest.directory?(@git_path[:fnb]) +      FileUtils::mkdir_p(@git_path[:doc]) \ +        unless FileTest.directory?(@git_path[:doc]) +      FileUtils::mkdir_p(@git_path[:po]) \ +        unless FileTest.directory?(@git_path[:po]) +      FileUtils::mkdir_p(@git_path[:pot]) \ +        unless FileTest.directory?(@git_path[:pot]) +      FileUtils::mkdir_p(@git_path[:conf]) \ +        unless FileTest.directory?(@git_path[:conf]) +      FileUtils::mkdir_p(@git_path[:image]) \ +        unless FileTest.directory?(@git_path[:image]) +      #FileUtils::mkdir_p(@git_path[:audio]) \ +      #  unless FileTest.directory?(@git_path[:audio]) +      #FileUtils::mkdir_p(@git_path[:video]) \ +      #  unless FileTest.directory?(@git_path[:video])      end      def git_init        unless FileTest.directory?("#{@git_path[:fnb]}/.git") @@ -168,13 +176,23 @@ module SiSU_Git          p __LINE__        end        def copy_src_head -        if @opt.f_pth[:lng] -          FileUtils::cp_r("#{@env.path.pwd}/#{@opt.f_pth[:lng]}/#{@opt.fns}",@git_path[:doc]) +        if @opt.f_pth[:lng] \ +        and File.exist?("#{@env.path.pwd}/#{@opt.f_pth[:lng]}/#{@opt.fns}") +          FileUtils::cp_r( +            "#{@env.path.pwd}/#{@opt.f_pth[:lng]}/#{@opt.fns}", +            @git_path[:doc] +          )          elsif @opt.fns =~/\.ssm\.sst/            ssm=@opt.fns.gsub(/\.ssm\.sst/,'.ssm') -          FileUtils::cp_r("#{@env.path.pwd}/#{ssm}",@git_path[:doc]) -        else -          FileUtils::cp_r("#{@env.path.pwd}/#{@opt.fns}",@git_path[:doc]) +          FileUtils::cp_r( +            "#{@env.path.pwd}/#{ssm}", +            @git_path[:doc] +          ) +        elsif File.exist?("#{@env.path.pwd}/#{@opt.fns}") +          FileUtils::cp_r( +            "#{@env.path.pwd}/#{@opt.fns}", +            @git_path[:doc] +          )          end        end        def copy_related_sst_ssi @@ -183,14 +201,21 @@ module SiSU_Git          file_array=IO.readlines(@opt.fns,'')          file_array.each do |f|            if f =~@rgx_doc_import -            doc_import = doc_import + f.scan(@rgx_doc_import).uniq.flatten +            doc_import = doc_import \ +            + f.scan(@rgx_doc_import).uniq.flatten            end          end          doc_import.each do |f|            if @opt.f_pth[:lng] -            FileUtils::cp_r("#{@env.path.pwd}/#{@opt.f_pth[:lng]}/#{f}",@git_path[:doc]) +            FileUtils::cp_r( +              "#{@env.path.pwd}/#{@opt.f_pth[:lng]}/#{f}", +              @git_path[:doc] +            )            else -            FileUtils::cp_r("#{@env.path.pwd}/#{f}",@git_path[:doc]) +            FileUtils::cp_r( +              "#{@env.path.pwd}/#{f}", +              @git_path[:doc] +            )            end          end        end @@ -200,10 +225,19 @@ module SiSU_Git          and not @opt.act[:ao][:set]==:on            ##SiSU_Assemble::Composite.new(@opt).read            #SiSU_AO::Source.new(@opt).read                                         # -m -          "#{@env.processing_path.composite_file}/#{@opt.fnb}.ssm.sst" +          @env.processing_path.composite_file \ +          + '/' \ +          + @opt.fnb \ +          + '.ssm.sst'          elsif composite_src -          "#{@env.processing_path.composite_file}/#{@opt.fnb}.ssm.sst" -        else "#{@env.path.pwd}/#{@opt.fns}" +          @env.processing_path.composite_file \ +          + '/' \ +          + @opt.fnb \ +          + '.ssm.sst' +        else +          @env.path.pwd +          + '/' \ +          + @opt.fns          end        end        def read_composite diff --git a/lib/sisu/develop/po4a.rb b/lib/sisu/develop/po4a.rb index 6c2f9df5..e0b31ce0 100644 --- a/lib/sisu/develop/po4a.rb +++ b/lib/sisu/develop/po4a.rb @@ -63,12 +63,15 @@ module SiSU_Po4a    require_relative 'po4a_set'                           # po4a_set.rb    include SiSU_Param    class Source -    @@opt_src,@@opt_trn,@@opt_src_,@@opt_trn_,@@md_src,@@md_trn=nil,nil,nil,nil,nil,nil +    @@opt_src,@@opt_trn,@@opt_src_,@@opt_trn_,@@md_src,@@md_trn= +      nil,nil,nil,nil,nil,nil      def initialize(opt,fn=nil)        @opt,@fn=opt,fn        #unless @opt.fns =~/(.+?\.(?:-|ssm\.)?sst)$/        #  puts "#{@opt.fns} not a processed file type"        #end +      file_arr=SiSU_Info_Env::InfoEnv.new.source_file_processing_array(@opt.fns) +      SiSU_Param::Parameters::Instructions.new(file_arr,@opt).extract        r=Px[:lng_lst_rgx].gsub(/\|en\|/,'|')        @lang_regx=%r{(?:#{r})}        if opt.fns =~/\S+?~#{@lang_regx}\.ss[mti]/ \ @@ -94,36 +97,44 @@ module SiSU_Po4a          end          md=SiSU_Param::Parameters.new(@opt).get          src[:files].each do |fn| -          SiSU_AO::Source.new(@opt,fn).read             # -m            env=SiSU_Env::InfoEnv.new(@opt.fns) +          file=SiSU_Env::FileOp.new(md)            m=/((.+?)(?:\~\w\w(?:_\w\w)?)?)\.((?:-|ssm\.)?sst|ssm|ssi)$/ #watch added match for sss            @fnn,@fnb,@fnt=fn[m,1],fn[m,2],fn[m,3]            unless @opt.act[:quiet][:set]==:on -            path=env.path.output_tell              tool=(@opt.act[:verbose][:set]==:on \              || @opt.act[:verbose_plus][:set]==:on \              || @opt.act[:maintenance][:set]==:on) \ -            ? "#{env.program.text_editor} #{path}/#{md.fnb}/#{md.fn[:plain]}" +            ? "#{env.program.text_editor} #{file.output_path.pot.dir}/"              : @opt.fns              (@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],'Pot po4a',tool).green_hi_blue -            : SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],'Pot po4a',tool).green_title_hi +            ? SiSU_Screen::Ansi.new( +                @opt.act[:color_state][:set], +                'Pot po4a', +                tool +              ).green_hi_blue +            : SiSU_Screen::Ansi.new( +                @opt.act[:color_state][:set], +                'Pot po4a', +                tool +              ).green_title_hi              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],                  @opt.fns, -                "#{path}/#{md.fnb}/#{md.fn[:plain]}" +                file.output_path.pot.dir                ).flow              end            end            if @opt.fns =~/\S+?~#{@lang_regx}\.ss[mti]/ \            or @opt.f_pth[:lng] !=@opt.lng_base              opt_lang_trn_fn=fn -            @ao_array_lang_translation=SiSU_AO::Source.new(@opt,opt_lang_trn_fn).get # ao file drawn here +            @ao_array_lang_translation= +              SiSU_AO::Source.new(@opt,opt_lang_trn_fn,:po4a).get # ao file drawn here              opt_lang_src_fn=if fn =~/\S+?~\S{2}(?:_\S{2})?\.ss[mti]/                fn.gsub(/(\S+?)~\S{2}(?:_\S{2})?(\.ss[mti])/,'\1\2') #check i              else fn @@ -138,14 +149,16 @@ module SiSU_Po4a              else nil              end              if FileTest.file?("#{srcdir}/#{opt_lang_src_fn}") -              @ao_array_lang_src=SiSU_AO::Source.new(@@opt_src,opt_lang_src_fn).get # ao file drawn here +              @ao_array_lang_src= +                SiSU_AO::Source.new(@@opt_src,opt_lang_src_fn,:po4a).get # ao file drawn here              else                puts "no identified source document"                exit              end              Dir.chdir(transdir) if transdir            else -            @ao_array_lang_src=SiSU_AO::Source.new(@opt,fn).get # ao file drawn here +            @ao_array_lang_src= +              SiSU_AO::Source.new(@opt,fn,:po4a).get # ao file drawn here              @ao_array_lang_translation=nil            end            wrap_width=if defined? md.make.plaintext_wrap \ @@ -156,7 +169,13 @@ module SiSU_Po4a              env.plaintext_wrap            else 78            end -          SiSU_Po4a::Source::Scroll.new(fn,@ao_array_lang_src,@ao_array_lang_translation,@@md_src,@@md_trn,wrap_width).songsheet +          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.selections.str,@opt.fns).location do @@ -170,14 +189,24 @@ module SiSU_Po4a        include SiSU_Po4aUtils        @@endnotes={ para: [], end: [] }        def initialize(fn,data_src,data_trn,md_src,md_trn,wrap_width) -        @fn,@data_src,@data_trn,@md_src,@md_trn,@wrap_width=fn,data_src,data_trn,md_src,md_trn,wrap_width +        @fn,@data_src,@data_trn,@md_src,@md_trn,@wrap_width= +         fn, data_src, data_trn, md_src, md_trn, wrap_width          @md=(md_trn.nil?) \          ? md_src          : md_trn          @tab="\t"          @@endnotes_=(@md.opt.selections.str =~/--endnote/) ? true : false    # --footnote -        @br=(@md.opt.selections.str =~/--dos/) ? "\r\n" : "\n"               # --unix -        @pot={ body: [], open: [], close: [], head: [], metadata: [], tail: [] } +        @pot={ +          body: [], +          open: [], +          close: [], +          head: [], +          metadata: [], +          tail: [] +        } +      end +      def br +        (@md.opt.selections.str =~/--dos/) ? "\r\n" : "\n"  # --unix        end        def songsheet  ############## BUG @fn changes value @@ -185,7 +214,7 @@ module SiSU_Po4a          pot=pot_markup(@data_src,@data_trn)          publish(fn,pot)        end -      def extract_endnotes(dob='')                                   #% Used for extraction of endnotes from paragraphs +      def extract_endnotes(dob='')                                             #% used for extraction of endnotes from paragraphs          notes_a=dob.obj.scan(/#{Mx[:en_a_o]}([\d]+\s+.+?)#{Mx[:en_a_c]}/)          ##notes_a=dob.obj.scan(/#{Mx[:en_a_o]}([\d*+]+\s+.+?)#{Mx[:en_a_c]}/)          #notes_b=dob.obj.scan(/#{Mx[:en_b_o]}([\d*+]+\s+.+?)#{Mx[:en_b_c]}/) @@ -193,8 +222,8 @@ module SiSU_Po4a          notes_a.flatten.each do |n| #high cost to deal with <br> appropriately within plaintext, consider            n=n.dup.to_s            n=n.gsub(/^([\d]+)\s+/,'^~\1 '). -           #gsub(/^([\d*+]+)\s+/,'^~\1 '). -            gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,'<br>') +            gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/, +              ' \\\\\\ ')            @n << n          end          notes_a=@n.flatten @@ -212,14 +241,21 @@ module SiSU_Po4a            mark="^~ "            instruct=s_mark=''            if @md.opt.act[:maintenance][:set]==:on -            instruct=%{\n# footnotes, the preferred sisu markup for a footnote is~{this is a footnote}~ however, for translation a footnote reference marker in the text~^ with a set of notes following the paragraph starting on a newline with "^~ this is a footnote", is easier to deal with, if possible these should be converted back to~{inline notes}~} +            instruct=%{\n# footnotes, the preferred sisu markup for a footnote is~{this is a footnote}~ } \ +            + %{however, for translation a footnote reference marker in the text~^ } \ +            + %{with a set of notes following the paragraph starting on a newline with "^~ this is a footnote", } \ +            + %{is easier to deal with, if possible these should be converted back to~{inline notes}~}              s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}            end            desc="#{d}#{s_mark}#{instruct}" -          orig=(orig_notes[i].to_s =~/^\^~[\d*+]+/) ? (orig_notes[i].to_s.gsub(/^\^~[\d*+]+/,'^~')) : orig_notes[i].to_s +          orig=(orig_notes[i].to_s =~/^\^~[\d*+]+/) \ +          ? (orig_notes[i].to_s.gsub(/^\^~[\d*+]+/,'^~')) +          : orig_notes[i].to_s            trans=if trn_notes.is_a?(Array) \            and trn_notes.length==orig_notes.length -            (trn_notes[i].to_s =~/^\^~[\d*+]+/) ? (trn_notes[i].to_s.gsub(/^\^~[\d*+]+/,'^~')) : trn_notes[i].to_s +            (trn_notes[i].to_s =~/^\^~[\d*+]+/) \ +            ? (trn_notes[i].to_s.gsub(/^\^~[\d*+]+/,'^~')) +            : trn_notes[i].to_s            else ''            end            util=pot_structure(desc,orig,trans) @@ -238,7 +274,7 @@ GSUB            @@endnotes[:para] << wrap            @@endnotes[:end] << '' << wrap          end -        @@endnotes[:para].each {|e| @pot[:body] << e << @br} +        @@endnotes[:para].each {|e| @pot[:body] << e << br}          @@endnotes[:para]=[]          @@endnotes        end @@ -297,10 +333,10 @@ GSUB            meta_src.metadata_tags.classify.topic_register,            meta_src.metadata_tags.classify.loc,            meta_src.metadata_tags.classify.dewey, -          meta_src.metadata_tags.notes.relation, -          meta_src.metadata_tags.notes.type, -          meta_src.metadata_tags.identifier.oclc, -          meta_src.metadata_tags.identifier.isbn, +          #meta_src.metadata_tags.notes.relation, +          #meta_src.metadata_tags.notes.type, +          #meta_src.metadata_tags.identifier.oclc, +          #meta_src.metadata_tags.identifier.isbn,            'msgstr ""',          ]          w << [ @@ -340,7 +376,7 @@ GSUB                z += %{"#{x}"\n} if x =~/^\s+:\S+?: /              end            end -          @pot[:metadata] << z << @br +          @pot[:metadata] << z << br            #puts z unless z.empty?          end        end @@ -425,20 +461,20 @@ GSUB            meta_src.metadata_tags.classify.topic_register,            meta_src.metadata_tags.classify.loc,            meta_src.metadata_tags.classify.dewey, -          meta_src.metadata_tags.notes.relation, -          meta_src.metadata_tags.notes.type, -          meta_src.metadata_tags.identifier.oclc, -          meta_src.metadata_tags.identifier.isbn, +          #meta_src.metadata_tags.notes.relation, +          #meta_src.metadata_tags.notes.type, +          #meta_src.metadata_tags.identifier.oclc, +          #meta_src.metadata_tags.identifier.isbn,            'msgstr ""',            meta_trn.metadata_tags.classify.head,            meta_trn.metadata_tags.classify.subject,            meta_trn.metadata_tags.classify.topic_register,            meta_trn.metadata_tags.classify.loc,            meta_trn.metadata_tags.classify.dewey, -          meta_trn.metadata_tags.notes.relation, -          meta_trn.metadata_tags.notes.type, -          meta_trn.metadata_tags.identifier.oclc, -          meta_trn.metadata_tags.identifier.isbn, +          #meta_trn.metadata_tags.notes.relation, +          #meta_trn.metadata_tags.notes.type, +          #meta_trn.metadata_tags.identifier.oclc, +          #meta_trn.metadata_tags.identifier.isbn,          ]          w << [            "#. #{@po4a_identify_type} - metadata: date", @@ -493,14 +529,22 @@ GSUB                z += %{"#{x}"\n} if x =~/^\s+:\S+?: /              end            end -          @pot[:metadata] << z << @br +          @pot[:metadata] << z << br            #puts z unless z.empty?          end        end        def pot_structure(desc,orig,trans,indent=0,hang=0) -        SiSU_Po4aUtils::Wrap.new(@md,orig,trans,desc,@wrap_width,indent,hang) +        SiSU_Po4aUtils::Wrap.new( +          @md, +          orig, +          trans, +          desc, +          @wrap_width, +          indent, +          hang +        )        end -      def pot_structure_heading(dob_src='',notes_s='',dob_trn='',notes_t='')                    #% Used to extract the structure of a document +      def pot_structure_heading(dob_src='',notes_s='',dob_trn='',notes_t='')   #% used to extract the structure of a document          lv=n=n3=nil          lv=dob_src.ln          n=lv - 1 @@ -511,7 +555,9 @@ GSUB          d="#{dob_src.is.to_s} (level #{dob_src.lv})"          instruct=s_mark=''          if @md.opt.act[:maintenance][:set]==:on -          instruct=%{\n# markup for headings is marker at the start of the line/object, indicating the heading level, and if provided an associated name tag, this heading is "#{mark}"} +          instruct=%{\n# markup for headings is marker at the start of the line/object, } \ +          + %{indicating the heading level, and if provided an associated name tag, } \ +          + %{this heading is "#{mark}"}            s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}          end          desc="#{d}#{s_mark}#{instruct}" @@ -519,18 +565,18 @@ GSUB          trans=(dob_trn=='') ? '' : "#{s_mark}#{dob_trn.obj}"          util=pot_structure(desc,orig,trans)          wrapped=util.line_wrap -        @pot[:body] << wrapped << @br # main text, contents, body KEEP +        @pot[:body] << wrapped << br # main text, contents, body KEEP          if @@endnotes[:para] \          and notes_s.length > 0 \          and not @@endnotes_ -          @pot[:body] << @br +          @pot[:body] << br            wrap_endnotes(notes_s,notes_t)          elsif @@endnotes[:para] \          and @@endnotes_ -          @pot[:body] << @br*2 +          @pot[:body] << br*2          end        end -      def pot_structure_para(dob_src='',notes_s='',dob_trn='',notes_t='')                       #% Used to extract the structure of a document +      def pot_structure_para(dob_src='',notes_s='',dob_trn='',notes_t='')      #% used to extract the structure of a document          util=nil          wrapped=if dob_src.indent =~/[1-9]/ \          and dob_src.indent == dob_src.hang @@ -540,7 +586,8 @@ GSUB              d="#{dob_src.is.to_s}: indent #{dob_src.indent}, bullet"              instruct=s_mark=''              if @md.opt.act[:maintenance][:set]==:on -              instruct=%{\n# markup for indented bullet text is at the start of the line/object, an underscore followed by the indent level and an asterisk "#{mark}"} +              instruct=%{\n# markup for indented bullet text is at the start of the line/object, } \ +              + %{an underscore followed by the indent level and an asterisk "#{mark}"}                s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}              end              desc="#{d}#{s_mark}#{instruct}" @@ -549,7 +596,8 @@ GSUB              d="#{dob_src.is.to_s}: indent #{dob_src.indent}"              instruct=s_mark=''              if @md.opt.act[:maintenance][:set]==:on -              instruct=%{\n# markup for indented text is at the start of the line/object, an underscore followed by the indent level "#{mark}"} +              instruct=%{\n# markup for indented text is at the start of the line/object, } \ +              + %{an underscore followed by the indent level "#{mark}"}                s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}              end              desc="#{d}#{s_mark}#{instruct}" @@ -564,7 +612,11 @@ GSUB            d="#{dob_src.is.to_s}: hang #{dob_src.hang} indent #{dob_src.indent}"            instruct=s_mark=''            if @md.opt.act[:maintenance][:set]==:on -            instruct=%{\n# markup for indented text with a first line indented to a different level from the rest of the paragraph, is at the start of the line/object, an underscore and the first indent level a second underscore and the indent level for the rest of the paragraph, "#{mark1}"} +            instruct=%{\n# markup for indented text with a first line indented } \ +            + %{to a different level from the rest of the paragraph, } \ +            + %{is at the start of the line/object, } \ +            + %{an underscore and the first indent level } \ +            + %{a second underscore and the indent level for the rest of the paragraph, "#{mark1}"}              s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}            end            desc="#{d}#{s_mark}#{instruct}" @@ -578,7 +630,8 @@ GSUB              d="#{dob_src.is.to_s}: bullet"              instruct=s_mark=''              if @md.opt.act[:maintenance][:set]==:on -              instruct=%{\n# markup for indented text is at the start of the line/object, an underscore followed by an asterisk "#{mark}"} +              instruct=%{\n# markup for indented text is at the start of the line/object, } \ +              + %{an underscore followed by an asterisk "#{mark}"}                s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}              end              desc="#{d}#{s_mark}#{instruct}" @@ -599,23 +652,24 @@ GSUB            util=pot_structure(desc,orig,trans)          end          wrapped=util.line_wrap -        @pot[:body] << wrapped << @br # main text, contents, body KEEP +        @pot[:body] << wrapped << br # main text, contents, body KEEP          if @@endnotes[:para] \          and notes_s.length > 0 \          and not @@endnotes_ -          @pot[:body] << @br +          @pot[:body] << br            wrap_endnotes(notes_s,notes_t)          elsif @@endnotes[:para] \          and @@endnotes_ -          @pot[:body] << @br*2 +          @pot[:body] << br*2          end        end -      def pot_structure_block(dob_src='',notes_s='',dob_trn='',notes_t='')                      #% Used to extract the structure of a document +      def pot_structure_block(dob_src='',notes_s='',dob_trn='',notes_t='')     #% used to extract the structure of a document          mark="block{\\n\\n...\\n\\n}block"          d=dob_src.is.to_s          instruct=s_mark=''          if @md.opt.act[:maintenance][:set]==:on -          instruct="\n# block text is a text block with an opening and closing marker, the content of which may be wrapped" +          instruct=%{\n# block text is a text block with an opening and closing marker, } \ +          + %{the content of which may be wrapped}            s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}          end          desc="#{d}#{s_mark}#{instruct}" @@ -623,14 +677,15 @@ GSUB          trans=(dob_trn=='') ? '' : dob_trn.obj          util=pot_structure(desc,orig,trans)          unwrapped=util.no_line_wrap_block -        @pot[:body] << unwrapped << @br +        @pot[:body] << unwrapped << br        end -      def pot_structure_group(dob_src='',notes_s='',dob_trn='',notes_t='')                      #% Used to extract the structure of a document +      def pot_structure_group(dob_src='',notes_s='',dob_trn='',notes_t='')     #% used to extract the structure of a document          mark="group{\\n\\n...\\n\\n}group"          d=dob_src.is.to_s          instruct=s_mark=''          if @md.opt.act[:maintenance][:set]==:on -          instruct="\n# group text is a text block with an opening and closing marker, the content of which may be wrapped" +          instruct=%{\n# group text is a text block with an opening and closing marker, } \ +          + %{the content of which may be wrapped}            s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}          end          desc="#{d}#{s_mark}#{instruct}" @@ -638,14 +693,17 @@ GSUB          trans=(dob_trn=='') ? '' : dob_trn.obj          util=pot_structure(desc,orig,trans)          unwrapped=util.no_line_wrap_block -        @pot[:body] << unwrapped << @br +        @pot[:body] << unwrapped << br        end -      def pot_structure_verse(dob_src='',notes_s='',dob_trn='',notes_t='')                      #% Used to extract the structure of a document +      def pot_structure_verse(dob_src='',notes_s='',dob_trn='',notes_t='')     #% used to extract the structure of a document          mark="poem{\n\nverse\n\nverse\n\n...\n\n}poem"          d=dob_src.is.to_s          instruct=s_mark=''          if @md.opt.act[:maintenance][:set]==:on -          instruct="\n# verse are part of the text block described as a poem, the first verse is preceeded by an opening marker, and the last verse by a closing marker, the content of which should remain unwrapped" +          instruct=%{\n# verse are part of the text block described as a poem, } \ +          + %{the first verse is preceeded by an opening marker, } \ +          + %{and the last verse by a closing marker, } \ +          + %{the content of which should remain unwrapped}            s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}          end          desc="#{d}#{s_mark}#{instruct}" @@ -653,14 +711,15 @@ GSUB          trans=(dob_trn=='') ? '' : dob_trn.obj          util=pot_structure(desc,orig,trans)          unwrapped=util.no_line_wrap_block -        @pot[:body] << unwrapped << @br +        @pot[:body] << unwrapped << br        end -      def pot_structure_code(dob_src='',notes_s='',dob_trn='',notes_t='')                       #% Used to extract the structure of a document +      def pot_structure_code(dob_src='',notes_s='',dob_trn='',notes_t='')      #% used to extract the structure of a document          mark="code{\\n\\n...\\n\\n}code"          d=dob_src.is.to_s          instruct=s_mark=''          if @md.opt.act[:maintenance][:set]==:on -          instruct="\n# codeblocks are a text block with an opening and closing marker, the content of which should remain unwrapped" +          instruct=%{\n# codeblocks are a text block with an opening and closing marker, } \ +          + %{the content of which should remain unwrapped}            s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}          end          desc="#{d}#{s_mark}#{instruct}" @@ -668,14 +727,15 @@ GSUB          trans=(dob_trn=='') ? '' : dob_trn.obj          util=pot_structure(desc,orig,trans)          unwrapped=util.no_line_wrap_block -        @pot[:body] << unwrapped << @br +        @pot[:body] << unwrapped << br        end -      def pot_structure_table(dob_src='',notes_s='',dob_trn='',notes_t='')                      #% Used to extract the structure of a document +      def pot_structure_table(dob_src='',notes_s='',dob_trn='',notes_t='')     #% used to extract the structure of a document          mark="table{\\n\\n...\\n\\n}table"          d=dob_src.is.to_s          instruct=s_mark=''          if @md.opt.act[:maintenance][:set]==:on -          instruct="\n# tables are a text block with an opening and closing marker, the content of which should remain unwrapped" +          instruct=%{\n# tables are a text block with an opening and closing marker, } \ +          + %{the content of which should remain unwrapped}            s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}          end          desc="#{d}#{s_mark}#{instruct}" @@ -685,27 +745,27 @@ GSUB          trans=trans.gsub(/#{Mx[:tc_c]}/,"\n")          util=pot_structure(desc,orig,trans)          unwrapped=util.no_line_wrap_block -        @pot[:body] << unwrapped << @br +        @pot[:body] << unwrapped << br        end -      def pot_structure_idx(dob_src='',dob_trn='')                      #% Used to extract the structure of a document -        mark="={ ... }" -        instruct=s_mark='' -        if @md.opt.act[:maintenance][:set]==:on -          instruct="\n# the book index should be attached unwrapped to the preceding text block (there should be a new line, but no empty line)" -          s_mark="\n# " + %{"\\n#{mark}\\n\\n"} -        end -        d='book-idx' -        desc="#{d}#{s_mark}#{instruct}" -        orig='={' + dob_src.idx + '}' -        trans=if defined? dob_trn.idx \ -        and not dob_trn.idx.nil? \ -        and not dob_trn.idx.empty? -          '={' + dob_trn.idx + '}' -        else '' -        end -        util=pot_structure(desc,orig,trans) -        unwrapped=util.no_line_wrap_block -        @pot[:body] << unwrapped << @br +      def pot_structure_idx(dob_src='',dob_trn='')                             #% used for book index but broken as original markup lost, already abstracted, fix +        #mark="={ ... }" +        #instruct=s_mark='' +        #if @md.opt.act[:maintenance][:set]==:on +        #  instruct="\n# the book index should be attached unwrapped to the preceding text block (there should be a new line, but no empty line)" +        #  s_mark="\n# " + %{"\\n#{mark}\\n\\n"} +        #end +        #d='book-idx' +        #desc="#{d}#{s_mark}#{instruct}" +        #orig='={' + dob_src.idx + '}' +        #trans=if defined? dob_trn.idx \ +        #and not dob_trn.idx.nil? \ +        #and not dob_trn.idx.empty? +        #  '={' + dob_trn.idx + '}' +        #else '' +        #end +        #util=pot_structure(desc,orig,trans) +        #unwrapped=util.no_line_wrap_block +        #@pot[:body] << unwrapped << br        end        def pot_markup(data_src,data_trn)          #@endnotes,@copen,@pot_contents_close=Array.new(3){[]} @@ -734,24 +794,35 @@ GSUB                s+=1;t+=1                next              end -            if (data_src[s].is == :comment or data_trn[t].is == :comment) \ +            if ((data_src[s].is == :comment) \ +            || (data_trn[t].is == :comment)) \              and (data_src[s].is != data_trn[t].is)                if data_src[s].is == :comment -                puts "src (comment):\n\t" + data_src[s].obj if @md.opt.act[:maintenance][:set]==:on +                if @md.opt.act[:maintenance][:set]==:on +                  puts "src (comment):\n\t" \ +                  + data_src[s].obj +                end                  s+=1                  #next if data_src[s].is == :comment                elsif data_trn[t].is == :comment -                puts "trans (comment):\n\t" + data_trn[t].obj if @md.opt.act[:maintenance][:set]==:on +                if @md.opt.act[:maintenance][:set]==:on +                  puts "trans (comment):\n\t" \ +                  + data_trn[t].obj +                end                  t+=1                  #next if data_trn[t].is == :comment                end              end -            if (defined? data_src[s].ocn and data_src[s].ocn.is_a?(Fixnum)) \ -            and (defined? data_trn[t].ocn and data_trn[t].ocn.is_a?(Fixnum)) \ +            if ((defined? data_src[s].ocn) \ +            && (data_src[s].ocn.is_a?(Fixnum))) \ +            and ((defined? data_trn[t].ocn) \ +            && (data_trn[t].ocn.is_a?(Fixnum))) \              and (data_src[s].ocn == data_trn[t].ocn)                @m_s,@m_t=s,t -            elsif (defined? data_src[s].ocn and data_src[s].ocn.is_a?(Fixnum)) \ -            and (defined? data_trn[t].ocn and data_trn[t].ocn.is_a?(Fixnum)) \ +            elsif ((defined? data_src[s].ocn) \ +            && (data_src[s].ocn.is_a?(Fixnum))) \ +            and ((defined? data_trn[t].ocn) \ +            && (data_trn[t].ocn.is_a?(Fixnum))) \              and (data_src[s].ocn != data_trn[t].ocn)                p '--- OCN ---'                p 'mis-match' @@ -766,7 +837,8 @@ GSUB                p data_trn[@m_t].ocn                p data_trn[@m_t].obj                exit -            elsif (defined? data_src[s].ocn and defined? data_trn[t].ocn \ +            elsif (((defined? data_src[s].ocn) \ +            && (defined? data_trn[t].ocn)) \              and data_src[s].ocn.class != data_trn[t].ocn.class)                p '--- OCN class ---'                p 'mis-match' @@ -813,13 +885,20 @@ GSUB              @p_num=SiSU_Po4aUtils::ParagraphNumber.new(paranum)            end            case dob_src.is -          when :heading then pot_structure_heading(dob_src,notes_s,dob_trn,notes_t) -          when :para    then pot_structure_para(dob_src,notes_s,dob_trn,notes_t) -          when :group   then pot_structure_group(dob_src,notes_s,dob_trn,notes_t) -          when :block   then pot_structure_block(dob_src,notes_s,dob_trn,notes_t) -          when :verse   then pot_structure_verse(dob_src,notes_s,dob_trn,notes_t) -          when :code    then pot_structure_code(dob_src,notes_s,dob_trn,notes_t) -          when :table   then pot_structure_table(dob_src,notes_s,dob_trn,notes_t) +          when :heading +            pot_structure_heading(dob_src,notes_s,dob_trn,notes_t) +          when :para +            pot_structure_para(dob_src,notes_s,dob_trn,notes_t) +          when :group +            pot_structure_group(dob_src,notes_s,dob_trn,notes_t) +          when :block +            pot_structure_block(dob_src,notes_s,dob_trn,notes_t) +          when :verse +            pot_structure_verse(dob_src,notes_s,dob_trn,notes_t) +          when :code +            pot_structure_code(dob_src,notes_s,dob_trn,notes_t) +          when :table +            pot_structure_table(dob_src,notes_s,dob_trn,notes_t)            end            if defined? dob_src.idx \            and not dob_src.idx.nil? \ @@ -835,9 +914,10 @@ GSUB          end          #[dob_src,dob_trn]        end -      def markup(dob)                                     # Used for major markup instructions +      def markup(dob)                                                          # used for major markup instructions          SiSU_Env::InfoEnv.new(@md.fns) -        dob.obj=dob.obj.gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/, +        dob.obj=dob.obj. +          gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,              "#{Px[:po_bold_o]}\\1#{Px[:po_bold_c]}").            gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,              "#{Px[:po_italics_o]}\\1#{Px[:po_italics_c]}"). @@ -857,19 +937,26 @@ GSUB              "#{Px[:po_monospace_o]}\\1#{Px[:po_monospace_c]}")          notes=''          unless dob.is==:code -          dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,'\1'). +          dob.obj=dob.obj. +            gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,'\1').              gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1'). -            gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1 [link: <\2>]'). -            gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image/,'\1 [link: local image]'). +            gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/, +              '\1 [link: <\2>]'). +            gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image/, +              '\1 [link: local image]').              gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1')            notes=extract_endnotes(dob)            #% ### footnotes current state - extracted -          dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'~^').   # endnote marker marked up +          dob.obj=dob.obj. +            gsub(/#{Mx[:en_a_o]}([\d]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'~^').   # endnote marker marked up            #% ### footnotes current state - keep inline            #dob.obj.gsub!(/#{Mx[:en_a_o]}[\d]+\s+(.+?)#{Mx[:en_a_c]}/,'~{ \1 }~')     # inline endnote with marker marked up -            gsub(/#{Mx[:en_b_o]}[\d]+\s+(.+?)#{Mx[:en_b_c]}/,'~[ \1 ]~').     # inline endnote with marker marked up -            gsub(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/,'~{\1 \2 }~'). # inline endnote with marker marked up -            gsub(/#{Mx[:en_b_o]}([*+]+)\s+(.+?)#{Mx[:en_b_c]}/,'~[\1 \2 ]~'). # inline endnote with marker marked up +            gsub(/#{Mx[:en_b_o]}[\d]+\s+(.+?)#{Mx[:en_b_c]}/, +              '~[ \1 ]~').     # inline endnote with marker marked up +            gsub(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/, +              '~{\1 \2 }~'). # inline endnote with marker marked up +            gsub(/#{Mx[:en_b_o]}([*+]+)\s+(.+?)#{Mx[:en_b_c]}/, +              '~[\1 \2 ]~'). # inline endnote with marker marked up              gsub(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<').              gsub(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>').              gsub(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&'). @@ -898,9 +985,12 @@ GSUB            gsub(/<a href=".+?">(.+?)<\/a>/m,'\1').            gsub(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,'').                       # remove name links            gsub(/ |#{Mx[:nbsp]}/,' ').                                       # decide on -          gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,'    [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]") -          gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/,'    [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]") -          gsub(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]') +          gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/, +            '    [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]") +          gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/, +            '    [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]") +          gsub(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/, +            '[image: "\1"]')          [dob,notes]        end        def publish(fn,pot) @@ -910,18 +1000,18 @@ GSUB          content << pot[:metadata]          content << pot[:body]          content << @@endnotes[:end] if @@endnotes_ -        Output.new(fn,content,@md).po4a +        Output.new(fn,content,@md,@process).po4a          @@endnotes={ para: [], end: [] }        end      end      class Output <Source        include SiSU_Param        include SiSU_Env -      def initialize(fn,content,md) -        @fn,@content,@md=fn,content,md +      def initialize(fn,content,md,process=:complete) +        @fn,@content,@md,@process=fn,content,md,process          @file=SiSU_Env::FileOp.new(md,fn)        end -      def po4a                                                                #%pot output +      def po4a                                                                 #%pot output          file_pot=(@md.opt.f_pth[:lng] ==@md.opt.lng_base) \          ? @file.write_file.pot          : @file.write_file.po @@ -951,12 +1041,20 @@ GSUB        def po4a_git          unless @md.opt.act[:maintenance][:set]==:on            require_relative 'git'                           # git.rb -          git=SiSU_Git::Source.new(@md.opt) -          git.create_file_structure_git unless FileTest.directory?(@file.output_path.pot_git.dir) +          git=SiSU_Git::Source.new(@md.opt,@process) +          unless FileTest.directory?(@file.output_path.pot_git.dir) +            git.create_file_structure_git +          end            if @md.opt.f_pth[:lng] ==@md.opt.lng_base -            FileUtils::cp(@file.place_file.pot.dir, @file.output_path.pot_git.dir) +            FileUtils::cp( +              @file.place_file.pot.dir, +              @file.output_path.pot_git.dir +            )            else # naive, work on --> -            FileUtils::cp(@file.place_file.po.dir, @file.output_path.po_git.dir) #unless FileTest.file?(@file.place_file.po_git.dir) +            FileUtils::cp( +              @file.place_file.po.dir, +              @file.output_path.po_git.dir +            ) #unless FileTest.file?(@file.place_file.po_git.dir)            end            git.read          end diff --git a/lib/sisu/develop/se_info_env.rb b/lib/sisu/develop/se_info_env.rb index 43509f0e..97e81e77 100644 --- a/lib/sisu/develop/se_info_env.rb +++ b/lib/sisu/develop/se_info_env.rb @@ -1066,7 +1066,7 @@ WOK          @sys.home        end        def sisurc_path -        GetInit.new.sisu_yaml.rc_path +        SiSU_Get_Init::GetInit.new.sisu_yaml.rc_path        end        def pwd          @sys.pwd | 
