class SiSU_HarvestAuthors::OutputIndex

Public Class Methods

new(opt,the_idx) click to toggle source
# File lib/sisu/html_harvest_authors.rb, line 202
def initialize(opt,the_idx)
  @opt,@the_idx=opt,the_idx
  @env=SiSU_Env::InfoEnv.new
  @rc=SiSU_Env::GetInit.new.sisu_yaml.rc
  @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
end

Public Instance Methods

cycle() click to toggle source
# File lib/sisu/html_harvest_authors.rb, line 451
def cycle
  the_idx=@the_idx
  the_idx.sort.each do |a|
    puts a[0]
    a[1][:md].each do |x|
      puts "\t" + x[:file]
    end
  end
end
do_html(lng,html) click to toggle source
# File lib/sisu/html_harvest_authors.rb, line 383
def do_html(lng,html)
  @output[lng][:html_mnt] << html \
    if @output[lng][:html_mnt].is_a?(File)
  @output[lng][:html] << html
end
do_string_name(lng,attrib,string) click to toggle source
# File lib/sisu/html_harvest_authors.rb, line 388
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
        @letter=@alph.shift
        if @output[lng][:html_mnt].is_a?(File)
          @output[lng][:html_mnt] \
          << %{\n<p class="letter"><a name="#{@letter}"></p>#{@letter}</a><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>}
        end
        @output[lng][:html] \
        << %{\n<p class="letter"><a name="#{@letter}">#{@letter}</a></p><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>}
      else break
      end
    end
  end
end
html_alph() click to toggle source
# File lib/sisu/html_harvest_authors.rb, line 349
def html_alph
  a=[]
  a << '<p>'
  @alph.each do |x|
    a << ((x =~/[0-9]/) \
    ? ''
    : %{<a href="##{x}">#{x}</a>,&nbsp;})
  end
  a=a.join
  @the_idx.keys.each do |lng|
    @output[lng][:html_mnt] << a \
      if @opt.act[:maintenance][:set]==:on
    @output[lng][:html] << a
  end
end
html_body() click to toggle source
# File lib/sisu/html_harvest_authors.rb, line 410
def html_body
  the_idx=@the_idx
  the_idx.each_pair do |lng,lng_array|
    lng_array.sort.each do |a|
      do_string_name(lng,'',a)
      name=a[0].sub(/(.+?)(?:,.+|$)/,'\1').gsub(/\s+/,'_')
      x = %{<p class="author"><a name="#{name}">#{a[0]}</a></p>}
      if @output[lng][:html_mnt].is_a?(File)
        @output[lng][:html_mnt] << x
      end
      @output[lng][:html] << x
      lang_code_insert=SiSU_Env::FilenameLanguageCodeInsert.new(@opt,lng).language_code_insert
      works=[]
      a[1][:md].each do |i|
        manifest_at=if @env.output_dir_structure.by? == :language
          i[:file] + Sfx[:html]
        elsif @env.output_dir_structure.by? == :filetype
          i[:file] + lang_code_insert + Sfx[:html]
        elsif @env.output_dir_structure.by? == :filename
          './' + i[:file] + '/' + i[:page]
        else '' #error
        end
        work=[
          "#{i[:date]} #{i[:title]}",
          %{<p class="publication">#{i[:date]} <a href="#{manifest_at}">#{i[:title]}</a>, #{i[:author][:authors_s]}</p>}
        ]
        works<<=(@output[lng][:html_mnt].is_a?(File)) \
        ? (work.concat([%{<p class="publication">[<a href="#{i[:file]}.sst">src</a>]&nbsp;&nbsp;#{i[:date]} <a href="file://#{manifest_at}">#{i[:title]}</a>, #{i[:author][:authors_s]} -- [<a href="#{i[:file]}.sst">#{i[:file]}.sst</a>]</p>}]))
        : work
      end
      works.sort_by {|y| y[0]}.each do |z|
        @output[lng][:html] << z[1]
        @output[lng][:html_mnt] << z[2] \
          if @output[lng][:html_mnt].is_a?(File)
      end
    end
  end
end
html_file_close() click to toggle source
# File lib/sisu/html_harvest_authors.rb, line 246
def html_file_close
  @the_idx.keys.each do |lng|
    @output[lng][:html].close
    @output[lng][:html_mnt].close \
      if @output[lng][:html_mnt].is_a?(File)
  end
end
html_file_open() click to toggle source
# File lib/sisu/html_harvest_authors.rb, line 210
def html_file_open
  @the_idx.keys.each do |lng|
    @output ||={}
    @output[lng] ||={}
    harvest_pth,file='',''
    if @env.output_dir_structure.by? == :language
      harvest_pth=@env.path.webserv + '/' \
      + @opt.base_stub + '/' \
      + lng + '/' \
      + 'manifest'
      file="#{harvest_pth}/authors.html"
    elsif @env.output_dir_structure.by? == :filetype
      harvest_pth=@env.path.webserv + '/' \
      + @opt.base_stub + '/' \
      + 'manifest'
      file="#{harvest_pth}/authors.#{lng}.html"
    elsif @env.output_dir_structure.by? == :filename
      harvest_pth=@env.path.webserv + '/' \
      + @opt.base_stub
      file="#{harvest_pth}/authors.#{lng}.html"
    end
    FileUtils::mkdir_p(harvest_pth) \
      unless FileTest.directory?(harvest_pth)
    fileinfo=(@opt.act[:verbose][:set]==:on \
    || @opt.act[:verbose_plus][:set]==:on \
    || @opt.act[:urls_selected][:set]==:on \
    || @opt.act[:maintenance][:set]==:on) \
    ? ("file://#{file}") : ''
    SiSU_Screen::Ansi.new(
      @opt.act[:color_state][:set],
      "harvest authors (#{@opt.files.length} files)",
      fileinfo
    ).dark_grey_title_hi unless @opt.act[:quiet][:set]==:on
    @output[lng][:html]=File.new(file,'w')
  end
end
html_head() click to toggle source
# File lib/sisu/html_harvest_authors.rb, line 340
def html_head
  @the_idx.keys.each do |lng|
    @output[lng][:html_mnt] \
    << html_head_adjust(lng,'maintenance') \
      if @opt.act[:maintenance][:set]==:on
    @output[lng][:html] \
    << html_head_adjust(lng)
  end
end
html_head_adjust(lng,type='') click to toggle source
# File lib/sisu/html_harvest_authors.rb, line 262
      def html_head_adjust(lng,type='')
        css_path,topics='',''
        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
          css_path=(type !~/maintenance/) \
          ? '../_sisu/css/harvest.css'
          : 'harvest.css'
          topics="topics.#{lng}.html"
        elsif @env.output_dir_structure.by? == :filename
          css_path=(type !~/maintenance/) \
          ? './_sisu/css/harvest.css'
          : 'harvest.css'
          topics="topics.#{lng}.html"
        end
        ln=SiSU_i18n::Languages.new.language.list
        harvest_languages=''
        @the_idx.keys.each do |lg|
          if @env.output_dir_structure.by? == :language
            harvest_pth="../../#{lg}/manifest"
            file="#{harvest_pth}/authors.html"
          elsif @env.output_dir_structure.by? == :filetype
            harvest_pth='.'
            file="#{harvest_pth}/authors.#{lg}.html"
          elsif @env.output_dir_structure.by? == :filename
            harvest_pth='.'
            file="#{harvest_pth}/authors.#{lg}.html"
          end
          l=ln[lg][:t]
          harvest_languages +=
            %{<a href="#{file}">#{l}</a>&nbsp;&nbsp;&nbsp;}
        end
        sv=SiSU_Env::InfoVersion.instance.get_version
        if @env.output_dir_structure.by? == :language
          home_pth='../..'
          output_structure_by=
            '(output organised by language &amp; filetype)'
        elsif @env.output_dir_structure.by? == :filetype
          home_pth='..'
          output_structure_by=
            '(output organised by filetype)'
        elsif @env.output_dir_structure.by? == :filename
          home_pth='.'
          output_structure_by=
            '(output organised by filename)'
        else
          home_pth='.'
          output_structure_by='(output organised by ?)'
        end
        <<WOK
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>SiSU Metadata Harvest - Authors</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="dc.title" content= "SiSU metadata harvest, Authors - SiSU information Structuring Universe, Structured information Serialised Units" />
<meta name="dc.subject" content= "document structuring, ebook, publishing, PDF, LaTeX, XML, ODF, SQL, postgresql, sqlite, electronic book, electronic publishing, electronic document, electronic citation, data structure, citation systems, granular search, digital library" />
<meta name="generator" content="#{sv.project} #{sv.version} of #{sv.date_stamp} (n*x and Ruby!)" />
<link rel="generator" href="http://www.jus.uio.no/sisu/SiSU" />
<link href="#{css_path}" rel="stylesheet" >
<link rel="shortcut icon" href="../_sisu/image/rb7.ico" />
</head>
<body lang="en" xml:lang="en">
<a name="top" id="top"></a>
<a name="up" id="up"></a>
<a name="start" id="start"></a>
<h1>SiSU Metadata Harvest - Authors #{output_structure_by}</h1>
<p>[<a href="#{home_pth}/index.html">&nbsp;HOME&nbsp;</a>] also see <a href="#{topics}">SiSU Metadata Harvest - Topics</a></p>
<p>#{@env.widget_static.search_form}</p>
<hr />
<p class="tiny">#{harvest_languages}</p>
<hr />
WOK
      end
html_print() click to toggle source
# File lib/sisu/html_harvest_authors.rb, line 253
    def html_print
      def html_songsheet
        html_file_open
        html_head
        html_alph
        html_body
        html_tail
        html_file_close
      end
      def html_head_adjust(lng,type='')
        css_path,topics='',''
        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
          css_path=(type !~/maintenance/) \
          ? '../_sisu/css/harvest.css'
          : 'harvest.css'
          topics="topics.#{lng}.html"
        elsif @env.output_dir_structure.by? == :filename
          css_path=(type !~/maintenance/) \
          ? './_sisu/css/harvest.css'
          : 'harvest.css'
          topics="topics.#{lng}.html"
        end
        ln=SiSU_i18n::Languages.new.language.list
        harvest_languages=''
        @the_idx.keys.each do |lg|
          if @env.output_dir_structure.by? == :language
            harvest_pth="../../#{lg}/manifest"
            file="#{harvest_pth}/authors.html"
          elsif @env.output_dir_structure.by? == :filetype
            harvest_pth='.'
            file="#{harvest_pth}/authors.#{lg}.html"
          elsif @env.output_dir_structure.by? == :filename
            harvest_pth='.'
            file="#{harvest_pth}/authors.#{lg}.html"
          end
          l=ln[lg][:t]
          harvest_languages +=
            %{<a href="#{file}">#{l}</a>&nbsp;&nbsp;&nbsp;}
        end
        sv=SiSU_Env::InfoVersion.instance.get_version
        if @env.output_dir_structure.by? == :language
          home_pth='../..'
          output_structure_by=
            '(output organised by language &amp; filetype)'
        elsif @env.output_dir_structure.by? == :filetype
          home_pth='..'
          output_structure_by=
            '(output organised by filetype)'
        elsif @env.output_dir_structure.by? == :filename
          home_pth='.'
          output_structure_by=
            '(output organised by filename)'
        else
          home_pth='.'
          output_structure_by='(output organised by ?)'
        end
        <<WOK
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>SiSU Metadata Harvest - Authors</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="dc.title" content= "SiSU metadata harvest, Authors - SiSU information Structuring Universe, Structured information Serialised Units" />
<meta name="dc.subject" content= "document structuring, ebook, publishing, PDF, LaTeX, XML, ODF, SQL, postgresql, sqlite, electronic book, electronic publishing, electronic document, electronic citation, data structure, citation systems, granular search, digital library" />
<meta name="generator" content="#{sv.project} #{sv.version} of #{sv.date_stamp} (n*x and Ruby!)" />
<link rel="generator" href="http://www.jus.uio.no/sisu/SiSU" />
<link href="#{css_path}" rel="stylesheet" >
<link rel="shortcut icon" href="../_sisu/image/rb7.ico" />
</head>
<body lang="en" xml:lang="en">
<a name="top" id="top"></a>
<a name="up" id="up"></a>
<a name="start" id="start"></a>
<h1>SiSU Metadata Harvest - Authors #{output_structure_by}</h1>
<p>[<a href="#{home_pth}/index.html">&nbsp;HOME&nbsp;</a>] also see <a href="#{topics}">SiSU Metadata Harvest - Topics</a></p>
<p>#{@env.widget_static.search_form}</p>
<hr />
<p class="tiny">#{harvest_languages}</p>
<hr />
WOK
      end
      def html_head
        @the_idx.keys.each do |lng|
          @output[lng][:html_mnt] \
          << html_head_adjust(lng,'maintenance') \
            if @opt.act[:maintenance][:set]==:on
          @output[lng][:html] \
          << html_head_adjust(lng)
        end
      end
      def html_alph
        a=[]
        a << '<p>'
        @alph.each do |x|
          a << ((x =~/[0-9]/) \
          ? ''
          : %{<a href="##{x}">#{x}</a>,&nbsp;})
        end
        a=a.join
        @the_idx.keys.each do |lng|
          @output[lng][:html_mnt] << a \
            if @opt.act[:maintenance][:set]==:on
          @output[lng][:html] << a
        end
      end
      def html_tail
        a =<<WOK
<hr />
<a name="bottom" id="bottom"></a>
<a name="down" id="down"></a>
<a name="end" id="end"></a>
<a name="finish" id="finish"></a>
<a name="stop" id="stop"></a>
<a name="credits"></a>
#{SiSU_Proj_HTML::Bits.new.credits_sisu}
</body>
</html>
WOK
        @the_idx.keys.each do |lng|
          @output[lng][:html_mnt] << a \
            if @output[lng][:html_mnt].is_a?(File)
          @output[lng][:html] << a
        end
      end
      def do_html(lng,html)
        @output[lng][:html_mnt] << html \
          if @output[lng][:html_mnt].is_a?(File)
        @output[lng][:html] << html
      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
              @letter=@alph.shift
              if @output[lng][:html_mnt].is_a?(File)
                @output[lng][:html_mnt] \
                << %{\n<p class="letter"><a name="#{@letter}"></p>#{@letter}</a><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>}
              end
              @output[lng][:html] \
              << %{\n<p class="letter"><a name="#{@letter}">#{@letter}</a></p><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>}
            else break
            end
          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_string_name(lng,'',a)
            name=a[0].sub(/(.+?)(?:,.+|$)/,'\1').gsub(/\s+/,'_')
            x = %{<p class="author"><a name="#{name}">#{a[0]}</a></p>}
            if @output[lng][:html_mnt].is_a?(File)
              @output[lng][:html_mnt] << x
            end
            @output[lng][:html] << x
            lang_code_insert=SiSU_Env::FilenameLanguageCodeInsert.new(@opt,lng).language_code_insert
            works=[]
            a[1][:md].each do |i|
              manifest_at=if @env.output_dir_structure.by? == :language
                i[:file] + Sfx[:html]
              elsif @env.output_dir_structure.by? == :filetype
                i[:file] + lang_code_insert + Sfx[:html]
              elsif @env.output_dir_structure.by? == :filename
                './' + i[:file] + '/' + i[:page]
              else '' #error
              end
              work=[
                "#{i[:date]} #{i[:title]}",
                %{<p class="publication">#{i[:date]} <a href="#{manifest_at}">#{i[:title]}</a>, #{i[:author][:authors_s]}</p>}
              ]
              works<<=(@output[lng][:html_mnt].is_a?(File)) \
              ? (work.concat([%{<p class="publication">[<a href="#{i[:file]}.sst">src</a>]&nbsp;&nbsp;#{i[:date]} <a href="file://#{manifest_at}">#{i[:title]}</a>, #{i[:author][:authors_s]} -- [<a href="#{i[:file]}.sst">#{i[:file]}.sst</a>]</p>}]))
              : work
            end
            works.sort_by {|y| y[0]}.each do |z|
              @output[lng][:html] << z[1]
              @output[lng][:html_mnt] << z[2] \
                if @output[lng][:html_mnt].is_a?(File)
            end
          end
        end
      end
      self
    end
html_songsheet() click to toggle source
# File lib/sisu/html_harvest_authors.rb, line 254
def html_songsheet
  html_file_open
  html_head
  html_alph
  html_body
  html_tail
  html_file_close
end
html_tail() click to toggle source
# File lib/sisu/html_harvest_authors.rb, line 364
      def html_tail
        a =<<WOK
<hr />
<a name="bottom" id="bottom"></a>
<a name="down" id="down"></a>
<a name="end" id="end"></a>
<a name="finish" id="finish"></a>
<a name="stop" id="stop"></a>
<a name="credits"></a>
#{SiSU_Proj_HTML::Bits.new.credits_sisu}
</body>
</html>
WOK
        @the_idx.keys.each do |lng|
          @output[lng][:html_mnt] << a \
            if @output[lng][:html_mnt].is_a?(File)
          @output[lng][:html] << a
        end
      end
screen_print() click to toggle source
# File lib/sisu/html_harvest_authors.rb, line 450
def screen_print
  def cycle
    the_idx=@the_idx
    the_idx.sort.each do |a|
      puts a[0]
      a[1][:md].each do |x|
        puts "\t" + x[:file]
      end
    end
  end
  self
end