# encoding: utf-8 =begin * Name: SiSU * Description: a framework for document structuring, publishing and search * Author: Ralph Amissah * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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 . If you have Internet connection, the latest version of the GPL should be available at these locations: * SiSU uses: * Standard SiSU markup syntax, * Standard SiSU meta-markup syntax, and the * Standard SiSU object citation numbering and system * Hompages: * Download: * Git * Ralph Amissah ** Description: xml template ** Notes: tidy -xml index.xml >> index.tidy =end module SiSU_XML_Format require_relative 'dp' # dp.rb include SiSU_Param include SiSU_Viz 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+)/, '' + '  \1') else '' end p_num_display end def name p_num_name=@paranum.gsub(/(\d+)/,'') p_num_name end def goto p_num_goto=@paranum.gsub(/(\d+)/,'') p_num_goto end end class HeadInformation 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=%{\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=%{\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=%{\n} end if defined? @md.notes.description \ and @md.notes.description=~/\S+/ # DublinCore 4 - description @rdf_description=%{ dc.description="#{@md.notes.description}"\n} @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=%{\n} end if defined? @md.creator.contributor \ and @md.creator.contributor=~/\S+/ # DublinCore 6 - contributor @rdf_contributor=%{ dc.contributor="#{@md.creator.contributor}"\n} @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=%{\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=%{\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=%{\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=%{\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=%{\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=%{\n} end if defined? @md.notes.coverage \ and @md.notes.coverage=~/\S+/ # DublinCore 14 - coverage @rdf_coverage=%{ dc.coverage="#{@md.notes.coverage}"\n} @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=%{\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=%{\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=%{\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=%{\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=%{\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=%{\n} end if defined? @md.rights.all \ and @md.rights.all=~/\S+/ # DublinCore 15 - rights @rdf_rights=%{ dc.rights="#{@md.rights.all}"\n} @rights=%{\n} end @copyright=%{\n} if @md.rights.copyright.all # possibly redundant see dc.rights @owner=%{\n} if @md.owner @keywords=%{\n} if @md.keywords @vz=SiSU_Viz::Defaults.new #margin,paragraph,table,banner,url,png,txt,color,font,nav_txt,nav_png,credits,js,php @index='index' end def table_close ' ' end def toc_head < #{@md.html_title} #{@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 #{@color.body} #{@font.css_table_file} #{@js.top} WOK end end class FormatTextObject 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=%{} 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 @vz=SiSU_Viz::Defaults.new end def scr_endnote_body "#{@txt} " end end class FormatScroll < FormatTextObject def initialize(md,dob) super(md,dob) end def heading_body %{

