diff options
Diffstat (limited to 'lib/sisu/develop/xml_format.rb')
| -rw-r--r-- | lib/sisu/develop/xml_format.rb | 865 | 
1 files changed, 865 insertions, 0 deletions
| diff --git a/lib/sisu/develop/xml_format.rb b/lib/sisu/develop/xml_format.rb new file mode 100644 index 00000000..80610911 --- /dev/null +++ b/lib/sisu/develop/xml_format.rb @@ -0,0 +1,865 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +** xml 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/xml_format.rb;hb=HEAD> + +=end +module SiSU_XML_Format +  require_relative 'dp'                                 # dp.rb +  require_relative 'xml_parts'                          # xml_parts.rb +  include SiSU_Param +  class ParagraphNumber +    def initialize(md,paranum) +      @md=md +      @paranum=(paranum ? (/(\d+)/m.match(paranum)[1]) : nil) +    end +    def display +      p_num_display=if @paranum +        @paranum.gsub(/(\d+)/, +        '<font size="1" color="#777777">' + +        '  \1</font>') +      else '' +      end +      p_num_display +    end +    def name +      p_num_name=@paranum.gsub(/(\d+)/,'<a name="\1"></a>') +      p_num_name +    end +    def goto +      p_num_goto=@paranum.gsub(/(\d+)/,'<a href="#\1">') +      p_num_goto +    end +  end +  class HeadInformation +    include SiSU_Parts_XML +    def initialize #dc rdf +      @full_title=@subtitle=@author=@subject=@description=@publisher=@contributor=@date=@type=@format=@identifier=@source=@language=@relation=@coverage=@rights=@copyright=@owner=@keywords='' +      @md=@@md +      # DublinCore 1 - title +      @rdfurl=%{  rdf:about="http://www.jus.uio.no/lm/toc"\n} +      if defined? @md.title.full \ +      and @md.title.full                          # DublinCore 1 - title +        @rdf_title=%{    dc.title="#{seg_name}#{@md.title.full}"\n} +        @full_title=%{<meta name="dc.title" content="#{seg_name}#{@md.title.full}" />\n} +      end +      if defined? @md.creator.author \ +      and @md.creator.author                                                  # DublinCore 2 - creator/author (author) +        @rdf_author=%{    dc.author="#{@md.creator.author}"\n} +        @author=%{<meta name="dc.author" content="#{@md.creator.author}" />\n} +      end +      if defined? @md.classify.subject \ +      and @md.classify.subject=~/\S+/                                          # DublinCore 3 - subject (us library of congress, eric or udc, or schema???) +        @rdf_subject=%{    dc.subject="#{@md.classify.subject}"\n} +        @subject=%{<meta name="dc.subject" content="#{@md.classify.subject}" />\n} +      end +      if defined? @md.notes.description \ +      and @md.notes.description=~/\S+/                                        # DublinCore 4 - description +        @rdf_description=%{    dc.description="#{@md.notes.description}"\n} +        @description=%{<meta name="dc.description" content="#{@md.notes.description}" />\n} +      end +      if defined? @md.publisher \ +      and @md.publisher=~/\S+/                                                # DublinCore 5 - publisher (current copy published by) +        @rdf_publisher=%{    dc.publisher="#{@md.publisher}"\n} +        @publisher=%{<meta name="dc.publisher" content="#{@md.publisher}" />\n} +      end +      if defined? @md.creator.contributor \ +      and @md.creator.contributor=~/\S+/                                      # DublinCore 6 - contributor +        @rdf_contributor=%{    dc.contributor="#{@md.creator.contributor}"\n} +        @contributor=%{<meta name="dc.contributor" content="#{@md.creator.contributor}" />\n} +      end +      if defined? @md.date.published \ +      and @md.date.published                                                  # DublinCore 7 - date year-mm-dd +        @rdf_date=%{    dc.date="#{@md.date.published}"\n} +        @date=%{<meta name="dc.date" content="#{@md.date.published}" #{@md.date_scheme} />\n} +      end +      if defined? @md.date.created \ +      and @md.date.created                                                    # DublinCore 7 - date.created year-mm-dd +        @rdf_date_created=%{    dc.date.created="#{@md.date.created}"\n} +        @date_created=%{<meta name="dc.date.created" content="#{@md.date.created}" #{@md.date_created_scheme} />\n} +      end +      if defined? @md.date.issued \ +      and @md.date.issued                                                      # DublinCore 7 - date.issued year-mm-dd +        @rdf_date_issued=%{    dc.date.issued="#{@md.date.issued}"\n} +        @date_issued=%{<meta name="dc.date.issued" content="#{@md.date.issued}" #{@md.date_issued_scheme} />\n} +      end +      if defined? @md.date.available \ +      and @md.date.available                                                  # DublinCore 7 - date.available year-mm-dd +        @rdf_date_available=%{    dc.date.available="#{@md.date.available}"\n} +        @date_available=%{<meta name="dc.date.available" content="#{@md.date.available}" #{@md.date_available_scheme} />\n} +      end +      if defined? @md.date.valid \ +      and @md.date.valid                                                      # DublinCore 7 - date.valid year-mm-dd +        @rdf_date_valid=%{    dc.date.valid="#{@md.date.valid}"\n} +        @date_valid=%{<meta name="dc.date.valid" content="#{@md.date.valid}" #{@md.date_valid_scheme} />\n} +      end +      if defined? @md.date.modified \ +      and @md.date.modified                                                   # DublinCore 7 - date.modified year-mm-dd +        @rdf_date_modified=%{    dc.date.modified="#{@md.date.modified}"\n} +        @date_modified=%{<meta name="dc.date.modified" content="#{@md.date.modified}" #{@md.date_modified_scheme} />\n} +      end +      if defined? @md.notes.coverage \ +      and @md.notes.coverage=~/\S+/                                        # DublinCore 14 - coverage +        @rdf_coverage=%{    dc.coverage="#{@md.notes.coverage}"\n} +        @coverage=%{<meta name="dc.coverage" content="#{@md.notes.coverage}" />\n} +      end +      if defined? @md.notes.relation \ +      and @md.notes.relation=~/\S+/                                         # DublinCore 13 - relation +        @rdf_relation=%{    dc.relation="#{@md.notes.relation}"\n} +        @relation=%{<meta name="dc.relation" content="#{@md.notes.relation}" />\n} +      end +      if defined? @md.notes.type \ +      and @md.notes.type                                                            # DublinCore 8 - type (genre eg. report, convention etc) +        @rdf_type=%{    dc.type="#{@md.notes.type}"\n} +        @type=%{<meta name="dc.type" content="#{@md.notes.type}" />\n} +      end +      if defined? @md.notes.format \ +      and @md.notes.format=~/\S+/                                              # DublinCore 9 - format (use your mime type) +        @rdf_format=%{    dc.format="#{@md.notes.format}"\n} +        @format=%{<meta name="dc.format" content="#{@md.notes.format}" />\n} +      end +      #if defined? @md.identifier.sisupod \ +      #and @md.identifier.sisupod=~/\S+/                                       # DublinCore 10 - identifier (your identifier, could use urn which is free) +      #  @rdf_identifier=%{    dc.identifier="#{@md.identifier.sisupod}"\n} +      #  @identifier=%{<meta name="dc.identifier" content="#{@md.identifier.sisupod}" />\n} +      #end +      if defined? @md.original.source \ +      and @md.original.source=~/\S+/                                           # DublinCore 11 - source (document source) +        @rdf_source=%{    dc.source="#{@md.original.source}"\n} +        @source=%{<meta name="dc.source" content="#{@md.source}" />\n} +      end +      if defined? @md.original.language \ +      and @md.original.language=~/\S+/                                         # DublinCore 12 - language (English) +        @rdf_language=%{    dc.language="#{@md.original.title}"\n} +        @language=%{<meta name="dc.language" content="#{@md.language[:name]}" />\n} +      end +      if defined? @md.rights.all \ +      and @md.rights.all=~/\S+/                                               # DublinCore 15 - rights +        rights=meta_content_clean(@md.rights.all) +        copyright=meta_content_clean(@md.rights.copyright.all) +        @rdf_rights=%{    dc.rights="#{rights}"\n} +        @rights=%{<meta name="dc.rights" content="#{rights}" />\n} +      end +      @copyright=%{<meta name="copyright" content="#{copyright}" />\n} \ +        if @md.rights.copyright.all # possibly redundant see dc.rights +      @owner=%{<meta name="owner" content="#{@md.owner}" />\n} if @md.owner +      @keywords=%{<meta name="keywords" content="#{@md.keywords}" />\n} if @md.keywords +      @index='index' +    end +    def meta_content_clean(content='') +      content=if not content.nil? +        content=content.tr('"',"'"). +           gsub(/&/,'&') +        content=SiSU_XML_Munge::Trans.new(@md).char_enc.utf8(content) +      else content +      end +    end +    def table_close +      '</font> </td></tr></table>' +    end +    def toc_head +      <<WOK +<html> +<head> +<title>#{@md.html_title}</title> +<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" +         xmlns:dc="http://purl.org/dc/elements/1.1/"> + <rdf:Description +#{@rdfurl} +#{@rdf_title} +#{@rdf_subtitle} +#{@rdf_author} +#{@rdf_subject} +#{@rdf_description} +#{@rdf_publisher} +#{@rdf_contributor} +#{@rdf_date} +#{@rdf_date_created} +#{@rdf_date_issued} +#{@rdf_date_available} +#{@rdf_date_valid} +#{@rdf_date_modified} +#{@rdf_type} +#{@rdf_format} +#{@rdf_identifier} +#{@rdf_source} +#{@rdf_language} +#{@rdf_relation} +#{@rdf_coverage} +#{@rdf_rights} +  /> +</rdf:RDF> +#{@full_title} +#{@author} +#{@subject} +#{@description} +#{@publisher} +#{@contributor} +#{@date} +#{@date_created} +#{@date_issued} +#{@date_available} +#{@date_valid} +#{@date_modified} +#{@type} +#{@format} +#{@identifier} +#{@source} +#{@language} +#{@relation} +#{@coverage} +#{@rights} +#{@copyright} +#{@owner} +#{@png.ico} +#{@txt.generator} +#{@js.head} +\n</head> +#{@color.body} +#{@font.css_table_file} +<a name="top"></a> +<a name="up"></a> +<a name="start"></a> +#{@js.top} +WOK +    end +  end +  class FormatTextObject +    include SiSU_Parts_XML +    attr_accessor :md,:txt,:format,:paranum,:p_num,:para_id,:headname,:font +    def initialize(md,dob) +      @md,@dob=md,dob +      if @dob[:ocn]=~/\d+/ +        @paranum=/(\d+)/m.match(@dob[:ocn])[1] +        @headname='' +        @headname=%{<a name="h#{dob.name}"></a>} if defined? dob.name +        @p_num=SiSU_XML_Format::ParagraphNumber.new(@md,dob.ocn) +      end +      rgx=/^[1-6-]~{1,2}/ #watch +      @lnk_url=@lnk_url.gsub(rgx,'') if @lnk_url =~rgx +      rgx=/~\{\d+\s+(.+?)\}~/ +      @lnk_url=@lnk_url.gsub(rgx,'\1') if @lnk_url =~rgx +    end +    def scr_endnote_body +      "<endnote>#{@txt}</endnote> " +    end +  end +  class FormatScroll < FormatTextObject +    def initialize(md,dob) +      super(md,dob) +    end +    def heading_body +      %{<p class="norm">#{@p_num.name}#{@headname}#{@dob.obj} </p>} + +      %{<p class="paranum"><font size="1" color="#777777">  #{@dob.ocn}</font></p>\n} +    end +    def heading_body0 +      %{<h1 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h1>} + +      %{<p class="paranum"><font size="1" color="#777777">  #{@dob.ocn}</font></p>\n} +    end +    def heading_body1 +      %{<h2 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h2>} + +      %{<p class="paranum"><font size="1" color="#777777">  #{@dob.ocn}</font></p>\n} +    end +    def heading_body2 +      %{<h3 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h3>} + +      %{<p class="paranum"><font size="1" color="#777777">  #{@dob.ocn}</font></p>\n} +    end +    def heading_body3 +      %{<h4 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h4>} + +      %{<p class="paranum"><font size="1" color="#777777">  #{@dob.ocn}</font></p>\n} +    end +    def heading_body4 +      %{<h5 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h5>} + +      %{<p class="paranum"><font size="1" color="#777777">  #{@dob.ocn}</font></p>\n} +    end +    def heading_body5 +      %{<h6 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h6>} + +      %{<p class="paranum"><font size="1" color="#777777">  #{@dob.ocn}</font></p>\n} +    end +    def heading_body6 +      %{<h7 class="norm">#{@p_num.name}#{@headname}#{@dob.obj}</h7>} + +      %{<p class="paranum"><font size="1" color="#777777">  #{@dob.ocn}</font></p>\n} +    end +  end +  class ParagraphNumber +    def initialize(md,ocn) +      @md,@ocn=md,ocn.to_s +      @ocn ||='' +    end +    def ocn_display +      @make=SiSU_Env::ProcessingSettings.new(@md) +      if @make.build.ocn? +        ocn_class='ocn' +        if @ocn.to_i==0 +          @ocn.gsub(/^(\d+|)$/, +            %{<label class="#{ocn_class}"><a name="#{@ocn}"> </a></label>}) +        else +          @ocn.gsub(/^(\d+|)$/, +            %{<label class="#{ocn_class}"><a name="#{@ocn}">\\1</a></label>}) +        end +      else +        ocn_class='ocn_off' +        @ocn.gsub(/^(\d+|)$/, +          %{<label class="#{ocn_class}"> </label>}) +      end +    end +    def name +      %{<a name="#{@ocn}"></a>} +    end +    def id #w3c? "tidy" complains about numbers as identifiers ! annoying +      %{id="o#{@ocn}"} +    end +    def goto +      %{<a href="##{@ocn}">} +    end +  end +  class HeadInformation +    include SiSU_Parts_XML +    attr_reader :md,:sfx,:pdf,:rdf,:vz +    def initialize(md) +      @md=md +      @rdf=SiSU_XML_Tags::RDF.new(md) +      # DublinCore 1 - title +      @stylesheet=SiSU_Style::CSS_HeadInfo.new(md).stylesheet +      @seg_name_html=(SiSU_HTML::Source::Seg.new.seg_name_html || []) +      @seg_name_html_tracker=(SiSU_HTML::Source::Seg.new.seg_name_html_tracker || []) +      @index='index' +      @metalink='#metadata' +      @tocband_scroll,@tocband_segtoc=nil,nil +    end +    def doc_type +      %{<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" +"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml">\n} +    end +    def table_close +      %{  </font> +#{the_table_close}} +    end +    def html_close #moved +    %{</body> +</html>} +    end +  end +  class XML +  end +  class FormatTextObject +    include SiSU_Parts_XML +    attr_accessor :md,:dob,:txt,:ocn,:format,:table,:link,:linkname,:paranum,:p_num,:headname,:banner,:url +    def initialize(md,t_o) +      @md,@t_o=md,t_o +      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 +        @target         =t_o[:target]         || nil #occasionally passed but not used +      elsif t_o.class.inspect =~/Object/ +        @txt=if defined? t_o.obj; t_o.obj +        else nil +        end +        @ocn=if defined? t_o.ocn; t_o.ocn.to_s +        else nil +        end +        @headname=if t_o.is==:heading and defined? t_o.name; t_o.name +        else nil +        end +      else +        if @md.opt.act[:maintenance][:set]==:on +          p __FILE__ << ':' << __LINE__.to_s +          p t_o.class +          p caller +        end +      end +      if defined? @t_o.ocn +        ocn=((@t_o.ocn.to_s =~/\d+/) ? @t_o.ocn : nil) +        @p_num=ParagraphNumber.new(@md,ocn) +      end +      if @format and not @format.empty? +        if @format=~/^\d:(\S+)/ #need more reliable marker #if @format =~ /#{Rx[:lv]}/ +          headname=$1 #format[/\d~(\S+)/m,1] +          @headname=if headname =~/^[a-zA-Z]/; %{<a name="#{headname}" id="#{headname}"></a>} #consider: h_#{headname} +          else %{<a name="h#{headname}" id="h#{headname}"></a>} +          end +        end +      end +      @dob=t_o if defined? t_o.is +    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='' +      ul,ulc="<ul>\n  ","\n  </ul>" if @tag =~/li/ +      %{ +<div class="substance"> +  #{@p_num.ocn_display} +  #{ul}<#{tag} class="#{attrib}" #{@p_num.id}> +    #{@txt} +  </#{tag}>#{ulc} +</div> +} +    end +    def para +      para_form_css('p','norm') +    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 format(tag,attrib) +      para_form_css(tag,attrib) +    end +    def heading_normal(tag,attrib) +      %{ +<div class="substance"> +  #{@p_num.ocn_display} +  <#{tag} class="#{attrib}" #{@p_num.id}>#{@p_num.name} +    #{@headname}#{@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_header(tag,attrib) +      %{ +<div class="content"> +<#{tag} class="#{attrib}"> +    #{@txt} +  </#{tag}> +</div> +} +    end +    def title_header1 +      title_header('h1','tiny') +    end +    def title_header2 +      title_header('h2','tiny') +    end +    def title_header3 +      title_header('h3','tiny') +    end +    def title_header4 +      '' +    end +    def title_header4_old +      %{ +<div class="substance"> +  <label class="ocn"> </label> +  <h4 class="banner"> +    #{@txt} +  </h4> +</div> +} +    end +    def dl #check :trailer +      "<dl><b>#{@txt}</b> #{@trailer}</dl>" +    end +    def table_css_end      #<!TZ!> +      '</table> +    </p> +  </div>' +    end +    def gsub_body +#fix +      @txt=case @txt +      when /^\s*\((i+|iv|v|vi+|ix|x|xi+)\)/ +        @txt.gsub(/^\((i+|iv|v|vi+|ix|x|xi+)\)/,'<b>(\1)</b>'). +          gsub(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((i+|iv|v|vi+|ix|x|xi+)\)/,'\1<b>(\2)</b>') +      when /^\s*\(?(\d|[a-z])+\)/ +        @txt.gsub(/^\((\d+|[a-z])+\)/,'<b>(\1)</b>'). +          gsub(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((\d+|[a-z])+\)/,'\1<b>(\2)</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_header +      @txt=@txt.gsub(/[1-9]~(\S+)/,'<a name="\1"></a>'). +        gsub(/[1-9]~/,'') +      %{<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 +    include SiSU_Parts_XML +    def initialize(md,txt) +      super(md,txt) +    end +  end +  class FormatSeg < FormatTextObject +    def initialize(md,txt) +      super(md,txt) +    end +    def navigation_toc_lev1_advert +      %{#{@banner.home_button}\n +<center> +#{@txt} +#{@two} +</a></center><p />} +    end +    def navigation_toc_lev1 +      %{#{@banner.nav_toc}} +    end +    def navigation_toc_lev2                                                      #change bold use css +      %{<p /> +<table summary="navigation segment level 2"> +<tr><td width ="20"> +</td> +<td> +  <font size="3" #{the_font.set_face}> +    <b>#{@txt}</b> +  </font> +  </p> +#{the_table_close}} +    end +    def navigation_toc_lev3                                                      #change bold use css +      %{<p /> +<table summary="navigation segment level 3"> +<tr><td width ="20"> +</td> +<td> +  <font size="3" #{the_font.set_face}> +    <b>#{@txt}</b> +  </font> +  </p> +#{the_table_close}} +    end +    def navigation_toc_lev4 +      %{<table summary="navigation segment level 4"> +<tr><td width ="80"> +</td> +<td> +<p> +  #{@txt} +</p> +#{the_table_close}} +    end +    def navigation_toc_lev5 +    end +    def navigation_toc_lev6 +    end +    def endnote_seg_body(fn='')  #FIX                                                #url construction keep within single line... BUG WATCH 200408 +      fn='doc' if fn.empty? #you may wish to reconsider, sends to 'doc' where no segment info # Sfx[:html] or Sfx[:xhtml] ? +      %{ +  <p class="endnote"> +    #{@endnote_part_a}#{fn}#{@md.lang_code_insert}#{Sfx[:html]}#{@endnote_part_b} +  </p> +} +    end +    def subtoc_lev(tag,attrib) +      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]}\s*)/m +        note=$1 +        note=note.gsub(/[\n\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[\n\s]+name="-\d+"[\n\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 +    #% para sisu +    def header_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} #{@headname} +    #{@txt} +  </#{tag}> +</div> +} +    end +    def header4 +      %{ +<div class="substance"> +  #{@p_num.ocn_display} +  <h1 class="norm" #{@p_num.id}>#{@p_num.name} +    #{@t_o[:format]} +    #{@txt} +  </h1> +</div> +} +    end +    def header5 +      header_sub('p','bold') +    end +    def header6 +      header_sub('p','bold') +    end +    def header7 +      header_sub('p','bold') +    end +    def navigation_header4 +      %{<table summary="navigation segment header 4" width=100% bgcolor="#08163f" border="0"> +<tr><td align="center"> +<p class="bold"> +  #{@txt} +</p> +#{the_table_close}} +    end +    def navigation_header5 +      %{<p class="bold"> +  #{@txt} +</p>} +    end +    def navigation_header6 +      %{<p class="bold"> +  #{@txt} +</p>} +    end +    def navigation_header7 +      %{<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 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') +      #lev('b','toc') +    end +    def lev0 #docinfo +      lev('h0','toc') +    end +    def mini_lev1 +      lev('h1','minitoc') +    end +    def mini_lev2 +      lev('h2','minitoc') +    end +    def mini_lev3 +      lev('h3','minitoc') +    end +    def mini_lev4 +      lev('h4','minitoc') +    end +    def mini_lev5 +      lev('h5','minitoc') +    end +    def mini_lev6 +      lev('h6','minitoc') +    end +    def mini_lev7 +      lev('h7','minitoc') +    end +    def mini_lev0 #docinfo +      lev('h0','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 XML +  end +end +__END__ +** Notes: tidy -xml index.xml >> index.tidy | 
