d: po4a, reorganize a bit
[software/sisu] / lib / sisu / develop / po4a.rb
index 3a93c7fda2329f62d9f2e451a2a4e9b42746e47f..4b41f1da958035aeb521458f8e8b493f6b0bb563 100644 (file)
@@ -64,7 +64,7 @@ module SiSU_Po4a
   include SiSU_Param
   class Source
     @@opt_src,@@opt_trn,@@opt_src_,@@opt_trn_,@@md_src,@@md_trn=
-      nil,nil,nil,nil,nil,nil
+          nil,      nil,       nil,       nil,     nil,     nil
     @@auto_translation_ = :go
     def initialize(opt,fn=nil)
       @opt,@fn=opt,fn
@@ -86,6 +86,95 @@ module SiSU_Po4a
         @@md_src=SiSU_Param::Parameters.new(opt).get
       end
     end
+    def wrap_width_set(md,env)
+      if defined? md.make.plaintext_wrap \
+      and md.make.plaintext_wrap
+        md.make.plaintext_wrap
+      elsif defined? env.plaintext_wrap \
+      and env.plaintext_wrap
+        env.plaintext_wrap
+      else 78
+      end
+    end
+    def process_file(md,env,file,wrap_width,fn)
+      unless @opt.act[:quiet][:set]==:on
+        tool=(@opt.act[:verbose][:set]==:on \
+        || @opt.act[:verbose_plus][:set]==:on \
+        || @opt.act[:maintenance][:set]==:on) \
+        ? "#{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
+        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,
+            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_arr_lang_trans=
+          SiSU_AO::Source.new(@opt,opt_lang_trn_fn,:po4a).get # ao file drawn here
+        opt_lang_src_fn=(fn =~/\S+?~\S{2}(?:_\S{2})?\.ss[mti]/) \
+        ? (fn.gsub(/(\S+?)~\S{2}(?:_\S{2})?(\.ss[mti])/,'\1\2')) #check i
+        : fn
+        transdir,srcdir=Dir.pwd,Dir.pwd
+        if Dir.pwd.to_s =~/\/#{@lang_regx}$/
+          transdir=Dir.pwd
+          srcdir=transdir.
+            gsub(/\/#{@lang_regx}$/,
+              "/#{@opt.lng_base}")
+          if FileTest.directory?(srcdir)
+            Dir.chdir(srcdir)
+          end
+        else nil
+        end
+        if FileTest.file?("#{srcdir}/#{opt_lang_src_fn}")
+          @ao_arr_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_arr_lang_src=
+          SiSU_AO::Source.new(
+            @opt,
+            fn,
+            :po4a
+          ).get # ao file drawn here
+        @ao_arr_lang_trans=nil
+      end
+      SiSU_Po4a::Source::Scroll.new(
+        fn,
+        @ao_arr_lang_src,
+        @ao_arr_lang_trans,
+        @@md_src,
+        @@md_trn,
+        wrap_width
+      ).songsheet
+    end
     def read
       begin
         src={}
@@ -97,86 +186,11 @@ module SiSU_Po4a
           [@opt.fns]
         end
         md=SiSU_Param::Parameters.new(@opt).get
+        env=SiSU_Env::InfoEnv.new(@opt.fns)
+        file=SiSU_Env::FileOp.new(md)
+        wrap_width=wrap_width_set(md,env)
         src[:files].each do |fn|
-          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
-            tool=(@opt.act[:verbose][:set]==:on \
-            || @opt.act[:verbose_plus][:set]==:on \
-            || @opt.act[:maintenance][:set]==:on) \
-            ? "#{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
-            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,
-                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,: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
-            end
-            transdir,srcdir=Dir.pwd,Dir.pwd
-            if Dir.pwd.to_s =~/\/#{@lang_regx}$/
-              transdir=Dir.pwd
-              srcdir=transdir.gsub(/\/#{@lang_regx}$/,"/#{@opt.lng_base}")
-              if FileTest.directory?(srcdir)
-                 Dir.chdir(srcdir)
-              end
-            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,: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,:po4a).get # ao file drawn here
-            @ao_array_lang_translation=nil
-          end
-          wrap_width=if defined? md.make.plaintext_wrap \
-          and md.make.plaintext_wrap
-            md.make.plaintext_wrap
-          elsif defined? env.plaintext_wrap \
-          and env.plaintext_wrap
-            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
+          process_file(md,env,file,wrap_width,fn)
         end
       rescue
         SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do
@@ -215,7 +229,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]}/)