diff options
| -rw-r--r-- | data/doc/sisu/CHANGELOG_v3 | 6 | ||||
| -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 | 
4 files changed, 357 insertions, 225 deletions
| diff --git a/data/doc/sisu/CHANGELOG_v3 b/data/doc/sisu/CHANGELOG_v3 index cab6d252..9482c8cb 100644 --- a/data/doc/sisu/CHANGELOG_v3 +++ b/data/doc/sisu/CHANGELOG_v3 @@ -21,6 +21,12 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_3.2.6.orig.tar.xz    sisu_3.2.6-1.dsc    sisu_3.2.6-1.debian.tar.gz +* v3: harvest +  * harvest_topics, sort fix +  * harvest_authors, minor fix +  * sst content parsing lang dir +  * output file location, currently works for (by?) :language & :filetype +  %% 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 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 | 
