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/sst_to_s_xml_sax.rb | 48 +++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 16 deletions(-) (limited to 'lib/sisu/v0/sst_to_s_xml_sax.rb') diff --git a/lib/sisu/v0/sst_to_s_xml_sax.rb b/lib/sisu/v0/sst_to_s_xml_sax.rb index e7765d33..4b3ca7c8 100644 --- a/lib/sisu/v0/sst_to_s_xml_sax.rb +++ b/lib/sisu/v0/sst_to_s_xml_sax.rb @@ -137,7 +137,7 @@ module SiSU_simple_xml_model_sax def initialize(data='',particulars='') @data,@env,@md=data,particulars.env,particulars.md @vz=SiSU_Env::Get_init.instance.skin - @regx=/^(?:(?:<:p[bn]>\s*)?(?::?[A-C]~|\d~)(?:(\S+))?\s+)?(.+)/ + @regx=/^(?:#{Mx[:mk_o]}:p[bn]#{Mx[:mk_c]}\s*)?(?:#{Mx[:lv_o]}[1-9]:(\S*)#{Mx[:lv_c]})?(.+)/ @tab="\t" if @md @trans=SiSU_XML_munge::Trans.new(@md) @@ -206,7 +206,7 @@ WOK @@xml[:body] << "#{@tab*1}" << "\n" if para[@regx] @@xml[:body] << if lv; %{#{@tab*1}\n#{@tab*2}#{wrapped}\n#{@tab*1}\n} << "\n" elsif wrapped =~/\A%%?\s+/; %{\n} # comments - else %{#{@tab*1}\n#{@tab*2}#{wrapped}\n#{@tab*1}\n} # main text, contents, body KEEP + else %{#{@tab*1}\n#{@tab*2}#{wrapped}\n#{@tab*1}\n} # main text, contents, body KEEP end #@@xml[:body] << "#{@tab*1}\n#{@tab*2}#{wrapped}\n#{@tab*1}\n" # main text, contents, body KEEP @@xml[:body] << "#{@endnotes}" if @endnotes # main text, endnotes KEEP @@ -252,9 +252,12 @@ WOK x.gsub!(/&/,'&') unless x =~/&\S+;/ end end + def xml_clean(para) + para.gsub!(/#{Mx[:gl_o]}[1-9]:\S*?#{Mx[:gl_c]}/,'') #Danger, watch + para + end def markup data=[] - #@data=@data.join.split("\n\n") dir=SiSU_Env::Info_env.new(@md.fns) xml_sc(@md) @endnotes,@level,@cont,@copen,@xml_contents_close=[],[],[],[],[] @@ -262,7 +265,7 @@ WOK (0..6).each { |x| @cont[x]=@level[x]=false } (4..6).each { |x| @xml_contents_close[x]='' } @data.each do |para| - data << SiSU_document_structure::Structure.new(@md,para).structure + data << SiSU_document_structure::Structure.new(@md,para).structure #takes on Mx marks end data.each do |para| if para !~/^\s*(?:%+ |<:code>)/ @@ -275,11 +278,14 @@ WOK end para=@trans.markup_light(para) @trans.char_enc.utf8(para) if @sys.locale =~/utf-?8/i #% utf8 - if para =~/\A(?:@|0~)(\S+?):?\s+(.+?)\Z/m # for headers + para.gsub!(/^0~(\S+)/,"#{Mx[:lv_o]}@\\1#{Mx[:lv_c]}") + para.gsub!(/^@(\S+?):/,"#{Mx[:lv_o]}@\\1#{Mx[:lv_c]}") + if para =~/\A#{Mx[:lv_o]}@(\S+?)#{Mx[:lv_c]}\s*(.+?)\Z/m # for headers d_meta=SiSU_text_utils::Header_scan.new(@md,para).meta if d_meta; xml_head(d_meta) end end + para='' if para=~/#{Mx[:lv_o]}@\S+?#{Mx[:lv_c]}/ if @rcdc==false \ and (para =~/~metadata/ or para =~/^1~meta\s+Document Information/) @rcdc=true @@ -287,24 +293,30 @@ WOK if para !~/(^0~|^@\S+?:|^\s*$||)/ @sto=SiSU_text_parts::Split_text_object.new(@md,para).lev_segname_para unless @rcdc - format_scroll=SiSU_XML_format::Format_scroll.new(@md,@sto.text) if @sto.format =~/i[12]|null/ + format_scroll=SiSU_XML_format::Format_scroll.new(@md,@sto.text) if @sto.format =~/i[1-9]|null/ case @sto.format - when /^(1)~(\S+)?/ + when /^(1):(\S*)/ + xml_clean(para) xml_structure(para,$1,$2) para=@sto.lev_para_ocn.heading_body1 - when /^(2)~(\S+)?/ + when /^(2):(\S*)/ + xml_clean(para) xml_structure(para,$1,$2) para=@sto.lev_para_ocn.heading_body2 - when /^(3)~(\S+)?/ + when /^(3):(\S*)/ + xml_clean(para) xml_structure(para,$1,$2) para=@sto.lev_para_ocn.heading_body3 - when /^(4)~(\S+)?/ # work on see Split_text_object + when /^(4):(\S*)/ # work on see Split_text_object + xml_clean(para) xml_structure(para,$1,$2) para=@sto.lev_para_ocn.heading_body4 - when /^(5)~(\S+)?/ + when /^(5):(\S*)/ + xml_clean(para) xml_structure(para,$1,$2) para=@sto.lev_para_ocn.heading_body5 - when /^(6)~(\S+)?/ + when /^(6):(\S*)/ + xml_clean(para) xml_structure(para,$1,$2) para=@sto.lev_para_ocn.heading_body6 #when /^(i1)$/i @@ -328,17 +340,18 @@ WOK # end else if para =~ /<:verse>/ - poem_structure(para) + para=poem_structure(para) elsif para =~ /<:group>/ - group_structure(para) + para=group_structure(para) elsif para =~ /<:code>/ para.gsub!(//,'>') - code_structure(para) + para=code_structure(para) + #elsif para =~/#{Mx[:gr_o]}Th?.+/ # tables come as single block #work area 2005w13 elsif para =~//,'') para.gsub!(//,'') ## Clean Prepared Text #bugwatch reinstate + para end + para end 6.downto(4) do |x| y=x - 1; v=x - 3 @@ -419,6 +434,7 @@ WOK def xml @sisu=[] @data.each do |para| + #para.gsub!(/#{Mx[:gl_o]}\S+?#{Mx[:gl_c]}/,'') #Danger, watch para.gsub!(/<:\S+?>/,'') para.gsub!(//,'') para="#{para}\n" unless para.empty? -- cgit v1.2.3