#{@p_num.name}#{@headname}#{@dob.obj}

} + %{

  #{@dob.ocn}

\n} end def heading_body0 %{

#{@p_num.name}#{@headname}#{@dob.obj}

} + %{

  #{@dob.ocn}

\n} end def heading_body1 %{

#{@p_num.name}#{@headname}#{@dob.obj}

} + %{

  #{@dob.ocn}

\n} end def heading_body2 %{

#{@p_num.name}#{@headname}#{@dob.obj}

} + %{

  #{@dob.ocn}

\n} end def heading_body3 %{

#{@p_num.name}#{@headname}#{@dob.obj}

} + %{

  #{@dob.ocn}

\n} end def heading_body4 %{
#{@p_num.name}#{@headname}#{@dob.obj}
} + %{

  #{@dob.ocn}

\n} end def heading_body5 %{
#{@p_num.name}#{@headname}#{@dob.obj}
} + %{

  #{@dob.ocn}

\n} end def heading_body6 %{#{@p_num.name}#{@headname}#{@dob.obj}} + %{

  #{@dob.ocn}

\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+|)$/, %{}) else @ocn.gsub(/^(\d+|)$/, %{}) end else ocn_class='ocn_off' @ocn.gsub(/^(\d+|)$/, %{}) end end def name %{} end def id #w3c? "tidy" complains about numbers as identifiers ! annoying %{id="o#{@ocn}"} end def goto %{} end end class HeadInformation include SiSU_Viz attr_reader :md,:sfx,:pdf,:rdf,:vz def initialize(md) @md=md @rdf=SiSU_XML_Tags::RDF.new(md) # DublinCore 1 - title @vz=SiSU_Viz::Defaults.new @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 %{ \n} end def table_close %{ #{@vz.table_close}} end def html_close #moved %{ } end end class XML end class HeadToc < HeadInformation def initialize(md) super(md) @md=md @tocband_scroll,@tocband_segtoc=make_scroll,make_seg end def scroll_head_navigation_band pdf=if @md.programs[:pdf] < #{make_seg_scroll_pdf} WOK else '' end %{#{pdf}
#{@vz.banner_band}   #{@vz.table_close}

} end def concordance_navigation_band(type='') if type=~/pdf/ @tocband_concordance=make_concordance end %{
#{@vz.banner_band} #{@tocband_concordance}   #{@vz.png_nav_toc}   #{@vz.table_close}

} end def seg_head_navigation_band(type='') if type=~/pdf/ @tocband_segtoc=make_scroll_seg_pdf end firstseg=%{ #{@vz.png_nav_nxt} } if @md.firstseg =~/\S+/ %{ } %{
#{@vz.banner_band} #{@tocband_segtoc}  #{firstseg}  #{@vz.table_close}

} end def seg_head_navigation_band_bottom(type='') if type=~/pdf/ @tocband_segtoc=make_scroll_seg_pdf end firstseg=%{ #{@vz.png_nav_nxt} } if @md.firstseg =~/\S+/ %{ } %{
  #{@tocband_segtoc}  #{firstseg}  #{@vz.table_close}

} end def make_seg_scroll_pdf wgt=Widget.new(@md) scroll=%{

#{@vz.nav_txt_doc_link}
#{scroll} #{wgt.seg(@vz.nav_txt_toc_link)}#{wgt.pdf}#{wgt.odf} #{wgt.concordance(@vz.nav_txt_concordance)} #{wgt.manifest} #{wgt.search} #{wgt.home}
} end def make_scroll_seg_pdf seg='' wgt=Widget.new(@md) seg=%{

#{@vz.nav_txt_toc_link}
#{seg} #{wgt.scroll(@vz.nav_txt_doc_link)}#{wgt.pdf}#{wgt.odf}
#{wgt.concordance(@vz.nav_txt_concordance)} #{wgt.manifest} #{wgt.search} #{wgt.home}
} end def make_concordance wgt=Widget.new(@md) %{ #{wgt.seg(@vz.nav_txt_toc_link)}#{wgt.scroll(@vz.nav_txt_doc_link)}#{wgt.pdf}#{wgt.odf}
#{wgt.concordance(@vz.nav_txt_concordance)} #{wgt.manifest} #{wgt.search} #{wgt.home}
} end def head %{#{doc_type} #{@md.html_title} #{@rdf.rdftoc} #{@rdf.metatag_html} #{@stylesheet.css_head} #{@vz.color_body} } end def links_guide_open(type='horizontal') if type=='vertical'; links_guide_vertical_open else links_guide_horizontal_open end end def links_guide_close #(type='horizontal') insert='' insert=if @md.sfx_src =~/s?/ link='http://sisudoc.org' #get from defaults url='sisudoc.org' insert= %{

  • #{url}
  • } end %{ #{insert} } end def prefix_a end def rights rights=@md.rights.copyright.all.gsub(/^\s*Copyright\s+\(C\)/,'Copyright © ') %{

    Rights: #{rights}

    } end def prefix_b %{

    Prefix: #{@md.prefix_b}

    } end def scroll_head_title_banner_open %{

    #{@md.icon}
    #{@vz.banner_instrument_cover_band_scr}} end def seg_head_title_banner_open %{
    #{@md.icon}
    #{@vz.banner_instrument_cover_band_seg}} end def make_scroll concord=concordance_link(@vz.nav_txt_concordance) %{
    #{@vz.nav_txt_doc_link} #{concord} #{@vz.table_close}} end def make_seg concord=concordance_link(@vz.nav_txt_concordance) %{
    #{@vz.nav_txt_toc_link} #{concord} #{@vz.table_close}} end def manifest #check structure manifest=manifest_link(@vz.nav_txt_manifest) %{#{@vz.margin_txt_3} #{@vz.paragraph_font_small} #{manifest} #{@vz.table_close}} end def concordance #check structure concord=concordance_link(@vz.nav_txt_concordance) %{#{@vz.margin_txt_3} #{@vz.paragraph_font_small} #{concord} #{@vz.table_close}} end def metadata %{#{@vz.margin_css}

    MetaData

    #{@vz.table_close}} end def seg_tail %{

     

    #{@vz.banner_band}
    #{@tocband_segtoc}

     

    #{@vz.credits_splash} #{@vz.credits_sisu}
    } end def scroll_tail #debug nav=scroll_head_navigation_band %{
    #{nav} #{@vz.credits_splash} #{@vz.credits_sisu}
    } end def seg_navigation_tail #this is a bug area, look up and "tidy" #nav=scroll_head_navigation_band %{

     

    #{@vz.credits_splash} #{@vz.credits_sisu}
    } end end class HeadSeg < HeadInformation def initialize(md) #(md='') super(md) end def head %{#{doc_type} #{@seg_name_html[@seg_name_html_tracker]} - #{@md.html_title} #{@rdf.rdfseg} #{@rdf.metatag_html} #{@vz.font_css_table_file} #{@vz.color_body} } end def title_banner(title,subtitle,creator) end def dot_control_pre_next %{} pre=%{} if f_pre==true nxt=%{} if f_nxt==true %{
    #{@vz.png_nav_dot_pre} #{@vz.png_nav_dot_toc} #{@vz.png_nav_dot_nxt} #{@vz.table_close}} end def toc_nav(f_pre=false,f_nxt=false,use=1) pre=nxt='' toc=%{ #{@vz.png_nav_toc} #{@vz.png_nav_pre} #{@vz.png_nav_nxt}
    #{pre} #{toc} #{nxt}
    #{@vz.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 doc_types #used in seg_nav_band ### wgt=Widget.new(@md) #dir=SiSU_Env::InfoEnv.new(@md.fns) if @md.concord_make %{ #{wgt.seg(@vz.nav_txt_toc_link)} #{wgt.scroll(@vz.nav_txt_doc_link)} #{wgt.pdf}#{wgt.odf}
    #{wgt.concordance(@vz.nav_txt_concordance)} #{wgt.manifest} #{wgt.search} #{wgt.home}
    } else %{ #{wgt.seg(@vz.nav_txt_toc_link)} #{wgt.scroll(@vz.nav_txt_doc_link)} #{wgt.pdf}#{wgt.odf}
    #{wgt.manifest} #{wgt.search} #{wgt.home}
    } end end def navigation_table %{
    } end def navigation_table1 %{
    } end def navigation_table2 %{
    } end def header_advert_local_1 dir=SiSU_Env::InfoEnv.new(@fns) %{
    #{@md.ad_alt}

    #{@vz.table_close} } end def header_advert_local_2 dir=SiSU_Env::InfoEnv.new(@fns) %{

    #{@md.ad_alt}

    #{@vz.table_close} } end def header_advert_external dir=SiSU_Env::InfoEnv.new(@fns) %{

    #{@md.ad_alt}

    #{@vz.table_close} } end def credit %{

    #{@vz.credits_splash} #{@vz.credits_sisu}
    } end def navigation_band(segtocband,seg_table_top_control) #change name to navigaion_band_banner %{
    #{@vz.banner_band} #{doc_types} #{segtocband}
    #{seg_table_top_control}} end def navigation_band_bottom(segtocband,seg_table_top_control) #change name to navigaion_band_bannerless %{
    #{doc_types} #{segtocband}
    #{seg_table_top_control}
    } end def endnote_mark %{


    } end def endnote_section_open %{
    } end def endnote_section_close %{
    } #revisit end def head %{#{doc_type} #{@seg_name_html[@seg_name_html_tracker]} - #{@md.html_title} #{@rdf.rdfseg} #{@rdf.metatag_html} #{@stylesheet.css_head} #{@vz.color_body} } end def title_banner(title,subtitle,creator) %{

    #{title}

    #{subtitle}

    #{creator}

    copy @ #{@vz.txt_home}

    } end end class HeadScroll < HeadToc def initialize(md) #(md='') super(md) end def toc_owner_details %{#{@vz.margin_txt_3} #{@vz.paragraph_font_small} Owner Details     #{@vz.table_close}} end def table %{
    #{@vz.paragraph_txt}} end def table1 %{
    #{@vz.paragraph_txt}} end def table2 %{
    #{@vz.paragraph_txt}} end end class FormatTextObject @vz=SiSU_Viz::Defaults.new 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]/; %{} #consider: h_#{headname} else %{} end end end @dob=t_o if defined? t_o.is @vz=SiSU_Viz::Defaults.new end def endnote_body %{

    #{@txt}

    } end def endnote_body_indent %{

    #{@txt}

    } end def no_paranum %{

    #{@txt}

    } end def para_form_css(tag,attrib) # regular paragraphs shaped here ul=ulc='' ul,ulc="
      \n ","\n
    " if @tag =~/li/ %{
    #{@p_num.ocn_display} #{ul}<#{tag} class="#{attrib}" #{@p_num.id}> #{@txt} #{ulc}
    } 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) %{
    #{@p_num.ocn_display} <#{tag} class="#{attrib}" #{@p_num.id}>#{@p_num.name} #{@headname}#{@txt}
    } 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) %{
    <#{tag} class="#{attrib}"> #{@txt}
    } 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 %{
    } end def dl #check :trailer "
    #{@txt} #{@trailer}
    " end def table_css_end # '

    ' 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+)\)/,'(\1)'). gsub(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((i+|iv|v|vi+|ix|x|xi+)\)/,'\1(\2)') when /^\s*\(?(\d|[a-z])+\)/ @txt.gsub(/^\((\d+|[a-z])+\)/,'(\1)'). gsub(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((\d+|[a-z])+\)/,'\1(\2)') when /^\s*\d{1,3}\.\s/ @txt.gsub(/^\s*(\d+\.)/,'\1') when /^\s*[A-Z]\.\s/ @txt.gsub(/^\s*([A-Z]\.)/,'\1') else @txt end end def bold_para %{#{@vz.margin_txt_0}

    #{@txt}

    #{@vz.margin_num_css}     #{@vz.table_close}} end def bold_header @txt=@txt.gsub(/[1-9]~(\S+)/,''). gsub(/[1-9]~/,'') %{

    #{@txt}

    #{@vz.margin_num_css}     #{@vz.table_close}} end def toc_head_copy_at %{

    #{@txt}

    \n} end def center %{

    #{@txt}

    \n} end def bold %{

    #{@txt}

    \n} end def center_bold %{

    #{@txt}

    \n} end end class FormatScroll < FormatTextObject def initialize(md,txt) super(md,txt) @vz=SiSU_Viz::Defaults.new end end class FormatSeg < FormatTextObject def initialize(md,txt) super(md,txt) end def navigation_toc_lev1_advert %{#{@banner.home_button}\n
    #{@txt} #{@two}

    } end def navigation_toc_lev1 %{#{@banner.nav_toc}} end def navigation_toc_lev2 #change bold use css %{

    #{@txt}

    #{@vz.table_close}} end def navigation_toc_lev3 #change bold use css %{

    #{@txt}

    #{@vz.table_close}} end def navigation_toc_lev4 %{

    #{@txt}

    #{@vz.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] ? %{

    #{@endnote_part_a}#{fn}#{@md.lang_code_insert}#{Sfx[:html]}#{@endnote_part_b}

    } end def subtoc_lev(tag,attrib) txt=if @txt \ and @txt =~/<\/?i>|/mi @txt.gsub(/<\/?i>|/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(/ \d+<\/sup> /m,'') end %{<#{tag} class="#{attrib}"> #{txt} #{note} } 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,' ') %{
    #{@p_num.ocn_display} <#{tag} class="#{attrib}" #{@p_num.id}>#{@p_num.name} #{@headname} #{@txt}
    } end def header4 %{
    #{@p_num.ocn_display}

    #{@p_num.name} #{@t_o[:format]} #{@txt}

    } 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 %{

    #{@txt}

    #{@vz.table_close}} end def navigation_header5 %{

    #{@txt}

    } end def navigation_header6 %{

    #{@txt}

    } end def navigation_header7 %{

    #{@txt}

    } end def navigation_center "
    #{@txt}
    " end end class FormatToc < FormatTextObject def initialize(md,txt) super(md,txt) end def links_guide %{
  • #{@lnk_txt}
  • } end def lev(tag,attrib) if @txt %{<#{tag} class="#{attrib}"> #{@txt} } 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 %{

    Manifest (alternative outputs)

    } end def mini_concord_tail %{

    Concordance (wordlist)

    Manifest (alternative outputs)

    } end end class XML end end __END__