=begin * Name: SiSU information Structuring Universe - Structured information, Serialized Units * Author: Ralph Amissah * http://www.jus.uio.no/sisu * http://www.jus.uio.no/sisu/SiSU/download.html * Description: html scroll generation, processing * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Ralph Amissah * License: GPL 2 or later Summary of GPL 2 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 2 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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA If you have Internet connection, the latest version of the GPL should be available at these locations: http://www.fsf.org/licenses/gpl.html http://www.gnu.org/copyleft/gpl.html http://www.jus.uio.no/sisu/gpl2.fsf SiSU was first released to the public on January 4th 2005 SiSU uses: * Standard SiSU markup syntax, * Standard SiSU meta-markup syntax, and the * Standard SiSU object citation numbering and system © Ralph Amissah 1997, current 2007. All Rights Reserved. * Ralph Amissah: ralph@amissah.com ralph.amissah@gmail.com =end module SiSU_HTML_scroll require "#{SiSU_lib}/shared_html" require "#{SiSU_lib}/html" require "#{SiSU_lib}/html_promo" class Scroll @@dp=nil def initialize(data='',md='') @data,@md=data,md @vz=SiSU_Env::Get_init.instance.skin @dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern end def songsheet begin scr=Scroll.new(@data,@md).markup scr[:tails]=Scroll.new('',@md).tails scr rescue; SiSU_Errors::Info_error.new($!,$@,@md.cmd,@md.fns).error ensure end end protected def markup data=@data @rcdc=false @scr={ :body=>[],:metadata=>[],:owner_details=>[] } data.each do |para| if para =~/Document Information/ para.gsub!(/(Document Information)/,'\1') end if para =~/MetaData/ para.gsub!(/(MetaData)/,'\1') end @rcdc=true if @rcdc==false and (para =~/^\d~metadata/ or para =~/^1~\s+Document Information/) if para !~/(^0~||)/ para.gsub!(/~[{\[].+?[}\]]~\s+/m,' ') if para =~/.+?<~\d+;(?:[oh]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/ paranum=para[/.+?<~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/,1] @p_num=SiSU_HTML_Format_type::Paragraph_number.new(@md,paranum) end @sto=SiSU_HTML::Source::Split_text_object.new(@md,para).lev_segname_para_ocn m=/<~\d+;(?:[oh]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/ if para =~m format_txt_obj=SiSU_HTML_Format_type::Format_text_object.new(@md,@sto.text) if @sto.format =~/i[1-9]|_[1-9]?\*|<:i[1-9]>\s*_\*|null/ case @sto.format when /^1~\S*/; para=@sto.scroll_lev_para_ocn.heading_body1 when /^2~\S*/; para=@sto.scroll_lev_para_ocn.heading_body2 when /^3~\S*/; para=@sto.scroll_lev_para_ocn.heading_body3 when /^4~\S+/; para=@sto.scroll_lev_para_ocn.heading_body4 # work on see Split_text_object4 when /^5~\S*/; para=@sto.scroll_lev_para_ocn.heading_body5 when /^6~\S*/; para=@sto.scroll_lev_para_ocn.heading_body6 when /^_\*$/; para=@sto.scroll_lev_para_ocn.bullet when /^_([1-9])\*$/ #indent with bullet format_txt_obj.gsub_body para=@sto.scroll_lev_para_ocn.format('li',"i#{$1}") when /^i([1-9])$/ #indent format_txt_obj.gsub_body para=@sto.scroll_lev_para_ocn.format('p',"i#{$1}") when /^center$/; para=@sto.scroll_lev_para_ocn.center when /^(?:b|bold)$/; para=@sto.scroll_lev_para_ocn.bold when /^(?:verse|group|alt)$/; para=@sto.scroll_lev_para_ocn.para when /^code$/; para=@sto.scroll_lev_para_ocn.code when /null/ # see whether u can improve if para !~/#{@vz.margin_txt_0}|#{@vz.margin_txt_1}|#{@vz.margin_txt_2}/ format_txt_obj.gsub_body para=@sto.scroll_lev_para_ocn.para if para =~/<#@dp:#@dp>$/ format_txt_obj=SiSU_HTML_Format_type::Format_text_object.new(@md,para) para=format_txt_obj.bold_header elsif para =~/Endnotes?/ and para !~/<~\d+;(?:[oh]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/ format_txt_obj=SiSU_HTML_Format_type::Format_text_object.new(@md,'
Note') para=format_txt_obj.bold_para elsif para =~/Owner Details/ and para !~/<~\d+;(?:[oh]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/ format_txt_obj=SiSU_HTML_Format_type::Format_text_object.new(@md,'
Owner Details') @scr[:owner_details]=format_txt_obj.bold_para para='' elsif para =~/(.*)<~0;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>(.*)/ #watch one,two=$1,$2 format_seg=SiSU_HTML_Format_type::Format_seg.new(@md,one,two) para=format_seg.no_paranum end #para=para.gsub(/ [2-6]~\S+ /,'') #and @md.cmd =~/[VM]/ #arbitrary, watch problematic as too general para='' if (para =~// and para =~/^(?:\^~\d+\s|)/) # hmmm re-adjusted 200507, for alt endnote which should again be matched ^~ ... not in response to problem though if para =~/<:center>/ #rules changed now a

(.*)/.match(para).captures format_scroll=SiSU_HTML_Format_type::Format_scroll.new(@md,one,two) end para.gsub!(//,' ') para.gsub!(/^<:\S?>/,'') para.gsub!(/<:\S?>/,' ') para.strip! unless @rcdc; @scr[:body] << para unless para =~/\A\s*\Z/ else @scr[:metadata] << para end #unless meta; @scr[:body] << para unless para =~/\A\s*\Z/ #else @scr[:metadata] << meta #end end end @scr end def tails scr_tail=[] format_head_scroll=SiSU_HTML_Format_type::Head_toc.new(@md) ads=SiSU_HTML_promo::Ad.new(@md) scr_tail << format_head_scroll.scroll_tail << ads.div.close << ads.display << format_head_scroll.html_close scr_tail end end end __END__