diff options
| author | Ralph Amissah <ralph@amissah.com> | 2012-05-01 23:39:36 -0400 | 
|---|---|---|
| committer | Ralph Amissah <ralph@amissah.com> | 2012-05-01 23:39:36 -0400 | 
| commit | 762b6e9415a6f2708a0d6407180ccad77d1a3249 (patch) | |
| tree | 692f0d4184f41858c00425b8631c38bd45c91649 | |
| parent | debian/changelog (3.2.5-1) (diff) | |
| parent | v3: hub (seek finer grained control over what happens when; causes breakage) (diff) | |
Merge tag 'sisu_3.2.6' into debian/sid
| -rw-r--r-- | data/doc/sisu/CHANGELOG_v3 | 24 | ||||
| -rw-r--r-- | data/sisu/v3/v/version.yml | 6 | ||||
| -rw-r--r-- | lib/sisu/v3/composite.rb | 2 | ||||
| -rw-r--r-- | lib/sisu/v3/harvest.rb | 4 | ||||
| -rw-r--r-- | lib/sisu/v3/harvest_authors.rb | 36 | ||||
| -rw-r--r-- | lib/sisu/v3/harvest_topics.rb | 536 | ||||
| -rw-r--r-- | lib/sisu/v3/hub.rb | 403 | ||||
| -rw-r--r-- | lib/sisu/v3/options.rb | 28 | ||||
| -rw-r--r-- | lib/sisu/v3/screen_text_color.rb | 2 | ||||
| -rw-r--r-- | lib/sisu/v3/sysenv.rb | 2 | 
10 files changed, 634 insertions, 409 deletions
| diff --git a/data/doc/sisu/CHANGELOG_v3 b/data/doc/sisu/CHANGELOG_v3 index 96450db9..f5e56046 100644 --- a/data/doc/sisu/CHANGELOG_v3 +++ b/data/doc/sisu/CHANGELOG_v3 @@ -13,13 +13,31 @@ Reverse Chronological:  %% Development branch UNSTABLE  v3 branch once stable will supersede & replace current stable v2 branch +%% 3.2.6.orig.tar.xz (2012-05-01:18/2) +http://git.sisudoc.org/?p=code/sisu.git;a=log;h=refs/tags/sisu_3.2.6 +http://git.sisudoc.org/?p=code/sisu.git;a=log;h=refs/tags/debian/sisu_3.2.6-1 +http://www.jus.uio.no/sisu/pkg/src/sisu_3.2.6.orig.tar.xz +  sisu_3.2.6.orig.tar.xz +  sisu_3.2.6-1.dsc +  sisu_3.2.6-1.debian.tar.gz + +* v3: harvest (metadata, site/document summary) fixes +  * harvest_topics, sort fix +  * harvest_authors, minor fix +  * sst content parsing lang dir +  * output file location, currently works for (by?) :language & :filetype + +* v3: hub (seek finer grained control over what happens when; causes breakage) +  * (primarily) cycle files then options (instead of options then files) +  * manifest re-run on (currently generated) translated files if any +  %% 3.2.5.orig.tar.xz (2012-04-22:16/7)  http://git.sisudoc.org/?p=code/sisu.git;a=log;h=refs/tags/sisu_3.2.5  http://git.sisudoc.org/?p=code/sisu.git;a=log;h=refs/tags/debian/sisu_3.2.5-1  http://www.jus.uio.no/sisu/pkg/src/sisu_3.2.5.orig.tar.xz -  sisu_3.2.5.orig.tar.xz -  sisu_3.2.5-1.dsc -  sisu_3.2.5-1.debian.tar.gz +  2238f9a6d88f9060ffe42b77bd77c2b668948d6dfdcf9a151f24dbbdf54b9857 1682996 sisu_3.2.5.orig.tar.xz +  0d798dd042acd8ea7bf3b5efd9710ea94f2146dc192e2a79619dcc63a039f5bd 1382 sisu_3.2.5-1.dsc +  5740d2d7004188fa15809cef23c2d4f5fb382f360a13efe23df5dacaeb40e3e0 295265 sisu_3.2.5-1.debian.tar.gz    * v3: shared_html_lite, codeblock fix, affecting sql:      SELECT ocn,body FROM doc_objects WHERE t_is='code'; diff --git a/data/sisu/v3/v/version.yml b/data/sisu/v3/v/version.yml index 1ce9ed62..b029757f 100644 --- a/data/sisu/v3/v/version.yml +++ b/data/sisu/v3/v/version.yml @@ -1,5 +1,5 @@  --- -:version: 3.2.5 -:date_stamp: 2012w16/7 -:date: "2012-04-22" +:version: 3.2.6 +:date_stamp: 2012w18/2 +:date: "2012-05-01"  :project: SiSU diff --git a/lib/sisu/v3/composite.rb b/lib/sisu/v3/composite.rb index 21adb030..ac64b15e 100644 --- a/lib/sisu/v3/composite.rb +++ b/lib/sisu/v3/composite.rb @@ -108,7 +108,7 @@ module SiSU_Assemble      end      def read        begin -        @fns_array=IO.readlines(@opt.fns,'') +        @fns_array=IO.readlines(@opt.fno,'')          assembled=insertions?          write(assembled)        rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error diff --git a/lib/sisu/v3/harvest.rb b/lib/sisu/v3/harvest.rb index 71adb0f0..17931696 100644 --- a/lib/sisu/v3/harvest.rb +++ b/lib/sisu/v3/harvest.rb @@ -93,8 +93,8 @@ WOK        case opt.mod.inspect        when/--harvest/i          css(opt) if opt.cmd.inspect =~/M/ -        SiSU_Harvest_Authors::Songsheet.new(opt,env).songsheet -        SiSU_Harvest_Topics::Songsheet.new(opt,env).songsheet +        SiSU_HarvestAuthors::Songsheet.new(opt,env).songsheet +        SiSU_HarvestTopics::Songsheet.new(opt,env).songsheet          if opt.cmd.inspect =~/R/            require_relative 'remote'                         # remote.rb            SiSU_Remote::Put.new(opt).rsync_harvest diff --git a/lib/sisu/v3/harvest_authors.rb b/lib/sisu/v3/harvest_authors.rb index 5bb702be..2c541c48 100644 --- a/lib/sisu/v3/harvest_authors.rb +++ b/lib/sisu/v3/harvest_authors.rb @@ -57,7 +57,7 @@   ** Description: simple xml representation (sax style)  =end -module SiSU_Harvest_Authors +module SiSU_HarvestAuthors    require_relative 'author_format'                      # author_format.rb    class Songsheet      @@the_idx_authors={} @@ -85,11 +85,11 @@ module SiSU_Harvest_Authors          end          lang_hash_file_array.each_pair do |lang,a|            idx_array[lang] ||= [] -          idx_array=SiSU_Harvest_Authors::Harvest.new(@opt,@env,a,filename,name,idx_array,lang).extract_harvest +          idx_array=SiSU_HarvestAuthors::Harvest.new(@opt,@env,a,filename,name,idx_array,lang).extract_harvest          end        end -      the_idx=SiSU_Harvest_Authors::Index.new(idx_array,@@the_idx_authors).construct_book_author_index -      SiSU_Harvest_Authors::OutputIndex.new(@opt,the_idx).html_print.html_songsheet +      the_idx=SiSU_HarvestAuthors::Index.new(idx_array,@@the_idx_authors).construct_book_author_index +      SiSU_HarvestAuthors::OutputIndex.new(@opt,the_idx).html_print.html_songsheet      end    end    class Harvest @@ -130,7 +130,7 @@ module SiSU_Harvest_Authors          else            name.sub(/\.ss[mt]$/,'')          end -        page=if @env.output_dir_structure.by_language_code? +        page=if @env.output_dir_structure.by? == :language            "#{lang}/sisu_manifest.html"          else            "sisu_manifest.#{lang}.html" @@ -174,7 +174,8 @@ module SiSU_Harvest_Authors        @opt,@the_idx=opt,the_idx        @env=SiSU_Env::InfoEnv.new        @rc=SiSU_Env::GetInit.instance.sisu_yaml.rc -      @alph=%W[9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] +      @alphabet_list=%W[9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] +      @alph=@alphabet_list.dup        @letter=@alph.shift        @vz=SiSU_Env::GetInit.instance.skin      end @@ -183,7 +184,7 @@ module SiSU_Harvest_Authors          @output ||={}          @output[lng] ||={}          harvest_pth,file='','' -        if @env.output_dir_structure.by_language_code? +        if @env.output_dir_structure.by? == :language            harvest_pth="#{@env.path.webserv}/#{@opt.base_stub}/#{lng}/manifest"            file="#{harvest_pth}/authors.html"          else @@ -212,17 +213,17 @@ module SiSU_Harvest_Authors        end        def html_head_adjust(lng,type='')          css_path,topics='','' -        if @env.output_dir_structure.by_language_code? +        if @env.output_dir_structure.by? == :language            css_path=(type !~/maintenance/) \            ? '../../_sisu/css/harvest.css'            : 'harvest.css'            topics='topics.html' -        elsif @env.output_dir_structure.by_filetype? +        elsif @env.output_dir_structure.by? == :filetype            css_path=(type !~/maintenance/) \            ? '../_sisu/css/harvest.css'            : 'harvest.css'            topics="topics.#{lng}.html" -        elsif @env.output_dir_structure.by_filename? +        elsif @env.output_dir_structure.by? == :filename            css_path=(type !~/maintenance/) \            ? '../_sisu/css/harvest.css'            : 'harvest.css' @@ -231,10 +232,10 @@ module SiSU_Harvest_Authors          ln=SiSU_i18n::Languages.new.language.list          harvest_languages=''          @the_idx.keys.each do |lng| -          if @env.output_dir_structure.by_language_code? +          if @env.output_dir_structure.by? == :language              harvest_pth="../../#{lng}/manifest"              file="#{harvest_pth}/authors.html" -          else @env.output_dir_structure.by_filetype? +          else @env.output_dir_structure.by? == :filetype              harvest_pth='.'              file="#{harvest_pth}/authors.#{lng}.html"            end @@ -312,6 +313,11 @@ WOK        end        def do_string_name(lng,attrib,string)          f=/^(\S)/.match(string[0])[1] +        if @lng != lng +          @alph=@alphabet_list.dup +          @letter=@alph.shift +          @lng = lng +        end          if @letter < f            while @letter < f              if @alph.length > 0 @@ -338,13 +344,13 @@ WOK              @output[lng][:html] << x              works=[]              a[1][:md].each do |x| -              if @env.output_dir_structure.by_language_code? +              if @env.output_dir_structure.by? == :language                  manifest_pth="#{@env.path.output}/#{x[:file]}"                  manifest_at=x[:file] + '.html' -              elsif @env.output_dir_structure.by_filetype? +              elsif @env.output_dir_structure.by? == :filetype                  manifest_name=x[:file]                  manifest_at=x[:file] + '.' + lng +  '.html' -              elsif @env.output_dir_structure.by_filename? +              elsif @env.output_dir_structure.by? == :filename                  manifest_at="../#{x[:file]}/#{x[:page]}"                end                work=[ "#{x[:date]} #{x[:title]}", %{<p class="publication">#{x[:date]} <a href="#{manifest_at}">#{x[:title]}</a>, #{x[:author][:authors_s]}</p>} ] diff --git a/lib/sisu/v3/harvest_topics.rb b/lib/sisu/v3/harvest_topics.rb index dd7ec8c2..30155e5f 100644 --- a/lib/sisu/v3/harvest_topics.rb +++ b/lib/sisu/v3/harvest_topics.rb @@ -58,7 +58,7 @@   ** Description: simple xml representation (sax style)  =end -module SiSU_Harvest_Topics +module SiSU_HarvestTopics    require_relative 'author_format'                      # author_format.rb    include SiSU_Viz    class Songsheet @@ -80,18 +80,18 @@ module SiSU_Harvest_Topics                lang_hash_file_array[y[:lng_is]] ||= []                lang_hash_file_array[y[:lng_is]] << line              elsif line =~/^@\S+?:(?:\s|$)/m \ -            or line =~/^(?:\s*\n|%+ )/ +            or line =~/^(?:\s*\n|\s*$|%+ )/              else break              end            end          end          lang_hash_file_array.each_pair do |lang,a| -          idx_array[lang] ||= [] -          idx_array=SiSU_Harvest_Topics::Harvest.new(@opt,@env,a,filename,name,idx_array,lang).extract_harvest +          idx_array[lang] ||=[] +          idx_array=SiSU_HarvestTopics::Harvest.new(@opt,@env,a,filename,name,idx_array,lang).extract_harvest          end        end -      the_idx=SiSU_Harvest_Topics::Index.new(@opt,@env,idx_array,@@the_idx_topics).construct_book_topic_index -      SiSU_Harvest_Topics::OutputIndex.new(@opt,the_idx).html_print.html_songsheet +      the_hash=SiSU_HarvestTopics::Index.new(@opt,@env,idx_array,@@the_idx_topics).song +      SiSU_HarvestTopics::OutputIndex.new(@opt,the_hash).html_print.html_songsheet      end    end    class Harvest @@ -132,10 +132,10 @@ module SiSU_Harvest_Topics          else            name.sub(/\.ss[mt]$/,'')          end -        page=if @env.output_dir_structure.by_language_code? +        page=if @env.output_dir_structure.by? == :language            #fix          end -        page=if @env.output_dir_structure.by_language_code? +        page=if @env.output_dir_structure.by? == :language            "#{lang}/sisu_manifest.html"          else            "sisu_manifest.#{lang}.html" @@ -162,101 +162,266 @@ module SiSU_Harvest_Topics        @opt,@env,@idx_array,@the_idx=opt,env,idx_array,the_idx        @@the_idx_topics=@the_idx      end +    def song +      the_idx=construct_book_topic_keys +      the_hash=construct_book_topic_hash(the_idx) +      #traverse_base +      #traverse +    end      def capital(txt) +      txt_a=txt.scan(/\S+/) +      tx='' +      txt_a.each do |txt| +        tx += txt[0].chr.capitalize + txt[1,txt.length] + ' ' +      end +      tx.strip +    end +    def capital_(txt)        txt[0].chr.capitalize + txt[1,txt.length]      end -    def contents(lang,hash,idx) +    def contents(idx)        names=''        idx[:author][:last_first_format_a].each do |n|          s=n.sub(/(.+?)(?:,.+|$)/,'\1').gsub(/\s+/,'_') -        names=if @env.output_dir_structure.by_language_code? +        names=if @env.output_dir_structure.by? == :language            names += %{<a href="authors.html##{s}">#{n}</a>, }          else            names += %{<a href="authors.#{lang}.html##{s}">#{n}</a>, }          end        end -      hash << { filename: idx[:filename], file: idx[:file], author: names, title: idx[:title], page: idx[:page] } +      md={ filename: idx[:filename], file: idx[:file], author: names, title: idx[:title], page: idx[:page] } +    end +    def capital_(txt) +      txt[0].chr.capitalize + txt[1,txt.length]      end -    def construct_book_topic_index +    def key_create(c) +      x=nil +      x=if c.length==5 +        c[0].to_s + '|' + +          capital(c[1][0].to_s) + '|' + +          capital(c[2][0].to_s) + '|' + +          capital(c[3][0].to_s) #+ '|' + +          #((c[4].class == String) ? c[4][0] : '') +      elsif c.length==4 +        c[0].to_s + '|' + +          capital(c[1][0].to_s) + '|' + +          capital(c[2][0].to_s) #+ '|' + +          #((c[3].class == String) ? c[3][0] : '') +      elsif c.length==3 +        c[0].to_s + '|' + +          capital(c[1][0].to_s) #+ '|' + +          #((c[2].class == String) ? c[2][0] : '') +      elsif c.length==2 +        c[0].to_s #+ '|' + +          #((c[1].class == String) ? c[1][0] : '') +      elsif c.length==1 +        c[0].to_s +      end +    end +    def construct_book_topic_keys        idx_array=@idx_array +      @idx_a=[] +      @the_a=[]        idx_array.each_pair do |lang,idx_array|          @@the_idx_topics[lang] ||= {}          idx_array.each do |idx| -          @lv0,@lv1,@lv2,@lv3,@lv4={},{},{},{},{}            if idx[:rough_idx]              idx_lst=idx[:rough_idx].scan(/[^:]+/)            else              puts "no topic register in: << #{idx[:filename]} >>"              next            end -          idx_lst_alt=[] -          idx_lst.each {|lev| idx_lst_alt << lev.scan(/[^|]+/)} -          depth = idx_lst_alt.length - 1 -          range = 0..depth -          range.each do |t| -            if idx_lst_alt[t] -              case t -              when 0 -                lev0=idx_lst_alt[t] -                lev0.each do |lv0| -                  lv0=capital(lv0) -                  if @@the_idx_topics[lang][lv0].class==NilClass -                    @@the_idx_topics[lang][lv0]={ md: [] } -                  end -                  @lv0=lv0 if lev0.length==1 -                  j=@@the_idx_topics[lang][lv0][:md] -                  contents(lang,j,idx) if idx_lst_alt.length - 1 == t +          idx_a=[] +          idx_lst.each do |c| +            idx_a << c.scan(/[^|\n]+/m) +          end +          idx_a << contents(idx) +          @idx_a << [lang] + idx_a +        end +      end +      @idx_a.each do |c| +        if c.length > 0 \ +        and c.class == Array +          if c[0].class == Hash +            v=key_create(c) +            @the_a << [v, c[0]] +          end +        end +        if c.length > 0 \ +        and c.class == Array +          if c[1].class == Hash +            v=key_create(c) +            @the_a << [v, c[1]] if v +          end +        end +        if c.length > 1 \ +        and c.class == Array +          if c[2].class == Hash +            v=key_create(c) +            @the_a << [v, c[2]] if v +          end +        end +        if c.length > 2 \ +        and c.class == Array +          if c[3].class == Hash +            v=key_create(c) +            @the_a << [v, c[3]] if v +          end +        end +        if c.length > 3 \ +        and c.class == Array +          if c[4].class == Hash +            v=key_create(c) +            @the_a << [v, c[4]] if v +          end +        end +        if c.length > 4 \ +        and c.class == Array +          if c[5].class == Hash +            v=key_create(c) +            @the_a << [v, c[5]] if v +          end +        end +      end +      y=@the_a.sort_by { |x| x[0] } +      #y.each {|z| puts z} +    end +    def construct_book_topic_hash(y) +      @the_h={} +      y.each do |z| +        x=z[0].scan(/[^|]+/) +        depth=x.length +        extract=(depth-1) +        k=case extract +        when 4 +          { x[0] => { x[1] => { x[2] => { x[3] => { x[4] => z[1] } } } } } +        when 3 +          { x[0] => { x[1] => { x[2] => { x[3] => z[1] } } } } +        when 2 +          { x[0] => { x[1] => { x[2] => z[1] } } } +        when 1 +          { x[0] => { x[1] => z[1] } } +        when 0 +          { x[0] => z[1] } +        end +        if extract >= 0 +          k.each_pair do |x0,y| +            if extract == 0 +              @the_h[x0] ||={ md: [] } +              @the_h[x0][:md] << y +            else +              @the_h[x0] ||={} +            end +            #puts '  '*0 + x0 +            if extract >= 1 +              y.each_pair do |x1,y| +                if extract == 1 +                  @the_h[x0][x1] ||={ md: [] } +                  @the_h[x0][x1][:md] << y +                else +                  @the_h[x0][x1] ||={}                  end -              when 1 -                lev1=idx_lst_alt[t] -                lev1.each do |lv1| -                  lv1=capital(lv1) -                  if @@the_idx_topics[lang][@lv0][lv1].class==NilClass -                    @@the_idx_topics[lang][@lv0][lv1]={ md: [] } +                #puts '  '*1 + x1 +                if extract >= 2 +                  y.each_pair do |x2,y| +                    if extract == 2 +                      @the_h[x0][x1][x2] ||={ md: [] } +                      @the_h[x0][x1][x2][:md] << y +                    else +                      @the_h[x0][x1][x2] ||={} +                    end +                    #puts '  '*2 + x2   +                    if extract >= 3 +                      y.each_pair do |x3,y| +                        if extract == 3 +                          @the_h[x0][x1][x2][x3] ||={ md: [] } +                          @the_h[x0][x1][x2][x3][:md] << y +                        else +                          @the_h[x0][x1][x2][x3] ||={} +                        end +                        #puts '  '*3 + x3   +                        if extract == 4 +                          y.each_pair do |x4,y| +                            if extract == 4 +                              @the_h[x0][x1][x2][x3][x4] ||={ md: [] } +                              @the_h[x0][x1][x2][x3][x4][:md] << y +                            end +                            #puts '  '*4 + x4   +                          end +                        end +                      end +                    end                    end -                  @lv1=lv1 if lev1.length==1 -                  j=@@the_idx_topics[lang][@lv0][lv1][:md] -                  contents(lang,j,idx) if idx_lst_alt.length - 1 == t                  end -              when 2 -                lev2=idx_lst_alt[t] -                lev2.each do |lv2| -                  lv2=capital(lv2) -                  if @@the_idx_topics[lang][@lv0][@lv1][lv2].class==NilClass -                    @@the_idx_topics[lang][@lv0][@lv1][lv2]={ md: [] } +              end +            end +          end +        end +      end +      #@the_h.each_pair { |x,y| p x; p y } +      @the_h +    end +    def traverse_base +      @the_h.each_pair do |x0,y| +        puts '  '*0 + x0 if x0.class == String +        if y.class == Hash +          y.each_pair do |x1,y| +            puts '  '*1 + x1 if x1.class == String +            if y.class == Hash +              y.each_pair do |x2,y| +                puts '  '*2 + x2 if x2.class == String +                if y.class == Hash +                  y.each_pair do |x3,y| +                    puts '  '*3 + x3 if x3.class == String +                    if y.class == Hash +                      y.each_pair do |x4,y| +                        puts '  '*4 + x4 if x4.class == String +                      end +                    end                    end -                  @lv2=lv2 if lev2.length==1 -                  j=@@the_idx_topics[lang][@lv0][@lv1][lv2][:md] -                  contents(lang,j,idx) if idx_lst_alt.length - 1 == t                  end -              when 3 -                lev3=idx_lst_alt[t] -                lev3.each do |lv3| -                  lv3=capital(lv3) -                  if @@the_idx_topics[lang][@lv0][@lv1][@lv2][lv3].class==NilClass -                    @@the_idx_topics[lang][@lv0][@lv1][@lv2][lv3]={ md: [] } +              end +            end +          end +        end +      end +    end +    def traverse +      @the_h.each_pair do |x0,y| +        puts '  '*0 + x0 if x0.class == String +        if y.class == Hash +          if y.has_key?(:md) +            y[:md].each { |x| puts '  '*5 + x[:title] } +          end +          y.each_pair do |x1,y| +            puts '  '*1 + x1 if x1.class == String +            if y.class == Hash +              if y.has_key?(:md) +                y[:md].each { |x| puts '  '*5 + x[:title] } +              end +              y.each_pair do |x2,y| +                puts '  '*2 + x2 if x2.class == String +                if y.class == Hash +                  if y.has_key?(:md) +                    y[:md].each { |x| puts '  '*5 + x[:title] }                    end -                  @lv3=lv3 if lev3.length==1 -                  j=@@the_idx_topics[lang][@lv0][@lv1][@lv2][lv3][:md] -                  contents(lang,j,idx) if idx_lst_alt.length - 1 == t -                end -              when 4 -                lev4=idx_lst_alt[t] -                lev4.each do |lv4| -                  lv4=capital(lv4) -                  if @@the_idx_topics[lang][@lv0][@lv1][@lv2][@lv3][lv4].class==NilClass -                    @@the_idx_topics[lang][@lv0][@lv1][@lv2][@lv3][lv4]={ md: [] } +                  y.each_pair do |x3,y| +                    puts '  '*3 + x3 if x3.class == String +                    if y.class == Hash +                      if y.has_key?(:md) +                        y[:md].each { |x| puts '  '*5 + x[:title] } +                      end +                      y.each_pair do |x4,y| +                        puts '  '*4 + x4 if x4.class == String +                      end +                    end                    end -                  @lv4=lv4 if lev4.length==1 -                  j=@@the_idx_topics[lang][@lv0][@lv1][@lv2][@lv3][lv4][:md] -                  contents(lang,j,idx) if idx_lst_alt.length - 1 == t                  end                end              end            end          end        end -      @the_idx      end    end    class OutputIndex @@ -265,7 +430,8 @@ module SiSU_Harvest_Topics        @opt,@the_idx=opt,the_idx        @env=SiSU_Env::InfoEnv.new        @rc=SiSU_Env::GetInit.instance.sisu_yaml.rc -      @alph=%W[9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] +      @alphabet_list=%W[9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] +      @alph=@alphabet_list.dup        @letter=@alph.shift        @vz=SiSU_Env::GetInit.instance.skin      end @@ -274,17 +440,17 @@ module SiSU_Harvest_Topics          @output ||={}          @output[lng] ||={}          harvest_pth,file='','' -        if @env.output_dir_structure.by_language_code? +        if @env.output_dir_structure.by? == :language            harvest_pth="#{@env.path.webserv}/#{@opt.base_stub}/#{lng}/manifest"            file="#{harvest_pth}/topics.html" -        else @env.output_dir_structure.by_filetype? +        elsif @env.output_dir_structure.by? == :filetype            harvest_pth="#{@env.path.webserv}/#{@opt.base_stub}/manifest"            file="#{harvest_pth}/topics.#{lng}.html"          end          FileUtils::mkdir_p(harvest_pth) unless FileTest.directory?(harvest_pth)          puts "file://#{file}"          @output[lng][:html]=File.new(file,'w') -        if @opt.cmd.inspect =~/-M/ +        if @opt.cmd.inspect =~/[M]/            @output[lng][:html_mnt]=File.new("#{@env.path.pwd}/topics.html",'w')          end        end @@ -297,26 +463,92 @@ module SiSU_Harvest_Topics      end      def html_print        def html_songsheet +        #traverse          html_file_open          html_head          html_alph -        html_body +        html_body_traverse          html_tail          html_file_close        end +      def html_body_traverse +        @the_idx.each_pair do |x0,y| +          lng=x0 +          if x0.class == String +            #do_string_name(lng,'lev0',x0) +            #puts '  '*0 + x0 +          end +          if y.class == Hash +            if y.has_key?(:md) +              y[:md].each do |x| +                #do_hash(lng,attrib,x) #lv==0 ?  +                #puts '  '*5 + x[:title] +              end +            end +            y.each_pair do |x1,y| +              if x1.class == String +                do_string_name(lng,'lev0',x1) +                #puts '  '*1 + x1 +              end +              if y.class == Hash +                if y.has_key?(:md) +                  y[:md].each do |x| +                    do_hash(lng,0,x) +                    #puts '  '*5 + x[:title] +                  end +                end +                y.each_pair do |x2,y| +                  if x2.class == String +                    do_string(lng,'lev1',x2) +                    #puts '  '*2 + x2 +                  end +                  if y.class == Hash +                    if y.has_key?(:md) +                      y[:md].each do |x| +                        do_hash(lng,1,x) +                        #puts '  '*5 + x[:title] +                      end +                    end +                    y.each_pair do |x3,y| +                      if x3.class == String +                        do_string(lng,'lev2',x3) +                        #puts '  '*3 + x3 +                      end +                      if y.class == Hash +                        if y.has_key?(:md) +                          y[:md].each do |x| +                            do_hash(lng,2,x) +                            #puts '  '*5 + x[:title] +                          end +                        end +                        y.each_pair do |x4,y| +                          if x4.class == String +                            do_string(lng,'lev3',x4) +                            #puts '  '*4 + x4 +                          end +                        end +                      end +                    end +                  end +                end +              end +            end +          end +        end +      end        def html_head_adjust(lng,type='')          css_path,authors='','' -        if @env.output_dir_structure.by_language_code? +        if @env.output_dir_structure.by? == :language            css_path=(type !~/maintenance/) \            ? '../../_sisu/css/harvest.css'            : 'harvest.css'            authors='authors.html' -        elsif @env.output_dir_structure.by_filetype? +        elsif @env.output_dir_structure.by? == :filetype            css_path=(type !~/maintenance/) \            ? '../_sisu/css/harvest.css'            : 'harvest.css'            authors="authors.#{lng}.html" -        elsif @env.output_dir_structure.by_filename? +        elsif @env.output_dir_structure.by? == :filename            css_path=(type !~/maintenance/) \            ? '../_sisu/css/harvest.css'            : 'harvest.css' @@ -325,10 +557,10 @@ module SiSU_Harvest_Topics          ln=SiSU_i18n::Languages.new.language.list          harvest_languages=''          @the_idx.keys.each do |lng| -          if @env.output_dir_structure.by_language_code? +          if @env.output_dir_structure.by? == :language              harvest_pth="../../#{lng}/manifest"              file="#{harvest_pth}/topics.html" -          else @env.output_dir_structure.by_filetype? +          else @env.output_dir_structure.by? == :filetype              harvest_pth='.'              file="#{harvest_pth}/topics.#{lng}.html"            end @@ -421,6 +653,11 @@ WOK        end        def do_string_name(lng,attrib,string)          f=/^(\S)/.match(string)[1] +        if @lng != lng +          @alph=@alphabet_list.dup +          @letter=@alph.shift +          @lng = lng +        end          if @letter < f            while @letter < f              if @alph.length > 0 @@ -445,11 +682,11 @@ WOK          end        end        def do_hash_md(lng,attrib,hash) -        if @env.output_dir_structure.by_language_code? +        if @env.output_dir_structure.by? == :language            manifest_at=hash[:file] + '.html' -        elsif @env.output_dir_structure.by_filetype? +        elsif @env.output_dir_structure.by? == :filetype            manifest_at=hash[:file] + '.' + lng +  '.html' -        elsif @env.output_dir_structure.by_filename? +        elsif @env.output_dir_structure.by? == :filename            manifest_at="../#{hash[:file]}/#{hash[:page]}"          end          html=%{<a href="#{manifest_at}">#{hash[:title]}</a> - #{hash[:author]}} @@ -492,140 +729,23 @@ WOK          case          when y==String            attrib="lev#{lv}" -          lv==0 ? do_string_name(lng,attrib,a) : do_string(lng,attrib,a) -        when y==Array -          do_array(lng,lv,a) -        when y==Hash -          do_hash(lng,lv,a) -        end -      end -      def html_body -        the_idx=@the_idx -        the_idx.each_pair do |lng,lng_array| -          lng_array.sort.each do |a| -            do_case(lng,-1,a) -          end -        end -      end -      self -    end -    def screen_print -      def do_string(lv,string) -        s=' '*4 -        puts s*lv + string -      end -      def do_array(lng,lv,array) -        lv+=1 -        array.each do |b| -          do_case(lng,lv,b) -        end -      end -      def do_hash_md(lng,lv,hash) -        string=hash[:title] + ' - ' + hash[:author] -        do_string(lng,lv,string) -      end -      def do_hash(lng,lv,hash) -        lv+=1 -        key=[] -        hash.each_key do |m| -          if m == :md -            do_case(lng,lv,hash[m]) -          elsif m != :title \ -          and m != :author \ -          and m != :filename \ -          and m != :file \ -          and m != :rough_idx \ -          and m != :page -            key << m -          elsif m == :title -            do_hash_md(lng,lv,hash) +          if a=~/S/ +            lv==0 ? do_string_name(lng,attrib,a) : do_string(lng,attrib,a)            end -        end -        if key.length > 0 -          key.sort.each do |m| -            do_string(lng,lv,m) -            do_case(lng,lv,hash[m]) -          end -        end -      end -      def do_case(lng,lv,a) -        s=' '*4 -        y = a.class -        case -        when y==String -          do_string(lng,lv,a)          when y==Array            do_array(lng,lv,a)          when y==Hash            do_hash(lng,lv,a)          end        end -      def cycle -        the_idx=@the_idx -        the_idx.keys.each do |lng| -          the_idx[lng].each do |a| -            do_case(lng,-1,a) -          end -        end -      end -      self -    end -    def screen_print_unsorted -      def do_string(lng,lv,string) -        s=' '*4 -        puts s*lv + string -      end -      def do_array(lng,lv,array) -        lv+=1 -        array.each do |b| -          do_case(lng,lv,b) -        end -      end -      def do_hash_md(lng,lv,hash) -        string=hash[:title] + ' - ' + hash[:author] -        do_string(lng,lv,string) -      end -      def do_hash(lng,lv,hash) -        lv+=1 -        hash.each_key do |m| -          if m == :md -            do_case(lng,lv,hash[m]) -          else -            if m != :title \ -            and m != :author \ -            and m != :filename \ -            and m != :file \ -            and m != :rough_idx \ -            and m != :page -              do_string(lng,lv,m) -              do_case(lng,lv,hash[m]) -            elsif m == :title -              do_hash_md(lng,lv,hash) -            else -            end -          end -        end -      end -      def do_case(lng,lv,a) -        s=' '*4 -        y = a.class -        case -        when y==String -          do_string(lng,lv,a) -        when y==Array -          do_array(lng,lv,a) -        when y==Hash -          do_hash(lng,lv,a) -        end -      end -      def cycle -        the_idx=@the_idx -        the_idx.keys.each do |lng| -          the_idx[lng].each do |a| -            do_case(lng,-1,a) -          end -        end -      end +      #def html_body +      #  the_idx=@the_idx +      #  the_idx.each_pair do |lng,lng_array| +      #    lng_array.sort.each do |a| +      #      do_case(lng,-1,a) +      #    end +      #  end +      #end        self      end    end diff --git a/lib/sisu/v3/hub.rb b/lib/sisu/v3/hub.rb index 241d1538..ce8446e5 100644 --- a/lib/sisu/v3/hub.rb +++ b/lib/sisu/v3/hub.rb @@ -62,6 +62,64 @@ module SiSU    require_relative 'sysenv'                             # sysenv.rb      include SiSU_Screen    @@pwd_the=Dir.pwd +  class OptionLoopFiles +    def initialize(opt) +      @opt=opt +    end +    def loop_files_on_given_option +      @opt.files.each_with_index do |fns,i| +        @opt.fns=fns +        @opt.f_pth=@opt.f_pths[i] +        if fns !~/\.-sst$/ +          @opt.pth=@opt.paths[i] +          @opt.lng=@opt.lngs[i] +        else +          @opt.pth=Dir.pwd +          @opt.lng='en' +        end +        @@pwd=@opt.pth +        Dir.chdir(@opt.pth) #watch +        @env=SiSU_Env::InfoEnv.new(fns) +        yield +      end +    end +    def manifest_on_files_translated +      r=Px[:lng_lst].join('|') +      number_of_files={} +      @opt.files.each_with_index do |fns,i| +        fn=fns.gsub(/(?:\.#{r})?\.ss[tm]$/,'') +        if number_of_files[fn].class == Array +          number_of_files[fn] << i +        else +          number_of_files = { fn => [i] } +        end +      end +      files_translated_idx=[] +      number_of_files.each do |x| +        if x[1].length > 1 +          files_translated_idx << x[1] +        end +      end +      if files_translated_idx.flatten.length > 1 +      SiSU_Screen::Ansi.new(@opt.cmd,'Manifest re-run on (currently generated) tranlated files',"").grey_title_hi unless @opt.cmd =~/q/ +        files_translated_idx.flatten.each do |i| +          @opt.fns=@opt.files[i] +          @opt.f_pth=@opt.f_pths[i] +          if @opt.fns !~/\.-sst$/ +            @opt.pth=@opt.paths[i] +            @opt.lng=@opt.lngs[i] +          else +            @opt.pth=Dir.pwd +            @opt.lng='en' +          end +          @@pwd=@opt.pth +          Dir.chdir(@opt.pth) #watch +          @env=SiSU_Env::InfoEnv.new(@opt.fns) +          yield +        end +      end +    end +  end    class Op      @@env=SiSU_Env::InfoEnv.new      def initialize(opt,req,message) @@ -124,9 +182,6 @@ module SiSU      end      def select        require_relative @req -      if @req =~/^conf$/               # -C -        SiSU_Initialize::Source.new(@opt).read -      end        if not @opt.files.empty?          @opt.files.each_with_index do |fns,i|            env=SiSU_Env::InfoEnv.new(fns) @@ -177,64 +232,9 @@ module SiSU                and @req =~ /^po4a$/                  require_relative 'composite'          # composite.rb #pre-processing                  SiSU_Po4a::Source.new(@opt).read                                         # -P      po4a.rb -              elsif @req=~/^dal$/ \ -              and FileTest.file?(@opt.fns) \ -              and @opt.fns =~ /\.(?:(?:-|ssm\.)?sst|ssm)$/ -                if fns =~ /\.ssm$/ -                  require_relative 'composite'          # composite.rb #pre-processing -                  SiSU_Assemble::Composite.new(@opt).read -                  @opt.fns=fns.gsub(/\.ssm$/,'.ssm.sst') -                end -                SiSU_DAL::Source.new(@opt).read                                         # -m -              elsif FileTest.file?(env.source_file_with_path) -                case @opt.fns -                when /\.(?:(?:-|ssm\.)?sst|ssm)$/ -                  case @req -                  when /^dal$/ -                    if fns =~ /\.ssm$/ -                      require_relative 'composite'      # composite.rb #pre-processing -                      SiSU_Assemble::Composite.new(@opt).read -                      @opt.fns=fns.gsub(/\.ssm$/,'.ssm.sst') -                    end -                                            SiSU_DAL::Source.new(@opt).read              # -m     dal.rb -                  when /^git$/;             SiSU_Git::Source.new(@opt).read              # -g     git.rb -                  when /^concordance$/;     SiSU_Concordance::Source.new(@opt).read      # -w     concordance.rb -                  when /^share_src$/;       SiSU_Markup::Source.new(@opt).read           # -s     share_src.rb -                  when /^sisupod_make$/;    SiSU_Doc::Source.new(@opt).read              # -S     sisupod_make.rb -#                 when /^source_kdissert$/; SiSU_KdiSource::Source.new(@opt).read       # -S     share_src_kdissert.rb -                  when /^digests$/;         SiSU_DigestView::Source.new(@opt).read       # -N     digests.rb -                  when /^plaintext$/;       SiSU_Plaintext::Source.new(@opt).read        # -t -a  plaintext.rb -                  when /^po4a$/;            SiSU_Po4a::Source.new(@opt).read             # -P     po4a.rb -                 #when /^wikispeak$/;       SiSU_Wikispeak::Source.new(@opt).read        # -g -                  when /^epub$/;            SiSU_EPUB::Source.new(@opt).read             # -e     epub.rb -                  when /^odf$/;             SiSU_ODF::Source.new(@opt).read              # -o     odf.rb -                  when /^xml_md_oai_pmh_dc$/; SiSU_XML_Metadata::OAI_PMH.new(@opt).read  # -O -                  when /^texpdf$/;          SiSU_TeX::Source.new(@opt).read              # -p     texpdf.rb -                  when /^manpage$/;         SiSU_Manpage::Source.new(@opt).read          # -i     manpage.rb -                  when /^texinfo$/;         SiSU_TexInfo::Source.new(@opt).read          # -I     texinfo.rb -                  when /^html$/;            SiSU_HTML::Source.new(@opt).read             # -h -H  html.rb -                  when /^xhtml$/;           SiSU_XHTML::Source.new(@opt).read            # -b     xhtml.rb -                  when /^xml$/;             SiSU_XML_SAX::Source.new(@opt).read          # -x     xml.rb -                  when /^xml_dom$/;         SiSU_XML_DOM::Source.new(@opt).read          # -X     xml_dom.rb -                  when /^shared_images$/;   SiSU_Images::Source.new(@opt).read            # -j     shared_images.rb -                 #when /^xml_fictionbook$/; SiSU_XML_Fictionbook::Source.new(@opt).read  # -f -                  when /^xml_scaffold$/;    SiSU_XML_Scaffold::Source.new(@opt).read     # -k     xml_scaffold.rb -                  when /^embedded$/;        SiSU_Embedded::Source.new(@opt).read         # -m     embedded.rb (image and other content) #check -                  when /^manifest$/;        SiSU_Manifest::Source.new(@opt).read         # -y     manifest.rb -                  when /^qrcode$/;          SiSU_QRcode::Source.new(@opt).read           # -Q     qrcode.rb -                  when /^sitemaps$/;        SiSU_Sitemaps::Source.new(@opt).read         # -Y     sitemaps.rb -                  when /^zap$/;             SiSU_Zap::Source.new(@opt).read              # -Z     zap.rb -                  when /^dbi$/;             SiSU_DBI::SQL.new(@opt).connect              # -D -d  dbi.rb -                  when /^dbi_discreet$/;    SiSU_DBI_Discreet::SQL.new(@opt).build       # -d     dbi_discreet.rb -                  end -                  @n_do=@n_do+1 -                  SiSU_Screen::Ansi.new(@opt.cmd,@n_do,"#{@req.upcase} processed").files_processed if @opt.cmd =~/[MVv]/ -                  ObjectSpace.garbage_collect -                else                    #print "not processed --> ", fns, "\n" -                end                else -               if @req !~/^conf$/ \ -               and @opt.fns !~/http:\/\// +                if @req !~/^conf$/ \ +                and @opt.fns !~/http:\/\//                    SiSU::Operations.new(@opt).not_found                  end                end @@ -256,8 +256,8 @@ module SiSU              end            end          end -      elsif @req =~/^dbi$/;            SiSU_DBI::SQL.new(@opt).connect         # -D -d -      elsif @req=~/^sisupod_make$/;    SiSU_Doc::Source.new(@opt).read         # -S +      #elsif @req =~/^dbi$/;            SiSU_DBI::SQL.new(@opt).connect         # -D -d +      #elsif @req=~/^sisupod_make$/;    SiSU_Doc::Source.new(@opt).read         # -S        end        SiSU::Operations.new.counter      end @@ -429,9 +429,6 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/          if @opt.cmd =~/Z/                                                      #% -Z wipe previous output clean            op('zap','Zap, deletions')          end -        if @opt.act[:share_source][:bool] -          op('share_src','SiSU markup source') -        end          if @opt.act[:dal][:bool]            @retry_count= -1            begin @@ -477,119 +474,185 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/              retry unless @retry_count > 1            ensure            end -          @opt.files=@opt.files.collect {|x| x=x.gsub(/(?:https?|file):\/\/\S+\/(\S+)\.sst$/,'\1.-sst') } -        end -        if @opt.act[:dal][:bool]                                               #%--dal, -m -          op('dal','dal') -        end -        @opt.files=@opt.files.collect {|x| x=x.gsub(/\.ssm$/,'.ssm.sst') } -        if @opt.act[:sisupod][:bool]                                           #% --sisupod, -S make sisupod -          op('sisupod_make','sisupod (txz)') -          if @opt.fns=~/\.kdi._sst/ -            op('share_src_kdissert','kdissert (kdi)')                          #% -S share kdissert source +           #@opt.files=@opt.files.collect {|x| x=x.gsub(/(?:https?|file):\/\/\S+\/(\S+)\.sst$/,'\1.-sst') } +         end +         #@opt.files_mod=@opt.files.collect {|x| x=x.gsub(/\.ssm$/,'.ssm.sst') } +        def requires(req) +          require_relative req +        end +        def each_file_loop_options +          @opt.files.each_with_index do |fno,i| +            @opt.fno=fno +            @opt.fns=fno.gsub(/(?:https?|file):\/\/\S+\/(\S+)\.sst$/,'\1.-sst'). +              gsub(/\.ssm$/,'.ssm.sst') +            @opt.f_pth=@opt.f_pths[i] +            if @opt.fns !~/\.-sst$/ +              @opt.pth=@opt.paths[i] +              @opt.lng=@opt.lngs[i] +            else +              @opt.pth=Dir.pwd +              @opt.lng='en' +            end +            @@pwd=@opt.pth +            Dir.chdir(@opt.pth) #watch +            @env=SiSU_Env::InfoEnv.new(@opt.fns) +            if @opt.act[:dal][:bool]                       #% --dal, -m +              if @opt.fno =~ /\.ssm$/ +                require_relative 'composite'               # composite.rb #pre-processing +                SiSU_Assemble::Composite.new(@opt).read +              end +              requires('dal')                              # -m     dal.rb +              SiSU_DAL::Source.new(@opt).read +            end +            if @opt.act[:share_source][:bool] +              requires('share_src')                        # -s     share_src.rb +              SiSU_Markup::Source.new(@opt).read +            end +            if @opt.act[:sisupod][:bool]                   #% --sisupod, -S make sisupod +              requires('sisupod_make')                     # -S     sisupod_make.rb +              SiSU_Doc::Source.new(@opt).read +            end +            if @opt.act[:qrcode][:bool]                    #% --qrcode, -Q +              requires('qrcode')                           # -Q     qrcode.rb +              SiSU_QRcode::Source.new(@opt).read +            end +            if @opt.act[:hash_digests][:bool]              #% --hash-digests, -N digest tree +              requires('digests')                          # -N     digests.rb +              SiSU_DigestView::Source.new(@opt).read +            end +            if @opt.act[:txt][:bool]                       #% --txt, -t -a +              requires('plaintext')                        # -t -a  plaintext.rb +              SiSU_Plaintext::Source.new(@opt).read +            end +            if @opt.act[:html][:bool]                      #% --html, -h +              requires('html')                             # -h -H  html.rb +              SiSU_HTML::Source.new(@opt).read +            end +            if @opt.act[:concordance][:bool]               #% --concordance, -w +              requires('concordance')                      # -w     concordance.rb +              SiSU_Concordance::Source.new(@opt).read +            end +            if @opt.act[:epub][:bool]                      #% --epub, -e +              requires('epub')                             # -e     epub.rb +              SiSU_EPUB::Source.new(@opt).read +            end +            if @opt.act[:odt][:bool]                       #% --odt, -o opendocument +              requires('odf')                              # -o     odf.rb +              SiSU_ODF::Source.new(@opt).read +            end +            if @opt.act[:xhtml][:bool]                     #% --xhtml, -b xhtml +              requires('xhtml')                            # -b     xhtml.rb +              SiSU_XHTML::Source.new(@opt).read +            end +            if @opt.act[:xml_sax][:bool]                   #% --xml-sax, -x xml sax type +              requires('xml')                              # -x     xml.rb +              SiSU_XML_SAX::Source.new(@opt).read +            end +            if @opt.act[:xml_dom][:bool]                   #% --xml-dom, -x xml dom type +              requires('xml_dom')                          # -X     xml_dom.rb +              SiSU_XML_DOM::Source.new(@opt).read +            end +            if @opt.act[:pdf][:bool]                       #% --pdf, -p latex/ texpdf +              requires('texpdf')                           # -p     texpdf.rb +              SiSU_TeX::Source.new(@opt).read +            end +            if @opt.act[:manpage][:bool]                   #% --manpage, -i +              requires('manpage')                          # -i     manpage.rb +              SiSU_Manpage::Source.new(@opt).read +            end +            if @opt.act[:texinfo][:bool]                   #% --texinfo, -I +              requires('texinfo')                          # -I     texinfo.rb +              SiSU_TexInfo::Source.new(@opt).read +            end +            if @opt.act[:sqlite_discreet][:bool]           #% --sqlite, -d DB sqlite +              requires('dbi_discreet')                     # -d     dbi_discreet.rb +              SiSU_DBI_Discreet::SQL.new(@opt).build +            end +            if @opt.act[:manifest][:bool]                  #% --manifest, -y +              requires('manifest')                         # -y     manifest.rb +              SiSU_Manifest::Source.new(@opt).read +            end            end          end -        if @opt.act[:qrcode][:bool]                                            #% --qrcode, -Q -          op('qrcode','QRcode') -        end -        if @opt.act[:hash_digests][:bool]                                      #% --hash-digests, -N digest tree -          op('digests','digests') -        end -        if @opt.act[:html][:bool]                                              #% --html, -h -          op('html','html') -        end -        if @opt.act[:txt][:bool]                                               #% --txt, -t -a -          #-A -f -e -E plaintext -a creates ms-dos type; -A creates unix type, plaintext file -          op('plaintext','plaintext') -        end -        if @opt.act[:epub][:bool]                                              #% --epub, -e -          op('epub','ePub') -        end -        if @opt.act[:odt][:bool]                                               #% --odt, -o opendocument -          op('odf','OpenDocument') -        end -        if @opt.act[:xml_sax][:bool]                                           #% --xml-sax, -x xml sax type -          op('xml','xml sax') -        end -        if @opt.act[:xml_dom][:bool]                                           #% --xml-dom, -x xml dom type -          op('xml_dom','xml dom') -        end -       #if @opt.act[:fictionbook]                                              #% --fictionbook, -f fictionbook xml -       #  op('xml_fictionbook','xml fictionbook') -       #end -        if @opt.act[:xhtml][:bool]                                             #% --xhtml, -b xhtml -          op('xhtml','xhtml sax') -        end -        if @opt.act[:images][:bool]                                            #% --images, -j -          op('shared_images','images') -        end -        if @opt.act[:concordance][:bool]                                       #% --concordance, -w -          op('concordance','Concordance') -        end -        if @opt.cmd =~/O/                                                      #% -O open archive initiative, metadata harvesting -          op('xml_md_oai_pmh_dc','OAI PMH') -        end -        if @opt.act[:po4a][:bool]                                              #% --po4a, -P -          op('po4a','po4a') -        end -        if @opt.act[:git][:bool]                                               #% --git, -g sisu git -          op('git','SiSU Git') -        end -        if @opt.cmd =~/T/                                                      #% -T termsheet/standard form -          SiSU_Help::Help.new('termsheet').help_request -          @opt.files.each do |fns| -            if FileTest.file?(fns) -              @opt.fns=fns -              case @opt.fns -              when /\.(termsheet.rb)$/ -                SiSU::Operations.new(@opt).termsheet -              else                                 #print "not processed --> ", fns, "\n" +        def loop_files_on_given_option_do +          if @opt.act[:images][:bool]                                            #% --images, -j +            OptionLoopFiles.new(@opt).loop_files_on_given_option do +              requires('shared_images') +              SiSU_Images::Source.new(@opt).read                                 # -j     shared_images.rb +            end +          end +          if @opt.cmd =~/O/                                                      #% -O open archive initiative, metadata harvesting +            op('xml_md_oai_pmh_dc','OAI PMH') +          end +          if @opt.act[:po4a][:bool]                                              #% --po4a, -P +            OptionLoopFiles.new(@opt).loop_files_on_given_option do +              requires('po4a') +              SiSU_Po4a::Source.new(@opt).read                                   # -P     po4a.rb +            end +          end +          if @opt.act[:git][:bool]                                               #% --git, -g sisu git +            OptionLoopFiles.new(@opt).loop_files_on_given_option do +              #requires('git') +              #fix +            end +          end +          if @opt.cmd =~/T/                                                      #% -T termsheet/standard form +            SiSU_Help::Help.new('termsheet').help_request +            @opt.files.each do |fns| +              if FileTest.file?(fns) +                @opt.fns=fns +                case @opt.fns +                when /\.(termsheet.rb)$/ +                  SiSU::Operations.new(@opt).termsheet +                else                                 #print "not processed --> ", fns, "\n" +                end +              else SiSU::Operations.new(@opt).not_found                end -            else SiSU::Operations.new(@opt).not_found              end +            SiSU::Operations.new.counter            end -          SiSU::Operations.new.counter -        end -        if @opt.cmd =~/k/                                                      #% -T temporary tests -          op('xml_scaffold','XML scaffold') -        end -        if @opt.act[:pdf][:bool]                                               #% --pdf, -p latex/ texpdf -          op('texpdf','LaTeX pdf') -        end -        if @opt.act[:manpage][:bool]                                           #% --manpage, -i -          op('manpage','manpage') -        end -        if @opt.act[:texinfo][:bool]                                           #% --texinfo, -I -          op('texinfo','TeX Info') -        end -        if @opt.act[:psql][:bool]                                              #% --pg, -D DB postgresql -          op('dbi','postgresql') -        end -        if @opt.act[:sqlite_discreet][:bool]                                            #% --sqlite, -d DB sqlite -          op('dbi_discreet','sqlite') -        end -        if @opt.act[:sqlite][:bool]                                            #% --sqlite, -d DB sqlite -          op('dbi','sqlite') -        end -        if @opt.act[:dal][:bool]                                               #% --dal, -m embedded content -          op('embedded','Embedded Content') -        end -        if @opt.act[:manifest][:bool]                                          #% --manifest, -y -          op('manifest','Manifest') -        end -        if @opt.act[:sitemap][:bool]                                           #% --sitemap, -Y -          op('sitemaps','Sitemap') -        end -        if @opt.mod.inspect !~/--harvest/ -          if @opt.act[:scp][:bool]                                             #% -r copy to remote server -            op('remote','scp') +          if @opt.cmd =~/k/                                                      #% -T temporary tests +            OptionLoopFiles.new(@opt).loop_files_on_given_option do +              #requires('xml_scaffold') +              #fix +            end            end -          if @opt.act[:rsync][:bool]                                           #% -R copy to remote server -            op('remote','rsync') +          if @opt.act[:psql][:bool]                                              #% --pg, -D DB postgresql +            op('dbi','postgresql')            end -        else +          if @opt.act[:sqlite][:bool]                                            #% --sqlite, -d DB sqlite +            op('dbi','sqlite') +          end +          if @opt.act[:manifest][:bool]                                          #% --manifest, -y +            OptionLoopFiles.new(@opt).manifest_on_files_translated do +              requires('manifest') +              SiSU_Manifest::Source.new(@opt).read                               # -y     manifest.rb +            end +          end +          if @opt.act[:sitemap][:bool]                                           #% --sitemap, -Y +            OptionLoopFiles.new(@opt).loop_files_on_given_option do +              requires('sitemaps') +              SiSU_Sitemaps::Source.new(@opt).read                               # -Y     sitemaps.rb +            end +          end +          if @opt.mod.inspect !~/--harvest/ +            if @opt.act[:scp][:bool]                                             #% -r copy to remote server +              op('remote','scp') +            end +            if @opt.act[:rsync][:bool]                                           #% -R copy to remote server +              op('remote','rsync') +            end +          else +          end +          op('urls','urls') +        end +        #if @opt.mod=~/^conf$/               # -C +        if @opt.cmd=~/C/               # -C +          requires('conf')                        # -s     conf.rb +          SiSU_Initialize::Source.new(@opt).read          end -        op('urls','urls') +        each_file_loop_options +        loop_files_on_given_option_do          @msg,@msgs="\tsisu -W [to start ruby web-server on output directory]\n",nil unless @opt.cmd =~/q/          @tell.call.print_brown if @opt.cmd =~/[uUvVM]/ unless @opt.files.join.empty?          if defined? @@env.processing_path.processing \ diff --git a/lib/sisu/v3/options.rb b/lib/sisu/v3/options.rb index 3db80231..0876604d 100644 --- a/lib/sisu/v3/options.rb +++ b/lib/sisu/v3/options.rb @@ -62,10 +62,10 @@ module SiSU_Commandline    require_relative 'sysenv'                             # sysenv.rb    @@base_path=nil    class Options -    attr_accessor :cmd,:mod,:act,:dir_structure_by,:f_pths,:files,:base_path,:base_stub,:sub_location,:paths,:lngs,:f_pth,:pth,:fns,:fnb,:fnc,:fncb,:lng,:lng_base,:what +    attr_accessor :cmd,:mod,:act,:dir_structure_by,:f_pths,:files,:files_mod,:base_path,:base_stub,:sub_location,:paths,:lngs,:f_pth,:pth,:fno,:fns,:fnb,:fnc,:fncb,:lng,:lng_base,:what      def initialize(a) -      @cmd,@f_pth,@pth,@fns,@fnb,@fnc,@fncb,@what,@lng,@lng_base,@base_path,@base_stub,@sub_location='','','','','','','','','','','','','' -      @f_pths,@files,@paths,@mod,@act=Array.new(5){[]} +      @cmd,@f_pth,@pth,@fno,@fns,@fnb,@fnc,@fncb,@what,@lng,@lng_base,@base_path,@base_stub,@sub_location='','','','','','','','','','','','','','' +      @f_pths,@files,@files_mod,@paths,@mod,@act=Array.new(5){[]}        @env=SiSU_Env::InfoEnv.new        @lng_base=@env.language_default_set        @dir_structure_by=SiSU_Env::EnvCall.new.output_dir_structure.by? @@ -448,6 +448,14 @@ module SiSU_Commandline        else          { bool: false, set: :na, inst: '' }        end +      act[:processing_path]=if mod.inspect =~/"--processing-path=/ +        base_pth=mod.join(';').gsub(/^.*--processing-path=['"]?(.+?)(?:['"]?;.+)?$/,'\1') +        { bool: true, set: :on, inst: base_pth } +      elsif mod.inspect =~/"--processing-path/ +        { bool: true, set: :on, inst: @base_path } +      else +        { bool: false, set: :na, inst: nil } +      end        act[:dump]=if mod.inspect =~/"--dump=/          base_pth=mod.join(';').gsub(/^.*--dump=['"]?(.+?)(?:['"]?;.+)?$/,'\1')          { bool: true, set: :on, inst: base_pth } @@ -753,6 +761,11 @@ module SiSU_Commandline      def act        @act      end +    def files_mod +      files_mod=files +      @files_mod=files_mod +      @files_mod +    end      def f_pth        @f_pth      end @@ -768,6 +781,9 @@ module SiSU_Commandline      def lng_base        @lng_base      end +    def fno +      @fno +    end      def fns        @fns      end @@ -780,12 +796,14 @@ module SiSU_Commandline        end      end      def fnc -      @fnc=if @fns =~/\.(?:ssm\.sst|ssm)$/; fnb + '.ssm.sst' +      @fnc=if @fns =~/\.(?:ssm\.sst|ssm)$/ +        fnb + '.ssm.sst'        else @fns        end      end      def fncb -      @fncb=if @fns =~/(?:\~\S{2,3})?\.(?:ssm\.sst|ssm)$/; fnb + '.ssm.sst' +      @fncb=if @fns =~/(?:\~\S{2,3})?\.(?:ssm\.sst|ssm)$/ +        fnb + '.ssm.sst'        else @fns.gsub(/(?:\~\S{2,3})?(\.sst)$/,'\1')        end      end diff --git a/lib/sisu/v3/screen_text_color.rb b/lib/sisu/v3/screen_text_color.rb index 7705e3b1..5dd6109d 100644 --- a/lib/sisu/v3/screen_text_color.rb +++ b/lib/sisu/v3/screen_text_color.rb @@ -206,7 +206,7 @@ module SiSU_Screen      def sisu      end      def rescue -      puts %{\t   #{@cX.orange}Rescued#{@cX.off} #{@cX.grey}#{yield if block_given?}\n\t   An#{@cX.off} #{@cX.fuschia}ERROR#{@cX.off} #{@cX.grey}occurred, message:#{@cX.off} #{@cX.fuschia}#{@txt[0]}#{@cX.off} #{@cX.grey}#{@txt[1]}#{@cX.off} #{@cX.brown}#{@txt[2]}#{@cX.off}} +      STDERR.puts %{\t   #{@cX.orange}Rescued#{@cX.off} #{@cX.grey}#{yield if block_given?}\n\t   An#{@cX.off} #{@cX.fuschia}ERROR#{@cX.off} #{@cX.grey}occurred, message:#{@cX.off} #{@cX.fuschia}#{@txt[0]}#{@cX.off} #{@cX.grey}#{@txt[1]}#{@cX.off} #{@cX.brown}#{@txt[2]}#{@cX.off}}      end      def warn        puts "\t  #{@cX.brown}#{@txt[0]}#{@cX.off} #{@cX.grey}#{@txt[1]}#{@cX.off}" diff --git a/lib/sisu/v3/sysenv.rb b/lib/sisu/v3/sysenv.rb index 0439955b..09dd5d6e 100644 --- a/lib/sisu/v3/sysenv.rb +++ b/lib/sisu/v3/sysenv.rb @@ -4796,7 +4796,7 @@ WOK          elsif output_dir_structure.redirect?            @md.opt.opt_act[:redirect][:inst]          else -          "#{@env.path.webserv}" +          @env.path.webserv          end        end        def base | 
