=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 Ralph Amissah All Rights Reserved.
* License: GPL 3 or later:
SiSU, a framework for document structuring, publishing and search
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
2007, 2008 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:
* Ralph Amissah
** Description: html generation, processing
=end
module SiSU_HTML
require 'pstore'
require "#{SiSU_lib}/defaults"
require "#{SiSU_lib}/html_table"
require "#{SiSU_lib}/html_format_css"
require "#{SiSU_lib}/html_segments"
require "#{SiSU_lib}/html_scroll"
require "#{SiSU_lib}/html_promo"
include SiSU_HTML_seg
include SiSU_HTML_Format_type
include SiSU_HTML_promo
require "#{SiSU_lib}/param"
include SiSU_Param
include SiSU_Viz
require "#{SiSU_lib}/html_tune"
include SiSU_Tune
require "#{SiSU_lib}/dal"
require "#{SiSU_lib}/shared_xml"
class Source
def initialize(opt)
@opt=opt
end
def read
songsheet
end
def songsheet
begin
@md=SiSU_Param::Parameters.new(@opt).get
@fnb=@md.fnb
@env=SiSU_Env::Info_env.new(@opt.fns)
loc=@env.url.output_tell
tool=if @opt.cmd =~/z/; "#{@env.program.web_browser} #{loc}/#@fnb/#{@md.fn[:index]}"
elsif @opt.cmd =~/[MVv]/; "#{@env.program.web_browser} #{loc}/#@fnb/#{@md.fn[:index]}"
else ''
end
SiSU_Screen::Ansi.new(@opt.cmd,'HTML',tool).green_hi_blue unless @opt.cmd =~/q/
SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{@env.path.output_tell}/#@fnb/#{@md.fn[:index]}").flow if @opt.cmd =~/[MV]/
SiSU_Env::Info_skin.new(@md).select
data=nil
my_make=SiSU_Env::Create_file.new(@opt.cmd,@opt.fns,@md) #Beware #FIX opt and md, both not necessary
SiSU_Env::SiSU_file.new(@md).mkdir
@tuned_file_array=SiSU_HTML::Source::Html_environment.new(@md).tuned_file_instructions
data=@tuned_file_array
scr_endnotes=SiSU_HTML::Source::Endnotes.new(data,@md).scroll
toc=SiSU_HTML::Source::Toc.new(data,@md).songsheet
links_guide=SiSU_HTML::Source::Links_guide.new(data,@md).toc
data=@tuned_file_array
scr_toc=SiSU_HTML::Source::Scroll_head_and_segtoc.new(data,@md,toc,links_guide).in_common #watch
SiSU_HTML::Source::Seg.new(data,@md).songsheet
data=@tuned_file_array
scr=SiSU_HTML::Source::Scroll.new(data,@md).songsheet
scroll=SiSU_HTML::Source::Scroll_output.new(scr_toc,scr[:body],scr_endnotes,scr[:metadata],scr[:owner_details],scr[:tails],@md).publish
SiSU_HTML::Source::Output.new(scroll,@md).scroll
rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
ensure
unless @opt.cmd =~/[MV]/ #check maintenance flag
texfiles=Dir["#{@env.path.tune}/#{@opt.fns}*"]
texfiles.each do |f|
if FileTest.file?(f)
File.unlink(f)
end
end
end
SiSU_Env::Create_file.new(@opt.cmd,@opt.fns).param_instantiate
@@flag,@@scr,@@seg,@@seg_endnotes,@@seg_subtoc,@@seg_ad={},{},{},{},{},{}
@@seg_total,@@tracker,@@loop_count,@@tablehead,@@number_of_cols=0,0,0,0,0
@@seg_name,@@seg_name_html,@@seg_subtoc_array,@@seg_endnotes_array,@@segtocband,@@tablefoot=Array.new(7){[]}
@@filename_seg,@@seg_url,@@fn,@@to_lev4,@@get_hash_to,@@get_hash_fn='','','','','','',''
@@is4=@@is3=@@is2=@@is1=@@header1=@@header2=@@header3=@@header4=0
end
end
private
class Html_environment
def initialize(md)
@md=md
@vz=SiSU_Env::Get_init.instance.skin
@env,@css,@symlnk=SiSU_Env::Info_env.new(@md.fns),SiSU_Style::CSS.new,SiSU_Env::Create_system_link.new #home
end
def suffix_linkname #not used at present
sfx=if @md.cmd =~/h/; '.html'
else ''
end
end
def link_images
@symlnk.images
end
def directories
my_make=SiSU_Env::Create_file.new(@md.cmd,@md.fns)
@path={ :root=>my_make.html_root }
title=File.basename(@md.fns,'.rb')
SiSU_Env::SiSU_file.new(@md).mkdir
end
def tuned_file_instructions
@env=SiSU_Env::Info_env.new(@md.fns)
@tell=SiSU_Screen::Ansi.new(@md.cmd)
if @md
@md.sfx=''
@md.sfx='' if @md.cmd =~/z/
if @md.cmd =~/h/ \
or @md.fns =~/\~[a-z]{2,3}\.s?/ #multilingual document protection is a bit arbitrary, (needed by existing server configuration), add configuration overide...
if @md.cmd =~/H/ \
and @md.fns =~/\~[a-z]{2,3}\.s?/
SiSU_Screen::Ansi.new(@md.cmd,
'multilingual document, creating internal url links with filetype suffix',
"\n\t\t(overriding -H request, using -h mode instead)"
).warn unless @md.cmd =~/q/
end
@md.sfx='.html'
end
end
@md.cmd=@md.cmd.gsub(/H/,'h')
@md.file_type='html' if @md.cmd =~/[hon]/
directories
newfilename=%{#{@env.path.output}/#{@md.fnb}/#{@md.fn[:index]}} if @md.file_type =~/html/
my_make_source_file=SiSU_Env::Create_file.new(@md.cmd,@md.fns)
@fnm=my_make_source_file.marshal_meta
@tune_verse_marshal=my_make_source_file.marshal_tune
dal_array=SiSU_DAL::Source.new(@md).get # dal file drawn here
@tuned_file_array=SiSU_Tune::Tune.new(dal_array,@md).songsheet
require "#{SiSU_lib}/param"
@tuned_file_array
end
end
class Split_text_object
include SiSU_Viz
include SiSU_HTML_Format_type
@@dp=nil
attr_reader :format,:text,:ocn,:scroll_lev_para_ocn,:seg_lev_para_ocn
def initialize(md,para)
@md,@para=md,para
@format,@ocn='null','null'
#@format,@ocn=nil,nil
@dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern
end
def lev_segname_para_ocn #needs work 2003w29
if @para =~/^\d~.+?<~\d+;(?:[ohmu]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/
if @para[/^([1-6])~(\S+)\s+(\S.+?)<~(\d+);(?:[ohmu]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/m]
@format,segname,@text,@ocn=$1,$2,$3,$4
@format="#@format~#{segname}" #
elsif @para[/^([1-6]~)\s+(\S.+?)<~(\d+);(?:[ohmu]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/m]
@format,@text,@ocn=$1,$2,$3
end
else
if @para[/^(?:<:i([1-9])>\s*_\*)\s+(.+?)<~(\d+);(?:[ohu]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/m]
@format,@text,@ocn="_#{$1}\*",$2,$3,$4
elsif @para[/^(_\*)\s+(.+?)<~(\d+);(?:[ohu]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/m]
@format,@text,@ocn=$1,$2,$3
elsif @para[/<:(i[1-9])>\s*(.+?)<~(\d+);(?:[ohu]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/m]
@format,@text,@ocn=$1,$2,$3
elsif @para[/<:(code|alt|verse|group)>(.+?)<~(\d+);(?:[ohu]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/m]
@format,@text,@ocn=$1,$2,$3
elsif @para[/(.+?)<~(\d+);(?:[ohu]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/m]
@text,@ocn=$1,$2 #,$3
end
if @para !~/<~(\d+);(?:[ohu]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$|^$/ #added 2002w06
@text=@para[/(.+?)/m,1]
end
if @para[/^(\d)~\S*\s+(.+)/m]
@format,@text=$1,$2
end
end
@seg_lev_para_ocn=if @para[/.+<~\d+;(?:[ohmu]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/]
SiSU_HTML_Format_type::Format_seg.new(@md,@format,@text,@ocn)
end
@scroll_lev_para_ocn=if @para[/.+<~\d+;(?:[ohmu]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/]
SiSU_HTML_Format_type::Format_scroll.new(@md,@format,@text,@ocn)
end
self
end
end
class Links_guide
@links_guide_toc=[]
def initialize(data,md)
@data,@md=data,md
end
def toc
@links_guide_toc=[]
format_head_toc=SiSU_HTML_Format_type::Head_toc.new(@md)
guide_type='horzontal' #values: horizontal or vertical
@links_guide_toc << format_head_toc.links_guide_open(guide_type)
if defined? @md.lnk \
and @md.lnk
@md.lnk.each do |l|
if defined? l[:say]
target=if l[:url] !~/^\.(\.)?\//; 'external'
else '_top'
end
s_lnk_url,s_lnk_lnk=l[:url],l[:say]
lev_para_ocn=SiSU_HTML_Format_type::Format_toc.new(@md,s_lnk_url,s_lnk_lnk,target)
@links_guide_toc << lev_para_ocn.links_guide if s_lnk_lnk
end
end
end
format_head_toc=SiSU_HTML_Format_type::Head_toc.new(@md)
@links_guide_toc << format_head_toc.links_guide_close #(guide_type)
@links_guide_toc
end
end
class Endnotes
include SiSU_Param
include SiSU_HTML_Format_type
def initialize(data,md)
@data,@md=data,md
end
def scroll
@scr_endnotes=[]
format_head_scroll=SiSU_HTML_Format_type::Head_scroll.new(@md)
@scr_endnotes << format_head_scroll.title_endnote
@data.each do |para|
pg=para.dup
unless pg =~/^<:code>/
if pg =~/~[{\[][\d*+]+ /
endnote_array=[]
if pg=~/~\{[\d*+].+?\}\~/m
endnote_array << pg.scan(/~\{[\d*+]+(.+?)\}\~/m)
end
if pg=~/~\[[\d*]+\s.+?\]\~/m
endnote_array << pg.scan(/~\[[\d*]+(.+?)\]\~/m)
end
if pg=~/~\[[\d+]+\s.+?\]\~/m
endnote_array << pg.scan(/~\[[\d+]+(.+?)\]\~/m)
end
endnote_array.flatten.each do |note|
format_scroll=SiSU_HTML_Format_type::Format_scroll.new(@md,note)
@scr_endnotes << format_scroll.endnote_body
end
end
end
end
@scr_endnotes
end
end
class Toc [],:scr=>[] }
@@seg_url=''
@@dp,@@firstseg=nil,nil
def initialize(data='',md=nil)
@data,@md=data,md
@vz=SiSU_Env::Get_init.instance.skin
@dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern
@pat_heading=/^(?:[1-6]~\S*)?(.*)<~(\d+);(?:[hm]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/
@pat_strip_heading_name=/(.+?)<\/a>/
@tell=SiSU_Screen::Ansi.new(@md.cmd)
end
def songsheet #extracts toc for scroll & seg
SiSU_Screen::Ansi.new(@md.cmd,'Toc').txt_grey unless @md.cmd =~/q/
toc=nil
@@firstseg=nil
@data.each do |para|
if para =~/^([1-6]~|4~!)/
para_toc=para.dup
para_toc.gsub!(/ [\d*+]+<\/sup> <\/a>\s+~[{\[].+?[}\]]~/m,'') #remove endnotes from toc
toc=case para_toc
when /^\s*1~(\S+)?/; Toc.new(para_toc,@md).level_1
when /^\s*2~(\S+)?/; Toc.new(para_toc,@md).level_2
when /^\s*3~(\S+)?/; Toc.new(para_toc,@md).level_3
when /^\s*4~(\S+)?/; Toc.new(para_toc,@md).level_4
when /^\s*5~(\S+)?/; Toc.new(para_toc,@md).level_5
when /^\s*6~(\S+)?/; Toc.new(para_toc,@md).level_6
when /^\s*4~!/; Toc.new(para_toc).level_crosslink
else
end
if @@firstseg.nil? \
and para=~/^4~\S+?/
@@firstseg=/^4~(\S+)?/.match(para)[1]
end
if toc
begin
@@toc[:seg] << toc[:seg] if toc[:seg]
@@toc[:scr] << toc[:scr] if toc[:scr]
rescue; SiSU_Errors::Info_error.new($!,$@,@md.cmd,@md.fns).error
end
end
end
end
@md.firstseg=@@firstseg
@@toc
end
protected
def rss #sort all wrong, disabled but kept
@@toc[:seg] <<<
WOK
end
def level_doc_owner_details
if @md.stmp =~/\w\w/
format_head_scroll=SiSU_HTML_Format_type::Head_scroll.new(@md)
@@toc[:scr] << format_head_scroll.toc_owner_details
end
end
def level_endnotes
if @md.flag_endnotes
format_head_scroll=SiSU_HTML_Format_type::Head_scroll.new(@md)
@@toc[:scr] << format_head_scroll.toc_endnote
end
end
def level_metadata
format_head_toc=SiSU_HTML_Format_type::Head_toc.new(@md)
@@toc[:scr] << format_head_toc.metadata
@@toc[:seg] << format_head_toc.seg_metadata
end
def level_word_index
format_head_toc=SiSU_HTML_Format_type::Head_toc.new(@d0c)
@@toc[:scr] << format_head_toc.concordance
@@toc[:seg] << format_head_toc.concordance
end
def level_1
para=@data
unless para =~/<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/
para.gsub!(@pat_strip_heading_name,'\1')
end
para[@pat_heading]
linkname,link=$1,$2 if $&
if link \
and link !~/#/ #% keep eye on link
p_num=SiSU_HTML_Format_type::Paragraph_number.new(@md,link)
end
title=unless para =~/Document Information/; linkname
else
link='metadata'
%{#{linkname}}
end
toc={}
format_toc=SiSU_HTML_Format_type::Format_toc.new(@md,title)
toc[:seg]=if para =~/^\d~meta\s+Document Information/
format_toc.lev0
else format_toc.lev1
end
title=if para =~/(<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>)$/
m=/#{$1}/
para.gsub!(m,'')
if para=~/^\d~meta\s+Document Information/
%{#{linkname}}
else linkname
end
else
@@toc[:scr] << '
'
link=if para =~/<~[1-9];([0-6]):\d+;\w\d+><#@dp:#@dp>$/; $1
else ''
end
%{#{linkname}}
end
format_toc=SiSU_HTML_Format_type::Format_toc.new(@md,title)
toc[:scr]=if para =~/^\d~meta\s+Document Information/
format_toc.lev0
else format_toc.lev1
end
toc
end
def level_2
para=@data
unless para =~/<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/
para.gsub!(@pat_strip_heading_name,'\1')
end
para[@pat_heading]
linkname,link=$1,$2 if $&
if link \
and link !~/#/
p_num=SiSU_HTML_Format_type::Paragraph_number.new(@md,link)
end
format_toc=SiSU_HTML_Format_type::Format_toc.new(@md,linkname)
toc={}
toc[:seg]=format_toc.lev2
if para =~/(<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>)$/
m=/#{$1}/
para.gsub!(m,'')
title=linkname
else title=%{#{p_num.goto}#{linkname}}
end
format_toc=SiSU_HTML_Format_type::Format_toc.new(@md,title)
toc[:scr]=format_toc.lev2
toc
end
def level_3
para=@data
para.gsub!(@pat_strip_heading_name,'\1')
para.gsub(/(.*?)<\/a>(.*)/,'\1') #2002w42 altered gsub! - problematic? - suspect
para[@pat_heading]
linkname,link=$1,$2 if $&
if link \
and link !~/#/
p_num=SiSU_HTML_Format_type::Paragraph_number.new(@md,link)
end
format_toc=SiSU_HTML_Format_type::Format_toc.new(@md,linkname)
toc={}
toc[:seg]=format_toc.lev3
if para =~/(<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>)$/
m=/#{$1}/
para.gsub!(m,'')
title=linkname
else title=%{#{p_num.goto}#{linkname}}
end
format_toc=SiSU_HTML_Format_type::Format_toc.new(@md,title)
toc[:scr]=format_toc.lev3
toc
end
def level_4
para=@data
unless para =~/~metadata/
unless para =~/<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/
para.gsub!(@pat_strip_heading_name,'\1')
para[@pat_heading]
linkname,link=$1,$2 if $&
p_num=SiSU_HTML_Format_type::Paragraph_number.new(@md,link) if link
end
para.gsub!(/<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/,'')
if para =~/^4~/
seg_link=para.gsub(/^\s*4~(\S+)\s+(.+?)$/,
%{
\\2
})
@@seg_url=para[/^4~(\S+).+?$/,1]
elsif para =~/\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+/
seg_link=para.gsub(/^\s*(#{@md.lv4}\s+)\s*(\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+)(.*)/,
%{\\1 \\2 \\3 })
end
p_num=SiSU_HTML_Format_type::Paragraph_number.new(@md,link) if link
format_toc=SiSU_HTML_Format_type::Format_toc.new(@md,seg_link)
toc={}
toc[:seg]=format_toc.lev4
if para =~/<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/
m=/#{$1}/
para.gsub!(m,'')
title=linkname
else title=%{#{p_num.goto}#{linkname}} if p_num
end
format_toc=SiSU_HTML_Format_type::Format_toc.new(@md,title)
toc[:scr]=format_toc.lev4
toc
end
end
def level_5
para=@data
if para !~/<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/
para.gsub!(@pat_strip_heading_name,'\1')
end
para[@pat_heading]
linkname,link=$1,$2 if $&
if link \
and link !~/#/
p_num=SiSU_HTML_Format_type::Paragraph_number.new(@md,link)
end
toc={}
if para =~/<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/
m=/#{$1}/
para.gsub!(m,'')
title=linkname
else
lnk_n_txt=%{
#{linkname}
}
format_toc=SiSU_HTML_Format_type::Format_toc.new(@md,lnk_n_txt)
toc[:seg]=format_toc.lev5
title=%{#{p_num.goto}#{linkname}}
end
format_toc=SiSU_HTML_Format_type::Format_toc.new(@md,title)
toc[:scr]=format_toc.lev5
toc
end
def level_6
para=@data
if para !~/<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/
para.gsub!(@pat_strip_heading_name,'\1')
end
para[@pat_heading]
linkname,link=$1,$2 if $&
if link \
and link !~/#/
p_num=SiSU_HTML_Format_type::Paragraph_number.new(@md,link)
end
toc={}
if para =~/<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/
m=/#{$1}/
para.gsub!(m,'')
title=linkname
else
lnk_n_txt=%{
#{linkname}
}
format_toc=SiSU_HTML_Format_type::Format_toc.new(@md,lnk_n_txt)
toc[:seg]=format_toc.lev6
title=%{#{p_num.goto}#{linkname}}
end
format_toc=SiSU_HTML_Format_type::Format_toc.new(@md,title)
toc[:scr]=format_toc.lev6
toc
end
def level_crosslink
para=@data
if para !~/^4~!/
para.gsub!(/^4~!\s+(\S+)\s+(.+)/,
%{
})
else
para.gsub!(/^4~!\s+(\S+)\s+(.+)/,
%{
})
end
end
end
class Scroll_head_and_segtoc < Toc
def initialize(data,md='',toc='',links_guide_toc='')
@data,@md,@toc,@links_guide_toc=data,md,toc,links_guide_toc
@env=SiSU_Env::Info_env.new(@md.fns)
@vz=SiSU_Env::Get_init.instance.skin
end
def in_common
toc_shared=[]
@segtoc=[]
SiSU_Screen::Ansi.new(@md.cmd,'Scroll & Segtoc').txt_grey unless @md.cmd =~/q/
format_head_toc=SiSU_HTML_Format_type::Head_toc.new(@md)
dochead=format_head_toc.head
dochead.gsub!(/toc\.(html)/,'doc.\1') #kludge
ads=SiSU_HTML_promo::Ad.new(@md)
toc_shared << dochead << ads.div.major
@segtoc << format_head_toc.head << ads.div.major
toc_shared << format_head_toc.toc_head_escript if SiSU_HTML_Format_type::Head_toc.method_defined? :toc_head_escript
@segtoc << format_head_toc.toc_head_escript if SiSU_HTML_Format_type::Head_toc.method_defined? :toc_head_escript
toc_shared << format_head_toc.scroll_head_navigation_band
if @md.dc_rights
rights=format_head_toc.rights
rights=SiSU_Tune::Clean_html.new(rights).clean
end
if @md.prefix_b
prefix_b=format_head_toc.prefix_b
prefix_b=SiSU_Tune::Clean_html.new(prefix_b).clean
end
@seg_toc_band=format_head_toc.seg_head_navigation_band('pdf') #bug, vary depending on type of doc !! examine
@segtoc << @seg_toc_band
toc_shared << format_head_toc.scroll_head_title_banner_open
@segtoc << format_head_toc.seg_head_title_banner_open
tmp_head=nil
doc_title_endnote=@md.title.gsub(/(\*+)/,'\1')
tmp_head=doc_title_endnote + "\n"
format_txt_obj=SiSU_HTML_Format_type::Format_text_object.new(@md,tmp_head)
toc_shared << format_txt_obj.center_bold
@segtoc << format_txt_obj.center_bold
if not @md.subtitle.nil? \
and not @md.subtitle.empty?
tmp_head=@md.subtitle + "\n"
format_txt_obj=SiSU_HTML_Format_type::Format_text_object.new(@md,tmp_head)
toc_shared << format_txt_obj.center_bold
@segtoc << format_txt_obj.center_bold
end
if @md.dc_creator
creator_endnote=@md.dc_creator.gsub(/(\*+)/,%{ \\1})
tmp_head=creator_endnote + "\n"
format_txt_obj=SiSU_HTML_Format_type::Format_text_object.new(@md,tmp_head)
toc_shared << format_txt_obj.center_bold
@segtoc << format_txt_obj.center_bold
end
toc_shared << format_head_toc.copyat
@segtoc << format_head_toc.copyat
toc_shared << "#{@vz.table_close*1}\n"
@segtoc << "#{@vz.table_close*1}\n"
tmp_head=nil
if @md.prefix_a
tmp_head ||= %{#{@md.prefix_a}\n}
toc_shared << tmp_head.dup
@segtoc << tmp_head.dup
end
tmp_head=nil
toc_shared << @links_guide_toc
toc_shared << rights if @md.dc_rights
toc_shared << prefix_b if @md.prefix_b
#Table of Contents added/appended here
toc_shared << @toc[:scr]
@segtoc << @links_guide_toc
@segtoc << @toc[:seg]
@segtoc << rights if @md.dc_rights
@segtoc << prefix_b if @md.prefix_b
#Segtoc tail added here
@segtoc << "
\n" #bugfix sort later DEBUGNOW
@segtoc << @seg_toc_band
ads=SiSU_HTML_promo::Ad.new(@md)
@segtoc << format_head_toc.seg_navigation_tail << ads.div.close << ads.display << format_head_toc.html_close
@segtoc.flatten!.compact!
Output.new(@segtoc,@md).segtoc
@segtoc=[]
@toc[:scr],@toc[:seg]=[],[]
toc_shared
end
end
class Table < SiSU_HTML_table::Table
end
class Scroll < SiSU_HTML_scroll::Scroll
end
class Scroll_output
def initialize(scr_toc,scr_body,scr_endnotes,scr_metadata,scr_owner_details,scr_tails,md)
@scr_toc,@scr_body,@scr_endnotes,@scr_metadata,@scr_owner_details,@scr_tails,@md=scr_toc,scr_body,scr_endnotes,scr_metadata,scr_owner_details,scr_tails,md
end
def publish
scroll=[]
hr='
'
scroll << @scr_toc << hr << @scr_body << hr << @scr_endnotes << hr << @scr_metadata << @scr_owner_details << @scr_tails
scroll.flatten!.compact!
end
end
class Seg < SiSU_HTML_seg::Seg
end
class Output
include SiSU_Param
@@dp=nil
def initialize(data='',md='')
@data,@md=data,md
@my_make=SiSU_Env::Create_file.new(@md.cmd,@md.fns,@md)
@dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern
end
def scroll
begin
@filename_html_scroll=@my_make.file_html_scroll(@md)
@data.each do |para|
para.strip!
para.gsub!(/<:.+?>/,'')
unless para =~/\A\s*\Z/
@filename_html_scroll.puts para,"\n"
end
end
rescue; SiSU_Errors::Info_error.new($!,$@,@md.cmd,@md.fns).error
end
end
def segtoc
begin
@filename_html_segtoc=@my_make.file_html_segtoc(@md)
@filename_html_index=@my_make.file_html_index(@md)
@data.each do |para|
para.strip!
para.gsub!(/|<~\d+;(?:[ohm]|[0-6]:)\d+;\w\d+><#@dp:#@dp>/,'')
unless para =~/\A\s*\Z/
@filename_html_segtoc.puts para,"\n"
@filename_html_index.puts para,"\n"
end
end
rescue; SiSU_Errors::Info_error.new($!,$@,@md.cmd,@md.fns).error
end
end
end
end
end
__END__