From d29a3e5469d8468084641c385ebf16948f7c2437 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Tue, 22 Jul 2008 20:00:59 -0400 Subject: sisu-0.68.0 proposed * middle layer document representation changed, (accounting for substantial patch) * texpdf multiple document sizes as specified in config * numerous small fixes [should on the whole be easier to maintain] --- lib/sisu/v0/html.rb | 145 ++++++++++++++++++---------------------------------- 1 file changed, 51 insertions(+), 94 deletions(-) (limited to 'lib/sisu/v0/html.rb') diff --git a/lib/sisu/v0/html.rb b/lib/sisu/v0/html.rb index 208b7409..5b9639dd 100644 --- a/lib/sisu/v0/html.rb +++ b/lib/sisu/v0/html.rb @@ -75,6 +75,7 @@ module SiSU_HTML require "#{SiSU_lib}/html_tune" include SiSU_Tune require "#{SiSU_lib}/shared_xml" + require "#{SiSU_lib}/shared_structure" class Source def initialize(opt) @opt=opt @@ -180,52 +181,7 @@ module SiSU_HTML @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 + class Split_text_object / - if pg =~/~[{\[][\d*+]+ / - endnote_array=[] - if pg=~/~\{[\d*+].+?\}\~/m - endnote_array << pg.scan(/~\{[\d*+]+(.+?)\}\~/m) + unless pg =~/^#{Mx[:gr_o]}code#{Mx[:gr_c]}/ + if pg =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[\d*+]+ <#@dp:#@dp>$/ + @pat_heading=/^(?:#{Mx[:lv_o]}[1-6]:\S*?#{Mx[:lv_c]}\s*)?(.*)#{Mx[:id_o]}~(\d+);(?:[hm]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ @pat_strip_heading_name=/(.+?)<\/a>/ @tell=SiSU_Screen::Ansi.new(@md.cmd) end @@ -306,22 +262,22 @@ module SiSU_HTML toc=nil @@firstseg=nil @data.each do |para| - if para =~/^([1-6]~|4~!)/ + if para =~/^(?:#{Mx[:lv_o]}[1-6]:|4~!)/ para_toc=para.dup - para_toc.gsub!(/  [\d*+]+<\/sup> <\/a>\s+~[{\[].+?[}\]]~/m,'') #remove endnotes from toc + para_toc.gsub!(/  [\d*+]+<\/sup> <\/a>\s*(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]}).+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/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*#{Mx[:lv_o]}1:\S*/; Toc.new(para_toc,@md).level_1 + when /^\s*#{Mx[:lv_o]}2:\S*/; Toc.new(para_toc,@md).level_2 + when /^\s*#{Mx[:lv_o]}3:\S*/; Toc.new(para_toc,@md).level_3 + when /^\s*#{Mx[:lv_o]}4:\S+/; Toc.new(para_toc,@md).level_4 + when /^\s*#{Mx[:lv_o]}5:\S*/; Toc.new(para_toc,@md).level_5 + when /^\s*#{Mx[:lv_o]}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] + and para=~/^#{Mx[:lv_o]}4:\S+?#{Mx[:lv_c]}/ + @@firstseg=/^#{Mx[:lv_o]}4:(\S+?)#{Mx[:lv_c]}/.match(para)[1] end if toc begin @@ -374,11 +330,11 @@ WOK end def level_1 para=@data - unless para =~/<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/ + unless para =~/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ para.gsub!(@pat_strip_heading_name,'\1') end para[@pat_heading] - linkname,link=$1,$2 if $& + linkname,link=$1.strip,$2 if $& if link \ and link !~/#/ #% keep eye on link p_num=SiSU_HTML_Format_type::Paragraph_number.new(@md,link) @@ -390,26 +346,26 @@ WOK end toc={} format_toc=SiSU_HTML_Format_type::Format_toc.new(@md,title) - toc[:seg]=if para =~/^\d~meta\s+Document Information/ + toc[:seg]=if para =~/^#{Mx[:lv_o]}\d:meta^#{Mx[:lv_c]}\s*Document Information/ format_toc.lev0 else format_toc.lev1 end - title=if para =~/(<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>)$/ + title=if para =~/(#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]})$/ m=/#{$1}/ para.gsub!(m,'') - if para=~/^\d~meta\s+Document Information/ + if para=~/^#{Mx[:lv_o]}\d:meta#{Mx[:lv_c]}\s*Document Information/ %{#{linkname}} else linkname end else @@toc[:scr] << '
' - link=if para =~/<~[1-9];([0-6]):\d+;\w\d+><#@dp:#@dp>$/; $1 + link=if para =~/#{Mx[:id_o]}~[1-9];([0-6]):\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/; $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/ + toc[:scr]=if para =~/^#{Mx[:lv_o]}\d:meta^#{Mx[:lv_c]}\s*Document Information/ format_toc.lev0 else format_toc.lev1 end @@ -417,11 +373,11 @@ WOK end def level_2 para=@data - unless para =~/<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/ + unless para =~/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ para.gsub!(@pat_strip_heading_name,'\1') end para[@pat_heading] - linkname,link=$1,$2 if $& + linkname,link=$1.strip,$2 if $& if link \ and link !~/#/ p_num=SiSU_HTML_Format_type::Paragraph_number.new(@md,link) @@ -429,7 +385,7 @@ WOK 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>)$/ + if para =~/(#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]})$/ m=/#{$1}/ para.gsub!(m,'') title=linkname @@ -444,7 +400,7 @@ WOK para.gsub!(@pat_strip_heading_name,'\1') para.gsub(/(.*?)<\/a>(.*)/,'\1') #2002w42 altered gsub! - problematic? - suspect para[@pat_heading] - linkname,link=$1,$2 if $& + linkname,link=$1.strip,$2 if $& if link \ and link !~/#/ p_num=SiSU_HTML_Format_type::Paragraph_number.new(@md,link) @@ -452,7 +408,7 @@ WOK 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>)$/ + if para =~/(#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]})$/ m=/#{$1}/ para.gsub!(m,'') title=linkname @@ -465,19 +421,19 @@ WOK def level_4 para=@data unless para =~/~metadata/ - unless para =~/<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/ + unless para =~/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ para.gsub!(@pat_strip_heading_name,'\1') para[@pat_heading] - linkname,link=$1,$2 if $& + linkname,link=$1.strip,$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+(.+?)$/, + para.gsub!(/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/,'') + if para =~/^#{Mx[:lv_o]}4:/ + seg_link=para.gsub(/^\s*#{Mx[:lv_o]}4:(\S+?)#{Mx[:lv_c]}\s*(.+?)$/, %{ \\2 }) - @@seg_url=para[/^4~(\S+).+?$/,1] + @@seg_url=para[/^#{Mx[:lv_o]}4:(\S+?)#{Mx[:lv_c]}.+?$/,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+)(.*)/, %{<#@dp:#@dp>$/ + if para =~/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ m=/#{$1}/ para.gsub!(m,'') title=linkname @@ -500,17 +456,17 @@ WOK end def level_5 para=@data - if para !~/<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/ + if para !~/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ para.gsub!(@pat_strip_heading_name,'\1') end para[@pat_heading] - linkname,link=$1,$2 if $& + linkname,link=$1.strip,$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>$/ + if para =~/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ m=/#{$1}/ para.gsub!(m,'') title=linkname @@ -528,17 +484,17 @@ WOK end def level_6 para=@data - if para !~/<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/ + if para !~/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ para.gsub!(@pat_strip_heading_name,'\1') end para[@pat_heading] - linkname,link=$1,$2 if $& + linkname,link=$1.strip,$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>$/ + if para =~/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ m=/#{$1}/ para.gsub!(m,'') title=linkname @@ -671,7 +627,7 @@ WOK def publish scroll=[] hr='

' - scroll << @scr_toc << hr << @scr_body << hr << @scr_endnotes << hr << @scr_metadata << @scr_owner_details << @scr_tails + scroll << @scr_toc << hr << @scr_body << @scr_endnotes << hr << @scr_metadata << @scr_owner_details << @scr_tails scroll.flatten!.compact! end end @@ -690,6 +646,7 @@ WOK @data.each do |para| para.strip! para.gsub!(/<:.+?>/,'') + para.gsub!(/#{Rx[:mx_fa_clean]}/,'') unless para =~/\A\s*\Z/ @filename_html_scroll.puts para,"\n" end @@ -703,7 +660,7 @@ WOK @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>/,'') + para.gsub!(/|#{Mx[:gr_o]}.*?#{Mx[:gr_c]}|#{Mx[:id_o]}~\d+;(?:[ohm]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}/,'') unless para =~/\A\s*\Z/ @filename_html_segtoc.puts para,"\n" @filename_html_index.puts para,"\n" -- cgit v1.2.3