From aae35fa1dd9c736bbb8dc93e66fed2188007465c Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Tue, 1 May 2012 23:30:34 -0400 Subject: 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 --- data/doc/sisu/CHANGELOG_v3 | 6 + lib/sisu/v3/harvest.rb | 4 +- lib/sisu/v3/harvest_authors.rb | 36 +-- 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]}", %{

#{x[:date]} #{x[:title]}, #{x[:author][:authors_s]}

} ] 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 += %{#{n}, } else names += %{#{n}, } 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=%{#{hash[:title]} - #{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 -- cgit v1.2.3