aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/v0/sst_to_s_xml_node.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sisu/v0/sst_to_s_xml_node.rb')
-rw-r--r--lib/sisu/v0/sst_to_s_xml_node.rb153
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 76e30b60..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!(/>/,'&gt;')
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?