diff options
Diffstat (limited to 'lib/sisu/v0/sst_to_s_xml_node.rb')
-rw-r--r-- | lib/sisu/v0/sst_to_s_xml_node.rb | 153 |
1 files changed, 88 insertions, 65 deletions
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!(/~\{(.+?)\}~/,'<endnote symbol="norm">\1</endnote> ') - para.gsub!(/~\[([*+])\s+(.+?)\]~/,'<endnote symbol="\1">\2</endnote> ') + para.gsub!(/#{Mx[:en_a_o]}(.+?)#{Mx[:en_a_c]}/,'<endnote symbol="norm">\1</endnote> ') + para.gsub!(/#{Mx[:en_b_o]}([*+])\s+(.+?)#{Mx[:en_b_c]}/,'<endnote symbol="\1">\2</endnote> ') end def xml_head(meta) txt=meta.text - txt.gsub!(/\/{(.+?)}\//,'<i>\1</i>') - txt.gsub!(/[*!]{(.+?)}[*!]/,'<b>\1</b>') - txt.gsub!(/_{(.+?)}_/,'<u>\1</u>') - txt.gsub!(/-{(.+?)}-/,'<del>\1</del>') - txt.gsub!(/<br(?: \/)?>/,'<br />') + txt.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'<i>\1</i>') + txt.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'<b>\1</b>') + txt.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>') + txt.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>') + txt.gsub!(/#{Mx[:br_line]}|#{Mx[:br_paragraph]}/,'<br />') txt.gsub!(/ & /,' and ') @@xml[:head] <<<<WOK #{@tab}<header class="#{meta.attrib}"> @@ -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}</object>" << "\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]}/,'<i>\1</i>') + # para.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'<b>\1</b>') + # para.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>') + # para.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>') + # para.gsub!(/#{Mx[:br_line]}|#{Mx[:br_paragraph]}/,'<br />') + # if @rcdc==false \ + # and (para =~/~metadata/ or para =~/^1~meta\s+Document Information/) + # if para !~/(^0~|^@\S+?:|^\s*$|<ENDNOTES>|<EOF>)/ + # @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 =~/<!Th?.+/ # tables come as single block #work area 2005w13 + # #elsif para =~/#{Mx[:gr_o]}Th?.+/ # tables come as single block #work area 2005w13 + # table=SiSU_Tables::Table_xml.new(para) + # para=table.table_split + # node_structure(o,para) + # else node_structure(o,para,nil,nil) + # end + # end + # end + # end + # end + #end obj.each do |o| para=o.txt unless o.txt =~/^%% / #comments are lost, consider if para - if @rcdc==false \ - and (para =~/~metadata/ or para =~/^1~meta\s+Document Information/) - if para !~/(^0~|^@\S+?:|^\s*$|<ENDNOTES>|<EOF>)/ - @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 =~/<!Th?.+/ # tables come as single block #work area 2005w13 - table=SiSU_Tables::Table_xml.new(para) - para=table.table_split - node_structure(o,para) - else node_structure(o,para,nil,nil) - end - end - 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]}/,'<i>\1</i>') + para.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'<b>\1</b>') + para.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'<u>\1</u>') + para.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>') + para.gsub!(/#{Mx[:br_line]}|#{Mx[:br_paragraph]}/,'<br />') 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 =~/<!Th?.+/ # tables come as single block #work area 2005w13 + #elsif para =~/#{Mx[:gr_o]}Th?.+/ # tables come as single block #work area 2005w13 table=SiSU_Tables::Table_xml.new(para) para=table.table_split table_structure(o,para) @@ -603,6 +625,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? |