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_node.rb | 153 ++++++++++++++++++++++----------------- 1 file changed, 88 insertions(+), 65 deletions(-) (limited to 'lib/sisu/v0/sst_to_s_xml_node.rb') diff --git a/lib/sisu/v0/sst_to_s_xml_node.rb b/lib/sisu/v0/sst_to_s_xml_node.rb index 697a7a77..ed7f4b10 100644 --- a/lib/sisu/v0/sst_to_s_xml_node.rb +++ b/lib/sisu/v0/sst_to_s_xml_node.rb @@ -142,7 +142,7 @@ module SiSU_simple_xml_model_node 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) @@ -159,16 +159,16 @@ module SiSU_simple_xml_model_node end protected def embedded_endnotes(para='') - para.gsub!(/~\{(.+?)\}~/,'\1 ') - para.gsub!(/~\[([*+])\s+(.+?)\]~/,'\2 ') + para.gsub!(/#{Mx[:en_a_o]}(.+?)#{Mx[:en_a_c]}/,'\1 ') + para.gsub!(/#{Mx[:en_b_o]}([*+])\s+(.+?)#{Mx[:en_b_c]}/,'\2 ') end def xml_head(meta) txt=meta.text - txt.gsub!(/\/{(.+?)}\//,'\1') - txt.gsub!(/[*!]{(.+?)}[*!]/,'\1') - txt.gsub!(/_{(.+?)}_/,'\1') - txt.gsub!(/-{(.+?)}-/,'\1') - txt.gsub!(//,'
') + txt.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'\1') + txt.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'\1') + txt.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\1') + txt.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'\1') + txt.gsub!(/#{Mx[:br_line]}|#{Mx[:br_paragraph]}/,'
') txt.gsub!(/ & /,' and ') @@xml[:head] <<< @@ -273,13 +273,13 @@ WOK else puts 'error' end end - def node_structure(o='',para='',lv='',hname='') #extracted endnotes - if o.ocn - lv=lv.to_i - lv=nil if lv == 0 - build_relationships(o,lv) - end - end + #def node_structure(o='',para='',lv='',hname='') #extracted endnotes + # if o.ocn + # lv=lv.to_i + # lv=nil if lv == 0 + # build_relationships(o,lv) + # end + #end def xml_structure(o='',para='',lv='',hname='') #extracted endnotes if o.ocn puts para if lv and @md.cmd =~/M/ @@ -397,6 +397,10 @@ WOK @@xml[:body] << "#{@tab*0}" << "\n" #if para[@regx] @endnotes=[] end + def xml_clean(para) + para.gsub!(/#{Mx[:lv_o]}[1-9]:\S*?#{Mx[:lv_c]}/,'') + para + end def markup data=[] @data=@data.join.split("\n\n") @@ -404,7 +408,7 @@ WOK @data.each do |para| data << SiSU_document_structure::Structure.new(@md,para).structure end - data=Syntax::Markup.new(@md,data).songsheet + data=SiSU_Syntax::Markup.new(@md,data).songsheet data=SiSU_document_structure::Tables.new(@md,data).tables obj=SiSU_document_structure::OCN.new(@md,data).ocn obj.compact! @@ -429,58 +433,69 @@ WOK para=SiSU_sem::Tags.new(para,@md).rm.all 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 + 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 end end + #obj.each do |o| + # para=o.txt unless o.txt =~/^%% / #comments are lost, consider + # if para + # para.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'\1') + # para.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'\1') + # para.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\1') + # para.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'\1') + # para.gsub!(/#{Mx[:br_line]}|#{Mx[:br_paragraph]}/,'
') + # if @rcdc==false \ + # and (para =~/~metadata/ or para =~/^1~meta\s+Document Information/) + # if para !~/(^0~|^@\S+?:|^\s*$||)/ + # @rcdc=true + # end + # @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/ + # case @sto.format + # when /^(1):(\S*)/ + # node_structure(o,para,$1,$2) + # when /^(2):(\S*)/ + # node_structure(o,para,$1,$2) + # when /^(3):(\S*)/ + # node_structure(o,para,$1,$2) + # when /^(4):(\S*)/ # work on see Split_text_object + # node_structure(o,para,$1,$2) + # when /^(5):(\S*)/ + # node_structure(o,para,$1,$2) + # when /^(6):(\S*)/ + # node_structure(o,para,$1,$2) + # else + # if para =~ /<:verse>/ + # node_structure(o,para) + # elsif para =~ /<:group>/ + # node_structure(o,para) + # elsif para =~ /<:code>/ + # node_structure(o,para) + # elsif para =~/|)/ - @rcdc=true - end - @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/ - case @sto.format - when /^(1)~(\S+)?/ - node_structure(o,para,$1,$2) - when /^(2)~(\S+)?/ - node_structure(o,para,$1,$2) - when /^(3)~(\S+)?/ - node_structure(o,para,$1,$2) - when /^(4)~(\S+)?/ # work on see Split_text_object - node_structure(o,para,$1,$2) - when /^(5)~(\S+)?/ - node_structure(o,para,$1,$2) - when /^(6)~(\S+)?/ - node_structure(o,para,$1,$2) - else - if para =~ /<:verse>/ - node_structure(o,para) - elsif para =~ /<:group>/ - node_structure(o,para) - elsif para =~ /<:code>/ - node_structure(o,para) - elsif para =~/\1') + para.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'\1') + para.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\1') + para.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'\1') + para.gsub!(/#{Mx[:br_line]}|#{Mx[:br_paragraph]}/,'
') if @rcdc==false \ and (para =~/~metadata/ \ or para =~/^1~meta\s+Document Information/) @@ -491,22 +506,28 @@ WOK unless @rcdc format_scroll=SiSU_XML_format::Format_scroll.new(@md,@sto.text) if @sto.format =~/i[12]|null/ case @sto.format - when /^(1)~(\S+)?/ + when /^(1):(\S*)/ + xml_clean(para) xml_structure(o,para,$1,$2) para=@sto.lev_para_ocn.heading_body1 - when /^(2)~(\S+)?/ + when /^(2):(\S*)/ + xml_clean(para) xml_structure(o,para,$1,$2) para=@sto.lev_para_ocn.heading_body2 - when /^(3)~(\S+)?/ + when /^(3):(\S*)/ + xml_clean(para) xml_structure(o,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(o,para,$1,$2) para=@sto.lev_para_ocn.heading_body4 - when /^(5)~(\S+)?/ + when /^(5):(\S*)/ + xml_clean(para) xml_structure(o,para,$1,$2) para=@sto.lev_para_ocn.heading_body5 - when /^(6)~(\S+)?/ + when /^(6):(\S*)/ + xml_clean(para) xml_structure(o,para,$1,$2) para=@sto.lev_para_ocn.heading_body6 else @@ -519,6 +540,7 @@ WOK para.gsub!(/>/,'>') code_structure(o,para) elsif para =~//,'') para.gsub!(//,'') para="#{para}\n" unless para.empty? -- cgit v1.2.3