diff options
Diffstat (limited to 'lib/sisu/develop/html_format.rb')
| -rw-r--r-- | lib/sisu/develop/html_format.rb | 1348 | 
1 files changed, 0 insertions, 1348 deletions
| diff --git a/lib/sisu/develop/html_format.rb b/lib/sisu/develop/html_format.rb deleted file mode 100644 index 1692e452..00000000 --- a/lib/sisu/develop/html_format.rb +++ /dev/null @@ -1,1348 +0,0 @@ -# encoding: utf-8 -=begin - -* Name: SiSU - -** Description: documents, structuring, processing, publishing, search -*** html formating, css template - -** Author: Ralph Amissah -  <ralph@amissah.com> -  <ralph.amissah@gmail.com> - -** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -  2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah, -  All Rights Reserved. - -** License: GPL 3 or later: - -  SiSU, a framework for document structuring, publishing and search - -  Copyright (C) Ralph Amissah - -  This program is free software: you can redistribute it and/or modify it -  under the terms of the GNU General Public License as published by the Free -  Software Foundation, either version 3 of the License, or (at your option) -  any later version. - -  This program is distributed in the hope that it will be useful, but WITHOUT -  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -  more details. - -  You should have received a copy of the GNU General Public License along with -  this program. If not, see <http://www.gnu.org/licenses/>. - -  If you have Internet connection, the latest version of the GPL should be -  available at these locations: -  <http://www.fsf.org/licensing/licenses/gpl.html> -  <http://www.gnu.org/licenses/gpl.html> - -  <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html> - -** SiSU uses: -  * Standard SiSU markup syntax, -  * Standard SiSU meta-markup syntax, and the -  * Standard SiSU object citation numbering and system - -** Hompages: -  <http://www.jus.uio.no/sisu> -  <http://www.sisudoc.org> - -** Git -  <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> -  <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/develop/html_format.rb;hb=HEAD> - -=end -module SiSU_HTML_Format -  require_relative 'html_parts'                         # html_parts.rb -  class ParagraphNumber -    def initialize(md,ocn) -      @md,@ocn=md,ocn.to_s -      @ocn ||='' -      @make=SiSU_Env::ProcessingSettings.new(@md) -    end -    def ocn_display -      if @make.build.ocn? -        if @ocn.to_i==0 \ -        or @ocn.empty? -          '' -        else -          %{<label class="ocn"><a href="##{@ocn}" class="lnkocn">#{@ocn}</a></label>} -        end -      else -        '' -      end -    end -    def name -      if @make.build.html_strict? \ -      or @ocn==(nil || @ocn.empty?) -        '' -      else -        %{<a name="#{@ocn}"></a>} -      end -    end -    def id #w3c? "tidy" complains about numbers as identifiers ! annoying -      (@ocn==nil || @ocn.empty?) \ -      ? '' : %{id="#{Mx[:ocn_id_char]}#{@ocn}"} -    end -    def goto -      (@ocn==nil || @ocn.empty?) \ -      ? '' : %{<a href="##{@ocn}">} -    end -  end -  class HeadInformation -    require_relative 'css'                              # css.rb -    include SiSU_Parts_HTML -    require_relative 'xml_shared'                       # xml_shared.rb -    attr_reader :md,:rdf -    def initialize(md) -      @md=md -      # DublinCore 1 - title -      @bits=SiSU_Proj_HTML::Bits.new -      @per=SiSU_HTML_Persist::Persist.new -      @per.seg_name_x=SiSU_HTML::Seg.new.seg_name_x -      @per.seg_name_x_tracker=SiSU_HTML::Seg.new.seg_name_x_tracker -      @tocband_scroll,@tocband_segtoc=nil,nil -      @stylesheet=SiSU_Style::CSS_HeadInfo.new(md).stylesheet -      @o_str ||=SiSU_Env::ProcessingSettings.new(md).output_dir_structure -      @index,@metalink='index','#metadata' -      @toc=@md.file.base_filename.html_segtoc -    end -    def url_path_image_sys -      (@o_str.dump_or_redirect?) \ -      ? './image' -      : "#{Xx[:html_relative2]}_sisu/image_sys" -    end -    def icon -      def up -        'arrow_up_red.png' -      end -      def next -        'arrow_next_red.png' -      end -      def previous -        'arrow_prev_red.png' -      end -      def dot_clear -        'dot_clear.png' -      end -      def dot_white -        'dot_white.png' -      end -      def dot -        dot_white -      end -      self -    end -    def png_nav -      def toc -        %{<img border="0" width="22" height="22" src="#{url_path_image_sys}/#{icon.up}" alt="toc" />} -      end -      def pre -        %{<img border="0" width="22" height="22" src="#{url_path_image_sys}/#{icon.previous}" alt="<< previous" />} -      end -      def nxt -        %{<img border="0" width="22" height="22" src="#{url_path_image_sys}/#{icon.next}" alt="next >>" />} -      end -      def dot_toc -        %{<img border="0" width="100%" height="20" src="#{url_path_image_sys}/#{icon.dot}" alt="^" />} -      end -      def dot_pre -        %{<img border="0" width="100%" height="20" src="#{url_path_image_sys}/#{icon.dot}" alt="<" />} -      end -      def dot_nxt -        %{<img border="0" width="100%" height="20" src="#{url_path_image_sys}/#{icon.dot}" alt=">" />} -      end -      self -    end -    def doc_types(page=:seg) #used in toc & seg_nav_band -      wgt=SiSU_HTML_Format::Widget.new(@md) -      %{ -<table summary="segment navigation available documents types: toc,doc,pdf,concordance" border="0" cellpadding="3" cellspacing="0"> -<tr> -<td align="center" bgcolor=#{the_color.band2}> -  #{wgt.manifest(page)} -  #{wgt.search} -</tr></table>} -    end -    def rdf -      SiSU_XML_Tags::RDF.new(md) -    end -    def button_home(page=:seg) -      button=%{ <table summary="home button / home information" border="0" cellpadding="3" cellspacing="0">\n <tr><td align="left" bgcolor="#ffffff">\n} -      if @md.make.home_button_image.is_a?(Hash) -        image_path=if page==:manifest -          @md.file.output_path.manifest.rel_image -        elsif  page==:scroll -          @md.file.output_path.html_scroll.rel_image -        else -          @md.file.output_path.html_seg.rel_image -        end -        SiSU_Env::FileOp.new(@md) -        button +=%{   <p class="tiny_left"><a href="#{@md.make.home_button_image[:link]}" target="_top"><img border="0" src="#{image_path}/#{@md.make.home_button_image[:home_button]}"  width="#{@md.make.home_button_image[:w]}" height="#{@md.make.home_button_image[:h]}" alt="home icon -->" /></a></p>\n} -      elsif @md.home_button_links.is_a?(Array) -        @md.home_button_links.each do |links| -          button +=%{  <p class="tiny_left"><a href="#{links[:url]}" target="_top">\n    #{links[:say]}\n  </a></p>\n} -        end -      end -      button +=%{ </td></tr>\n </table>} -      button -    end -    def html_close #moved -    %{</body> -</html>} -    end -  end -  class Widget < HeadInformation -    include SiSU_Parts_HTML -    def initialize(md) -      super(md) -      @md=md -      @cf_defaults=SiSU_Env::InfoProcessingFlag.new -      @env=SiSU_Env::InfoEnv.new(md.fns) -      @file=SiSU_Env::FileOp.new(md) -      @o_str ||=SiSU_Env::ProcessingSettings.new(md).output_dir_structure -      @make=SiSU_Env::ProcessingSettings.new(md) -    end -    def home -      %{<td align="center" bgcolor=#{the_color.band2}> -  <a href="../index.html" target="_top"> -  #{the_nav.txt_homepage}</a> -</td> -} -    end -    def scroll(text) -      if @md.fns =~ /\.(?:-|ssm\.)?sst$/ -        %{<td align="center" bgcolor=#{the_color.band2}> -  <a href="#{Xx[:html_relative1]}html/#{@file.base_filename.html_scroll}" target="_top"> -    #{text} -  </a> -</td> -} -      end -    end -    def seg(text) -      %{<td align="center" bgcolor="#99CC66"> -  <a href="#{@md.file.base_filename.html_segtoc}" target="_top"> -    #{text} -  </a> -</td> -} -    end -    def search -      if @make.build.html_search_form? -        env=SiSU_Env::InfoEnv.new(@md.fns,@md) -        env.widget.search_form('sisusearch',nil,nil,true) -      else '' -      end -    end -    def manifest(page=:seg) -      if @make.build.links_to_manifest? \ -      and not @o_str.dump_or_redirect? -        manifest_lnk=if @file.output_dir_structure.by_language_code? \ -        or @file.output_dir_structure.by_filetype? -          "#{Xx[:html_relative1]}manifest/#{@file.base_filename.manifest}" -        else @file.base_filename.manifest -        end -        if page==:manifest -          manifest_lnk="#{@md.file.output_path.manifest.url}/#{@file.base_filename.manifest}" -          %{<td align="center" bgcolor=#{the_color.band2}> -  <font face="#{the_font.set_fonts}" size="2"> -  #{the_url_decoration.xml_open}<a href="#{manifest_lnk}" target="_top">#{@md.file.output_path.manifest.url}/#{@file.base_filename.manifest}</a>#{the_url_decoration.xml_close} -  </font> -</td>} -        else -          %{<td align="center" bgcolor=#{the_color.band2}> -  <a href="#{manifest_lnk}" target="_top"> -    #{the_nav.txt_manifest} -  </a> -</td>} -        end -      else '' -      end -    end -  end -  class XML -  end -  class HeadToc < HeadInformation -    def initialize(md) -      super(md) -      @md=md -      @o_str ||=SiSU_Env::ProcessingSettings.new(md).output_dir_structure -      @make=SiSU_Env::ProcessingSettings.new(@md) -      @file=SiSU_Env::FileOp.new(@md) -    end -    def scroll_head_navigation_band -      if @make.build.html_top_band? -        <<WOK -<td align="center" width="60%"> -  #{make_scroll_search_form_and_manifest_link} -</td> -WOK -        %{<table summary="table of contents scroll navigation band" id="toc" width="100%" bgcolor=#{the_color.band1}> -<tr><td width="20%"> -  #{button_home(:scroll)} -</td> -<td width="75%" align="center"> -  #{doc_types} -</td> -<td width="20%"> -    -#{the_table_close} -<p>} -      else '' -      end -    end -    def concordance_navigation_band -      up_button=if @make.build.html_navigation? -        %{</td> -<td width="5%" align="right"> -   <a href="toc.html" target="_top" alt="->"> -      #{png_nav.toc} -    </a>  -} -      else '' -      end -      if @make.build.html_top_band? -        %{<table summary="concordance navigation band" id="toc" width="100%" bgcolor=#{the_color.band1}> -<tr><td width="20%"> -  #{button_home} -</td> -<td width="75%" align="center"> -  #{doc_types} -#{up_button} -#{the_table_close} -<p>} -      else '' -      end -    end -    def seg_head_navigation_band(page=:seg) -      if @make.build.html_navigation? -        if page==:manifest -          nxt=(@file.output_dir_structure.by_language_code? \ -          || @file.output_dir_structure.by_filetype?) \ -          ? "../html/#{@md.fnb}/toc#{@md.lang_code_insert}#{Sfx[:html]}" -          : "toc#{@md.lang_code_insert}#{Sfx[:html]}" -          firstseg=%{<a href="#{nxt}" target="_top" alt="->"> -          #{png_nav.nxt}</a>} -        elsif @md.firstseg =~/\S+/ -          firstseg=%{<a href="#{@md.firstseg}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top" alt="->"> -        #{png_nav.nxt}</a>} -        end -      else '' -      end -      if @make.build.html_top_band? -        %{<table summary="table of contents segment navigation band" id="toc" width="100%" bgcolor=#{the_color.band1}> -<tr><td width="20%"> -#{button_home(page)} -</td> -<td width="75%" align="center"> -  #{doc_types(page)} -</td> -<td width="5%" align="right"> -   #{firstseg}  -#{the_table_close} -<p>} -      else '' -      end -    end -    def manifest_link(text) -#     @file=SiSU_Env::FileOp.new(@md) if @md -  %{<font size=2> -    <a href="#{@md.file.base_filename.manifest}" target="_top">#{text}</a> -  </font>} -    end -    def concordance_link(text) -      if @md.concord_make -  %{<font size=2> -    <a href="#{@md.file.base_filename.html_concordance}" target="_top"> -      #{text} -    </a> -  </font>} -      else '' -      end -    end -    def make_scroll_search_form_and_manifest_link -      wgt=SiSU_HTML_Format::Widget.new(@md) -      %{<td align="center" bgcolor=#{the_color.band2}> -  #{the_nav.txt_doc_link} -</td> -} -      %{<table summary="toc segment and scroll with pdf" border="0" cellpadding="3" cellspacing="0"> -<tr> -  #{wgt.manifest} -  #{wgt.search} -</tr></table>} -    end -    def make_scroll_seg_pdf -      seg='' -      wgt=SiSU_HTML_Format::Widget.new(@md) -      seg=%{<td align="center" bgcolor=#{the_color.band2}> -  #{the_nav.txt_toc_link} -</td> -} -      %{<table summary="toc scroll and segment with pdf" border="0" cellpadding="3" cellspacing="0"> -<tr> -<td align="center" bgcolor=#{the_color.band2}> -  #{wgt.manifest} -  #{wgt.search} -</tr></table>} -    end -    def make_concordance -      wgt=SiSU_HTML_Format::Widget.new(@md) -      %{<table summary="toc scroll and segment with pdf" border="0" cellpadding="3" cellspacing="0"> -<tr> -<td align="center" bgcolor=#{the_color.band2}> -  #{wgt.manifest} -  #{wgt.search} -</tr></table>} -    end -    def head -      rdf=SiSU_XML_Tags::RDF.new(@md) -      %{<!DOCTYPE html> -<html> -<head> -  <meta charset="utf-8"> -  <title> -    #{@md.title.full} -  </title> -<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> -#{rdf.metatag_html} -#{@stylesheet.css_head} -</head> -<body lang="#{@md.opt.lng}"> -<a name="top" id="top"></a>} -    end -    def concordance -      if @md.concord_make -      %{#{the_margin.css} -  <h4 class="toc"> -    <a href="./#{@md.file.base_filename.html_concordance}"> -      <i>Concordance</i> -    </a> -  </h4> -#{table_close}} -      else -      %{#{the_margin.css} -#{table_close}} -      end -    end -    def links_guide_vertical_open -#     @file=SiSU_Env::FileOp.new(@md) if @md -      %{ -<div id="vertical_links"> -  <ul id="vertical"> -  <li class="refbold"> -    <a href="#{the_url.home}"> -      #{the_text.txt_hp} -    </a> -  </li> -  <li class="ref"> -     Quick Ref.: -  </li> -  <li class="ref"> -    <a href="#{@md.file.base_filename.manifest}" alt="Document Manifest" target="_top"> -      Manifest -    </a> -  </li> -<!- quick ref -!>} -    end -    def links_guide_horizontal_open -#     @file=SiSU_Env::FileOp.new(@md) if @md -      %{ -<div id="horizontal_links"> -  <ul id="horizontal"> -  <li class="refbold"> -    <a href="#{the_url.home}"> -      #{the_text.txt_hp} -    </a> -  </li> -  <li class="ref"> -     Quick Ref.: -  </li> -  <li class="ref"> -    <a href="#{@md.file.base_filename.manifest}" alt="Document Manifest" target="_top"> -      Manifest -    </a> -  </li> -<!- quick ref -!>} -    end -    def links_guide_open(type='horizontal') -      (type=='vertical') \ -      ? links_guide_vertical_open -      : links_guide_horizontal_open -    end -    def links_guide_close -      insert='' -      insert=if @md.sfx_src =~/s?/ -        link='http://sisudoc.org'                          #get from defaults -        url='sisudoc.org' -        name='SiSU electronic documents'                   #get from defaults -        insert= %{ -  <li class="ref"> -    <a href="#{link}" alt="#{name}" target="_top"> -      #{url} -    </a> -  </li> -  </ul> -</div> -} -      end -      %{ #{insert} -<!- quick ref -!>} -    end -    def prefix_a -    end -    def rights -      def all -        rights=SiSU_HTML_Tune::CleanHTML.new(@md.rights.all).clean_for_html -        rights=rights.gsub(/^\s*Copyright\s+\(C\)/,'Copyright <sup>©</sup> ') -        %{<p class="small_left">Rights: #{rights}</p> -<p>} -      end -      self -    end -    def prefix_b -      %{<p class="small_left">Prefix: #{@md.prefix_b}<p />} -    end -    def scroll_head_title_banner_open -      icon=@md.icon ? %{<center>\n#{@md.icon}\n</center>} : '' -      %{#{icon} -#{the_banner.instrument_cover_band_scr}} -    end -    def seg_head_title_banner_open -      icon=@md.icon ? %{<center>\n#{@md.icon}\n</center>} : '' -      %{#{icon} -#{the_banner.instrument_cover_band_seg}} -    end -    def make_scroll -      concord=concordance_link(the_nav.txt_concordance) -      %{<table summary="toc scroll" border="0" cellpadding="3" cellspacing="0"> -<tr><td align="center" bgcolor="white" border="0"> -  #{the_nav.txt_doc_link} -</td> -<td align="center" bgcolor="white"> -   #{concord} -#{the_table_close}} -    end -    def make_seg -      concord=concordance_link(the_nav.txt_concordance) -      %{<table summary="toc segment" border="0" cellpadding="3" cellspacing="0"> -<tr><td align="center" bgcolor="white"> -  #{the_nav.txt_toc_link} -</td> -<td align="center" bgcolor="white"> -  <font size=2> -   #{concord} -#{the_table_close}} -    end -    def manifest #check structure -      if not @o_str.dump_or_redirect? -        manifest=manifest_link(the_nav.txt_manifest) -        %{#{the_margin.txt_3} -  #{the_font.paragraph_font_small} -   #{manifest} -    </font> -#{the_table_close}} -      else '' -      end -    end -    def concordance #check structure -      concord=concordance_link(the_nav.txt_concordance) -      %{#{the_margin.txt_3} -  #{the_font.paragraph_font_small} -   #{concord} -    </font> -#{the_table_close}} -    end -    def metadata -      %{#{the_margin.css} -  <h4 class="toc"> -    <a href="#{@metalink}"> -      <i>MetaData</i> -    </a> -  </h4> -#{the_table_close}} -    end -    def seg_tail -      %{ -<div class="main_column"> -<p> <p> -<table summary="toc segment tail" bgcolor=#{the_color.band1}> -<tr><td width="20%"> -  #{the_banner.banner_band} -</td> -<td width="60%"> -  <center> -    #{@tocband_segtoc} -  </center> -</td></tr> -</table> -<p> </p> -#{@bits.credits_sisu} -<a name="bottom" id="bottom"></a> -<a name="end" id="end"></a> -</div> -</div> -</div> -} -    end -    def scroll_tail #debug -      nav=scroll_head_navigation_band -      %{ -<div class="main_column"> -#{nav} -#{@bits.credits_sisu} -<a name="bottom" id="bottom"></a> -<a name="end" id="end"></a> -</div> -} -    end -    def seg_navigation_tail #this is a bug area, look up and "tidy" -      %{ -<div class="main_column"> -<p> </p> -#{@bits.credits_sisu} -<a name="bottom" id="bottom"></a> -<a name="end" id="end"></a> -</div> -</div> -</div> -} -    end -  end -  class HeadSeg < HeadInformation -    def initialize(md) -      super(md) -    end -    def dot_control_pre_next -      pre="#{@per.seg_name_x[@per.seg_name_x_tracker-1]}#{@md.lang_code_insert}#{Sfx[:html]}" -      up=@toc -      nxt="#{@per.seg_name_x[@per.seg_name_x_tracker+1]}#{@md.lang_code_insert}#{Sfx[:html]}" -      if nxt=~/sisu_manifest\.html/ -        @file=SiSU_Env::FileOp.new(@md) if @md -        if @file.output_dir_structure.by_language_code? \ -        or @file.output_dir_structure.by_filetype? -          nxt=nxt.gsub(/sisu_manifest\.html/,"../../manifest/#{@file.base_filename.manifest}") -        end -      end -      %{<table summary="segment hidden control pre and next" width="100%" border="0" cellpadding="0" bgcolor=#{the_color.grey_pale} align="center"> -<tr><td align="left"> -  <a href="#{pre}" target="_top"> -    #{png_nav.dot_pre} -  </a> -</td> -<td align="center"> -  <a href="#{up}" target="_top"> -    #{png_nav.dot_toc} -  </a> -</td> -<td align="right"> -  <a href="#{nxt}" target="_top"> -    #{png_nav.dot_nxt} -  </a> -#{the_table_close}} -    end -    def dot_control_pre -      pre="#{@per.seg_name_x[@per.seg_name_x_tracker-2]}#{@md.lang_code_insert}#{Sfx[:html]}" -      up=@toc -      nxt="#{@md.file.base_filename.html_segtoc}" -      %{<table summary="segment hidden control pre" width="100%" border="0" cellpadding="0" bgcolor=#{the_color.grey_pale} align="center"> -<tr><td align="left"> -  <a href="#{pre}" target="_top"> -    #{png_nav.dot_pre} -  </a> -</td> -<td align="center"> -  <a href="#{up}" target="_top"> -    #{png_nav.dot_toc} -  </a> -</td> -<td align="right"> -  <a href="#{nxt}" target="_top"> -    #{png_nav.dot_nxt} -  </a> -#{the_table_close}} -    end -    def toc_nav(f_pre=false,f_nxt=false,use=1) -      pre=nxt='' -      toc=%{<td align="center" bgcolor=#{the_color.band1}> -  <a href="#{@toc}" target="_top"> -    #{png_nav.toc} -  </a> -</td>} -      pre=%{<td align="center" bgcolor=#{the_color.band1}> -  <a href="#{@per.seg_name_x[@per.seg_name_x_tracker-use]}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top"> -    #{png_nav.pre} -  </a> -</td>} if f_pre==true -      nxt=%{<td align="center" bgcolor=#{the_color.band1}> -  <a href="#{@per.seg_name_x[@per.seg_name_x_tracker+1]}#{@md.lang_code_insert}#{Sfx[:html]}" target="_top"> -    #{png_nav.nxt} -  </a> -</td>} if f_nxt==true -      if nxt =~/sisu_manifest.html/ -        @file=SiSU_Env::FileOp.new(@md) if @md -        if @file.output_dir_structure.by_language_code? \ -        or @file.output_dir_structure.by_filetype? -          nxt=nxt.gsub(/sisu_manifest\.html/,"../../manifest/#{@file.base_filename.manifest}") -        end -      end -      %{<table summary="segment navigation pre/next" border="0" cellpadding="3" cellspacing="0"> -<tr> -#{pre} -#{toc} -#{nxt} -<td> -#{the_table_close}} -    end -    def toc_next2 -      toc_nav(false,true).dup -    end -    def toc_pre_next2 -      toc_nav(true,true).dup -    end -    def toc_pre2 -      toc_nav(true,false,2).dup -    end -    def manifest_link(text) -  %{<font size=2> -    <a href="#{@md.file.base_filename.manifest}" target="_top"> -      #{text} -    </a> -  </font>} -    end -    def concordance_link(text) -      if @md.concord_make -  %{<font size=2> -    <a href="#{@md.file.base_filename.html_concordance}" target="_top"> -      #{text} -    </a> -  </font>} -      else '' -      end -    end -    def credit -      %{ -<div class="main_column"> -#{@bits.credits_sisu} -<a name="bottom" id="bottom"></a> -<a name="end" id="end"></a> -</div></div> -} -    end -    def navigation_band(segtocband,seg_table_top_control) #change name to navigation_band_banner -      %{<table summary="segment navigation band with banner" bgcolor=#{the_color.band1} width="100%"><tr> -<td width="20%" align="left"> -#{button_home} -</td> -<td width="75%" align="center"> -  #{doc_types} -</td> -<td width="5%" align="right"> -  #{segtocband} -</td></tr> -</table> -#{seg_table_top_control}} -    end -    def navigation_band_bottom(segtocband,seg_table_top_control) #change name to navigation_band_bannerless -      %{ -<div class="main_column"> -  <table summary="segment navigation band" bgcolor=#{the_color.band1} width="100%"><tr> -  <td width="70%" align="center"> -    #{doc_types} -  </td> -  <td width="5%" align="right"> -    #{segtocband} -  </td></tr> -  </table> -  #{seg_table_top_control} -</div> -} -    end -    def endnote_mark -%{ -<p class="center" id="endnotes"> -  <hr class="endnote" /> -</p>} -    end -    def endnote_section_open -%{ -<div class="endnote"> -} -    end -    def endnote_section_close -%{ -</div> -} #revisit -    end -    def head_seg -      rdf=SiSU_XML_Tags::RDF.new(@md) -      %{<!DOCTYPE html> -<html> -<head> -  <meta charset="utf-8"> -  <title> -    #{@per.seg_name_x[@per.seg_name_x_tracker]} - -    #{@md.title.main} -  </title> -<meta http-equiv="Content-Type" content="text/html;charset=utf-8"> -#{rdf.metatag_html} -#{@stylesheet.css_head_seg} -</head> -<body lang="#{@md.opt.lng}"> -<a name="top" id="top"></a>} -    end -    def title_banner(title,subtitle,creator) -      %{ -<div class="summary"> -  <p class="tiny"> -    #{title} -  </p> -  <p class="tiny"> -    #{subtitle} -  </p> -  <p class="tiny"> -    #{creator} -  </p> -  <p class="tiny"> -    copy @ -    <a href="#{the_url.home}"> -      #{the_text.txt_home} -    </a> -  </p> -</div> -} -    end -  end -  class HeadScroll < HeadToc -    def initialize(md) -      super(md) -    end -    def toc_owner_details -      %{#{the_margin.txt_3} -#{the_font.paragraph_font_small} -  <a href="#owner.details"> -    Owner Details -    <font size="1" color="#777777"> -          -    </font> -  </a> -  </font> -#{the_table_close}} -    end -  end -  class FormatTextObject -    include SiSU_Parts_HTML -    attr_accessor :md,:t_o,:txt,:ocn,:format,:table,:link,:linkname,:paranum,:p_num,:headname,:banner,:url -    def initialize(md,t_o) -      @md,@t_o=md,t_o -      @make=SiSU_Env::ProcessingSettings.new(@md) -      if t_o.is_a?(Hash) -        @txt            =t_o[:txt]            || nil -        @ocn            =t_o[:ocn]            || nil -        @ocn_display    =t_o[:ocn_display]    || nil -        @headname       =t_o[:headname]       || nil -        @trailer        =t_o[:trailer]        || nil -        @endnote_part_a =t_o[:endnote_part_a] || nil -        @endnote_part_b =t_o[:endnote_part_b] || nil -        @lnk_url        =t_o[:lnk_url]        || nil -        @lnk_txt        =t_o[:lnk_txt]        || nil -        @format         =t_o[:format]         || nil -      elsif t_o.class.inspect =~/^(?:#<)?SiSU_AO_DocumentStructure/ -        @dob=t_o if defined? t_o.is -        @named=nametags_seg(@dob) -        @txt=((defined? t_o.obj) ? t_o.obj : nil) -        @ocn=((defined? t_o.ocn) ? t_o.ocn.to_s : nil) -        @headname=((t_o.is==:heading and defined? t_o.name) ? t_o.name : nil) -      else -        if @md.opt.act[:maintenance][:set]==:on -          p t_o.class -          p caller -        end -      end -      @headnamed=(@headname ? %{<a id="h#{@headname}"></a>} : nil) -      if @txt and not @txt.empty? -        @txt=@txt.gsub(/#{Mx[:mk_o]}[-~]##{Mx[:mk_c]}/,'') -      end -      @p_num=ParagraphNumber.new(@md,@ocn) -    end -    def nametags_scroll(dob) -      tags='' -      if defined? dob.tags \ -      and dob.tags.length > 0 # insert tags "hypertargets" -        dob.tags.each do |t| -          t=t.gsub(/[^a-z0-9._-]/,'') #use for all html tags? consider limiting to strict? or implementing earlier -          tags=tags << %{<named id="#{t}" />} -        end -      end -      tags -    end -    def nametags_seg(dob) #FIX -      tags='' -      if defined? dob.tags \ -      and dob.tags.length > 0 # insert tags "hypertargets" -        dob.tags.each do |t| -          t=t.gsub(/[^a-z0-9._-]/,'') #use for all html tags? consider limiting to strict? or implementing earlier -          tags=(t =~/^[0-9.]+$/) \ -          ? tags             #check what can be sorted in ao -          : (tags << %{<a name="#{t}" ></a>}) -        end -      end -      tags -    end -    def headname #check whether used -      hn=if @t_o.is ==:heading \ -      and not @t_o.name.empty? #determine use -        hn=(@t_o.is ==:heading) \ -        ? (%{<a id="h#{@t_o.name}"></a>}) -        : (%{<a id="#{@t_o.name}"></a>}) -      else nil -      end -      hn -    end -    def endnote_body -      %{ -<p class="endnote"> -  #{@txt} -</p> -} -    end -    def endnote_body_indent -      %{ -  <p class="endnote_indent"> -    #{@txt} -  </p> -} -    end -    def no_paranum -      %{ -<div class="substance"> -  <label class="ocn"> </label> -  <p class="norm"> -    #{@txt} -  </p> -</div> -} -    end -    def para_form_css(tag,attrib)                                                    # regular paragraphs shaped here -      ul=ulc='' -      if tag =~/li/ -        ul,ulc="<ul>\n  ","\n  </ul>" -      end -      %{ -<div class="substance"> -  #{@p_num.ocn_display} -  #{ul}<#{tag} class="#{attrib}" #{@p_num.id}> -    #{@named}#{@txt} -  </#{tag}>#{ulc} -</div> -} -    end -    def para -      para_form_css('p','norm') -    end -    def block -      para_form_css('p','block') -    end -    def group -      para_form_css('p','group') -    end -    def alt -      para_form_css('p','alt') -    end -    def verse -      para_form_css('p','verse') -    end -    def code -      para_form_css('p','code') -    end -    def center -      para_form_css('p','center') -    end -    def bold -      para_form_css('p','bold') -    end -    def bullet -      para_form_css('li','bullet') -    end -    def table -      @txt=if @t_o.obj !~/^<table\s/ -        table=SiSU_HTML_Shared::TableHTML.new(@t_o) #move, make happen earlier -        @txt=table.table.obj -      else @txt -      end -      para_form_css('p','norm') -    end -    def format(tag,attrib) -      para_form_css(tag,attrib) -    end -    def heading_normal(tag,attrib) -      section_break=(tag=~/h[1-5]/) \ -      ? '<br><hr width=90% /><br>' -      : '' -      %{#{section_break} -<div class="substance"> -  #{@p_num.ocn_display} -  <#{tag} class="#{attrib}" #{@p_num.id}>#{@p_num.name} -    #{@named}#{@txt} -  </#{tag}> -</div> -} -    end -    def heading_body -      heading_normal('p','norm') -    end -    def heading_body0 -      heading_normal('h1','norm') -    end -    def heading_body1 -      heading_normal('h1','norm') -    end -    def heading_body2 -      heading_normal('h2','norm') -    end -    def heading_body3 -      heading_normal('h3','norm') -    end -    def heading_body4 -      heading_normal('h4','norm') -    end -    def heading_body5 -      heading_normal('h5','norm') -    end -    def heading_body6 -      heading_normal('h6','norm') -    end -    def heading_body7 -      heading_normal('h7','norm') -    end -    def title_heading(tag,attrib) -      cl=(@make.build.html_minitoc?) \ -      ? 'content' -      : 'content0' -      %{ -<div class="#{cl}"> -<#{tag} class="#{attrib}"> -    #{@named}#{@txt} -  </#{tag}> -</div> -} -    end -    def title_heading0 -      title_heading('h1','tiny') -    end -    def title_heading1 -      title_heading('h1','tiny') -    end -    def title_heading2 -      title_heading('h2','tiny') -    end -    def title_heading3 -      title_heading('h3','tiny') -    end -    def title_heading4 -      '' -    end -    def seg_heading_sub(tag,attrib) -      @txt=@txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ') -      %{ -<div class="substance"> -  #{@p_num.ocn_display} -  <#{tag} class="#{attrib}" #{@p_num.id}>#{@p_num.name} #{@headnamed} -    #{@named}#{@txt} -  </#{tag}> -</div> -} -    end -    def seg_heading4 -      %{ -<div class="substance"> -  #{@p_num.ocn_display} -  <h1 class="norm" #{@p_num.id}>#{@p_num.name} -    #{@txt} -  </h1> -</div> -} -    end -    def seg_heading5 -      seg_heading_sub('p','bold') -    end -    def seg_heading6 -      seg_heading_sub('p','bold') -    end -    def dl #check :trailer -      "<dl><b>#{@txt}</b> #{@trailer}</dl>" -    end -    def table_css_end -      '</table> -    </p> -  </div>' -    end -    def gsub_body #fix -      @txt=case @txt -      when /^\((i+|iv|v|vi+|ix|x|xi+)\)/ -        @txt.gsub(/^\((i+|iv|v|vi+|ix|x|xi+)\)/,'<b>(\1)</b>') -      when /^\(?(\d|[a-z])+\)/ -        @txt.gsub(/^\((\d+|[a-z])+\)/,'<b>(\1)</b>') -      when /^\s*\d{1,3}\.\s/ -        @txt.gsub(/^\s*(\d+\.)/,'<b>\1</b>') -      when /^\s*[A-Z]\.\s/ -        @txt.gsub(/^\s*([A-Z]\.)/,'<b>\1</b>') -      else @txt -      end -    end -    def bold_para -      %{#{the_margin.txt_0} -  <p class="bold"> -    #{@txt} -  </p> -#{the_margin.num_css} -      -#{the_table_close}} -    end -    def bold_heading -      %{<p class="bold"> -    #{@txt} -  </p> -#{the_margin.num_css} -      -#{the_table_close}} -    end -    def toc_head_copy_at -      %{<p class="center">#{@txt}</p>\n} -    end -    def center -      %{<p class="center">#{@txt}</p>\n} -    end -    def bold -      %{<p class="bold">#{@txt}</p>\n} -    end -    def center_bold -      %{<p class="centerbold">#{@txt}</p>\n} -    end -  end -  class FormatScroll < FormatTextObject -    def initialize(md,txt) -      super(md,txt) -    end -  end -  class FormatSeg < FormatTextObject -    def initialize(md,txt) -      super(md,txt) -    end -    def endnote_seg_body(fn='') -      fn="../#{@md.fnb}" if fn.to_s.empty? -      %{ -  <p class="endnote"> -    #{@endnote_part_a}#{fn}#{@md.lang_code_insert}#{Sfx[:html]}#{@endnote_part_b} -  </p> -} -    end -    def clean(txt) -      txt=txt.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/,''). -        gsub(/#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'') -    end -    def subtoc_lev(tag,attrib) -      @txt=clean(@txt) -      txt=if @txt \ -      and @txt =~/<\/?i>|<a\s+name="\S+?">/mi -        @txt.gsub(/<\/?i>|<a\s+name="\S+?">/mi,'') #removes name markers from subtoc, go directly to substantive text -      else @txt -      end -      note='' -      if txt =~/(#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})/m # had \s* at end -        note=$1 -        note=note.gsub(/[\s]+/m,' ') -        txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' '). -          gsub(/<a[\s]+name="-\d+"[\s]+href="#_\d+"> <sup>\d+<\/sup> /m,'') -      end -      %{<#{tag} class="#{attrib}"> -    <a href="##{@ocn}"><i>#{txt}</i></a> #{note} -  </#{tag}>} -    end -    def subtoc_lev5 -      subtoc_lev('h5','subtoc') if @txt -    end -    def subtoc_lev6 -      subtoc_lev('h6','subtoc') if @txt -    end -    def subtoc_lev7 -      subtoc_lev('h7','subtoc') if @txt -    end -    def heading_sub(tag,attrib) -      @txt=@txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ') -      %{ -<div class="substance"> -  #{@p_num.ocn_display} -  <#{tag} class="#{attrib}" #{@p_num.id}>#{@p_num.name} #{@headnamed} -    #{@txt} -  </#{tag}> -</div> -} -    end -    def heading5 -      heading_sub('p','bold') -    end -    def heading6 -      heading_sub('p','bold') -    end -    def heading4 -      %{ -<div class="substance"> -  #{@p_num.ocn_display} -  <h1 class="norm" #{@p_num.id}>#{@p_num.name} -    #{@t_o[:format]} -    #{@txt} -  </h1> -</div> -} -    end -    def navigation_heading4 -      %{<table summary="navigation segment heading 4" width=100% bgcolor="#08163f" border="0"> -<tr><td align="center"> -<p class="bold"> -  #{@txt} -</p> -#{the_table_close}} -    end -    def navigation_heading5 -      %{<p class="bold"> -  #{@txt} -</p>} -    end -    def navigation_heading6 -      %{<p class="bold"> -  #{@txt} -</p>} -    end -    def navigation_center -      "<center>#{@txt}</center>" -    end -  end -  class FormatToc < FormatTextObject -    def initialize(md,txt) -      super(md,txt) -    end -    def links_guide -      %{  <li class="doc"> -    <a href="#{@lnk_url}" target="_top"> -      #{@lnk_txt} -    </a> -  </li> -} -    end -    def lev(tag,attrib) -      if @txt -        %{<#{tag} class="#{attrib}"> -    #{@txt} -  </#{tag}> -} -      else '' -      end -    end -    def lev0 #docinfo -      lev('h1','toc') -    end -    def lev1 -      lev('h1','toc') -    end -    def lev2 -      lev('h2','toc') -    end -    def lev3 -      lev('h3','toc') -    end -    def lev4 -      lev('h4','toc') -    end -    def lev5 -      lev('h5','toc') -    end -    def lev6 -      lev('h6','toc') -    end -    def lev7 -      lev('h7','toc') -    end -    def strip_endnotes(txt) -      txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ') -      txt -    end -    def mini_lev0 -      @txt=strip_endnotes(@txt) -      lev('h1','minitoc') -    end -    def mini_lev1 -      @txt=strip_endnotes(@txt) -      lev('h1','minitoc') -    end -    def mini_lev2 -      @txt=strip_endnotes(@txt) -      lev('h2','minitoc') -    end -    def mini_lev3 -      @txt=strip_endnotes(@txt) -      lev('h3','minitoc') -    end -    def mini_lev4 -      @txt=strip_endnotes(@txt) -      lev('h4','minitoc') -    end -    def mini_lev5 -      @txt=strip_endnotes(@txt) -      lev('h5','minitoc') -    end -    def mini_lev6 -      @txt=strip_endnotes(@txt) -      lev('h6','minitoc') -    end -    def mini_lev7 -      @txt=strip_endnotes(@txt) -      lev('h7','minitoc') -    end -    def mini_lev0 #docinfo -      lev('h1','minitoc') -    end -    def mini_tail -  %{ -  <h4 class="minitoc"> -    <a href="sisu_manifest.html">Manifest (alternative outputs)</a> -  </h4> -} -    end -    def mini_concord_tail -  %{ -  <h4 class="minitoc"> -    <a href="concordance.html">Concordance (wordlist)</a> -  </h4> -  <h4 class="minitoc"> -    <a href="sisu_manifest.html">Manifest (alternative outputs)</a> -  </h4> -} -    end -  end -  class FormatStr -    def initialize(md,str) -      @str=str -    end -    def center -      %{<p class="center">#{@str}</p>\n} -    end -    def bold -      %{<p class="bold">#{@str}</p>\n} -    end -    def center_bold -      %{<p class="centerbold">#{@str}</p>\n} -    end -    def endnote_body -      %{ -<p class="endnote"> -  #{@str} -</p> -} -    end -  end -end -__END__ | 
