# 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 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 'param' # param.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_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 manifest=scroll=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 manifest=scroll=seg='' 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 pre,nxt=false,true 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 ### scroll=seg='' wgt=Widget.new(@md) #dir=SiSU_Env::InfoEnv.new(@md.fns) x=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.cmd =~/M/ 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_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 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 #% 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 header5 header_sub('p','bold') end def header6 header_sub('p','bold') end def header4 %{
    #{@p_num.ocn_display}

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

    } end def navigation_header4 %{

    #{@txt}

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

    #{@txt}

    } end def navigation_header6 %{

    #{@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 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_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__