aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/v0/sst_to_s_xml_sax.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sisu/v0/sst_to_s_xml_sax.rb')
-rw-r--r--lib/sisu/v0/sst_to_s_xml_sax.rb48
1 files changed, 32 insertions, 16 deletions
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}<text class="h#{lv}">\n#{@tab*2}#{wrapped}\n#{@tab*1}</text>\n} << "\n"
elsif wrapped =~/\A%%?\s+/; %{<!--\n#{@tab*1}<text class="comment">\n#{@tab*2}#{wrapped}\n#{@tab*1}</text>\n-->\n} # comments
- else %{#{@tab*1}<text class="norm">\n#{@tab*2}#{wrapped}\n#{@tab*1}</text>\n} # main text, contents, body KEEP
+ else %{#{@tab*1}<text class="norm">\n#{@tab*2}#{wrapped}\n#{@tab*1}</text>\n} # main text, contents, body KEEP
end
#@@xml[:body] << "#{@tab*1}<text>\n#{@tab*2}#{wrapped}\n#{@tab*1}</text>\n" # main text, contents, body KEEP
@@xml[:body] << "#{@endnotes}" if @endnotes # main text, endnotes KEEP
@@ -252,9 +252,12 @@ WOK
x.gsub!(/&/,'&amp;') 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*$|<ENDNOTES>|<EOF>)/
@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!(/</,'&lt;')
para.gsub!(/>/,'&gt;')
- code_structure(para)
+ para=code_structure(para)
+ #elsif para =~/#{Mx[:gr_o]}Th?.+/ # tables come as single block #work area 2005w13
elsif para =~/<!Th?.+/ # tables come as single block #work area 2005w13
table=SiSU_Tables::Table_xml.new(para)
para=table.table_split
- table_structure(para)
+ para=table_structure(para)
else xml_structure(para,nil,nil)
end
end
@@ -367,7 +380,9 @@ WOK
end
para.gsub!(/<:\S+?>/,'')
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?