aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/v0/dal_doc_str.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sisu/v0/dal_doc_str.rb')
-rw-r--r--lib/sisu/v0/dal_doc_str.rb83
1 files changed, 54 insertions, 29 deletions
diff --git a/lib/sisu/v0/dal_doc_str.rb b/lib/sisu/v0/dal_doc_str.rb
index ebaa8625..37e9be3c 100644
--- a/lib/sisu/v0/dal_doc_str.rb
+++ b/lib/sisu/v0/dal_doc_str.rb
@@ -71,14 +71,14 @@ module SiSU_document_structure
@para
end
def structure_markup
- @para=unless @para =~/[0-6]~/
+ @para=unless @para =~/#{Mx[:lv_o]}[1-9]:\S*?#{Mx[:lv_c]}/
@para=case @para
- when /^\s*#{@md.lv1}/; @para.sub!(/(?:<[:!]1!?>\s*)?(.+)/,'1~ \1') if @para !~/^1~/
- when /^\s*#{@md.lv2}/; @para.sub!(/(?:<[:!]2!?>\s*)?(.+)/,'2~ \1') if @para !~/^2~/
- when /^\s*#{@md.lv3}/; @para.sub!(/(?:<[:!]3!?>\s*)?(.+)/,'3~ \1') if @para !~/^3~/
- when /^\s*#{@md.lv4}/; @para.sub!(/(?:<[:!]4!?>\s*)?(.+)/,'4~ \1') if @para !~/^4~/
- when /^\s*#{@md.lv5}/; @para.sub!(/(?:<[:!]5!?>\s*)?(.+)/,'5~ \1') if @para !~/^5~/
- when /^\s*#{@md.lv6}/; @para.sub!(/(?:<[:!]6!?>\s*)?(.+)/,'6~ \1') if @para !~/^6~/
+ when /^\s*#{@md.lv1}/; @para.sub!(/(?:<[:!]1!?>\s*)?(.+)/,"#{Mx[:lv_o]}1:#{Mx[:lv_c]} \\1") if @para !~/^#{Mx[:lv_o]}1:\S*?#{Mx[:lv_c]}/
+ when /^\s*#{@md.lv2}/; @para.sub!(/(?:<[:!]2!?>\s*)?(.+)/,"#{Mx[:lv_o]}2:#{Mx[:lv_c]} \\1") if @para !~/^#{Mx[:lv_o]}2:\S*?#{Mx[:lv_c]}/
+ when /^\s*#{@md.lv3}/; @para.sub!(/(?:<[:!]3!?>\s*)?(.+)/,"#{Mx[:lv_o]}3:#{Mx[:lv_c]} \\1") if @para !~/^#{Mx[:lv_o]}3:\S*?#{Mx[:lv_c]}/
+ when /^\s*#{@md.lv4}/; @para.sub!(/(?:<[:!]4!?>\s*)?(.+)/,"#{Mx[:lv_o]}4:#{Mx[:lv_c]} \\1") if @para !~/^#{Mx[:lv_o]}4:\S*?#{Mx[:lv_c]}/
+ when /^\s*#{@md.lv5}/; @para.sub!(/(?:<[:!]5!?>\s*)?(.+)/,"#{Mx[:lv_o]}5:#{Mx[:lv_c]} \\1") if @para !~/^#{Mx[:lv_o]}5:\S*?#{Mx[:lv_c]}/
+ when /^\s*#{@md.lv6}/; @para.sub!(/(?:<[:!]6!?>\s*)?(.+)/,"#{Mx[:lv_o]}6:#{Mx[:lv_c]} \\1") if @para !~/^#{Mx[:lv_o]}6:\S*?#{Mx[:lv_c]}/
else @para
end
else @para
@@ -91,12 +91,18 @@ module SiSU_document_structure
#@para.gsub!(/^5~/,'8~')
#@para.gsub!(/^4~/,'7~')
@para.gsub!(/^[456]~/,'!_')
- @para.gsub!(/^3~/,'6~')
- @para.gsub!(/^2~/,'5~')
- @para.gsub!(/^1~/,'4~')
- @para.gsub!(/^:?C~/,'3~')
- @para.gsub!(/^:?B~/,'2~')
- @para.gsub!(/^:?A~/,'1~')
+ @para.gsub!(/^3~(\S+)/,"#{Mx[:lv_o]}6:\\1#{Mx[:lv_c]}")
+ @para.gsub!(/^3~\s+/,"#{Mx[:lv_o]}6:#{Mx[:lv_c]}")
+ @para.gsub!(/^2~(\S+)/,"#{Mx[:lv_o]}5:\\1#{Mx[:lv_c]}")
+ @para.gsub!(/^2~\s+/,"#{Mx[:lv_o]}5:#{Mx[:lv_c]}")
+ @para.gsub!(/^1~(\S+)/,"#{Mx[:lv_o]}4:\\1#{Mx[:lv_c]}")
+ @para.gsub!(/^1~\s+/,"#{Mx[:lv_o]}4:#{Mx[:lv_c]}")
+ @para.gsub!(/^:?C~(\S+)/,"#{Mx[:lv_o]}3:\\1#{Mx[:lv_c]}")
+ @para.gsub!(/^:?C~\s+/,"#{Mx[:lv_o]}3:#{Mx[:lv_c]}")
+ @para.gsub!(/^:?B~(\S+)/,"#{Mx[:lv_o]}2:\\1#{Mx[:lv_c]}")
+ @para.gsub!(/^:?B~\s+/,"#{Mx[:lv_o]}2:#{Mx[:lv_c]}")
+ @para.gsub!(/^:?A~(\S+)/,"#{Mx[:lv_o]}1:\\1#{Mx[:lv_c]}")
+ @para.gsub!(/^:?A~\s+/,"#{Mx[:lv_o]}1:#{Mx[:lv_c]}")
@para=if @para =~/^@(?:level|markup):\s/
@para.gsub!(/3/,'6')
@para.gsub!(/2/,'5')
@@ -110,6 +116,25 @@ module SiSU_document_structure
else @para
end
end
+ def structure_marks
+ para=if @md.markup_version.to_f < 0.38
+ @para.gsub!(/^1~(\S+)/,"#{Mx[:lv_o]}1:\\1#{Mx[:lv_c]}")
+ @para.gsub!(/^1~\s+/,"#{Mx[:lv_o]}1:#{Mx[:lv_c]}")
+ @para.gsub!(/^2~(\S+)/,"#{Mx[:lv_o]}2:\\1#{Mx[:lv_c]}")
+ @para.gsub!(/^2~\s+/,"#{Mx[:lv_o]}2:#{Mx[:lv_c]}")
+ @para.gsub!(/^3~(\S+)/,"#{Mx[:lv_o]}3:\\1#{Mx[:lv_c]}")
+ @para.gsub!(/^3~\s+/,"#{Mx[:lv_o]}3:#{Mx[:lv_c]}")
+ @para.gsub!(/^4~(\S+)/,"#{Mx[:lv_o]}4:\\1#{Mx[:lv_c]}")
+ @para.gsub!(/^4~\s+/,"#{Mx[:lv_o]}4:#{Mx[:lv_c]}")
+ @para.gsub!(/^5~(\S+)/,"#{Mx[:lv_o]}5:\\1#{Mx[:lv_c]}")
+ @para.gsub!(/^5~\s+/,"#{Mx[:lv_o]}5:#{Mx[:lv_c]}")
+ @para.gsub!(/^6~(\S+)/,"#{Mx[:lv_o]}6:\\1#{Mx[:lv_c]}")
+ @para.gsub!(/^6~\s+/,"#{Mx[:lv_o]}6:#{Mx[:lv_c]}")
+ @para.gsub!(/^[789]~/,'!_')
+ @para
+ else @para
+ end
+ end
end
class Struct
def initialize(o)
@@ -147,21 +172,21 @@ module SiSU_document_structure
#headings=if @md.ocn.inspect =~/skip=headings/; '^(?:[A-C]|[1-9])~\S* |'
#else ''
#end
- regex_exclude_ocn_and_node = /#{headings}^%{1,4}\s|^@\S+?:\s|^0~|^4~endnotes|^<\/center>|<:ee>|<:e[:_]>|^\^~ |<:e[:_]\d+?>|^<:p[bn]>|^<:\#|<:- |<[:!]!4|<table|<\/table>|<td|<\/td>|<th|<\/th>|<tr>|<\/tr>|<hr width|<:4-endnotes>|\[endnotes\]|<:zz>|<:isbn-|<:journal-|<:conference-|<ENDNOTES?>/i #ocn here #&nbsp; added with Tune.code #¡
+ regex_exclude_ocn_and_node = /#{headings}^%{1,4}\s|#{Rx[:meta]}|^@\S+?:\s|^0~|^4~endnotes|^#{Mx[:lv_o]}4:endnotes#{Mx[:lv_c]}|^<\/center>|<:ee>|<:e[:_]>|^\^~ |<:e[:_]\d+?>|^#{Mx[:fa_o]}p[bn]#{Mx[:fa_c]}|^<:\#|<:- |<[:!]!4|<table|<\/table>|<td|<\/td>|<th|<\/th>|<tr>|<\/tr>|<hr width|<:4-endnotes>|\[endnotes\]|<:zz>|<:isbn-|<:journal-|<:conference-|#{Mx[:br_endnotes]}/i #ocn here #&nbsp; added with Tune.code #¡
regex_exclude_ocn = /^(?:alt|code|group|poem|table)\{|^\}(?:alt|code|group|poem|table)|^\}table$/ #ocn here #&nbsp; added with Tune.code #¡
data.each do |para|
o={}
if para =~/\w|\S|<|\(/
if para !~ regex_exclude_ocn_and_node
if node_count_flag \
- or para=~/^1~/
+ or para=~/^#{Mx[:lv_o]}1:/
node_count_flag=true
end
node+=1 if node_count_flag
if para !~ regex_exclude_ocn # regex_exclude_large previously excluded
unless para=~/<:#>|~#|-#/ # |^\s*\*\s*\*\s*\*\s*$ <-consider leaving un-numbered
ocn+=1
- if para=~/^[1-8]~(?:\s+|\S)/ \
+ if para=~/^#{Mx[:lv_o]}[1-9]:\S*?#{Mx[:lv_c]}/ \
or para =~@md.lv1 \
or para =~@md.lv2 \
or para =~@md.lv3 \
@@ -169,33 +194,33 @@ module SiSU_document_structure
or para =~@md.lv5 \
or para =~@md.lv6
ocnh+=1
- if para=~/^1~(?:\s+|\S)/ \
+ if para=~/^#{Mx[:lv_o]}1:(\S*?)#{Mx[:lv_c]}/ \
or para =~@md.lv1
ocnh1+=1 #heading
ocn_dv,ocn_sp="1:#{ocnh1}","h#{ocnh}"
- elsif para=~/^2~(?:\s+|\S)/ \
+ elsif para=~/^#{Mx[:lv_o]}2:(\S*?)#{Mx[:lv_c]}/ \
or para =~@md.lv2; ocnh2+=1
ocn_dv,ocn_sp="2:#{ocnh2}","h#{ocnh}"
- elsif para=~/^3~(?:\s+|\S)/ \
+ elsif para=~/^#{Mx[:lv_o]}3:(\S*?)#{Mx[:lv_c]}/ \
or para =~@md.lv3; ocnh3+=1
ocn_dv,ocn_sp="3:#{ocnh3}","h#{ocnh}"
- elsif para=~/^4~(?:\s+|\S)/ \
+ elsif para=~/^#{Mx[:lv_o]}4:(\S*?)#{Mx[:lv_c]}/ \
or para =~@md.lv4; ocnh4+=1
ocn_dv,ocn_sp="4:#{ocnh4}","h#{ocnh}"
- elsif para=~/^5~(?:\s+|\S)/ \
+ elsif para=~/^#{Mx[:lv_o]}5:(\S*?)#{Mx[:lv_c]}/ \
or para =~@md.lv5; ocnh5+=1
ocn_dv,ocn_sp="5:#{ocnh5}","h#{ocnh}"
- elsif para=~/^6~(?:\s+|\S)/ \
+ elsif para=~/^#{Mx[:lv_o]}6:(\S*?)#{Mx[:lv_c]}/ \
or para =~@md.lv6; ocnh6+=1
ocn_dv,ocn_sp="6:#{ocnh6}","h#{ocnh}"
end
else
ocno+=1
- if para=~/<!TZ!>/; ocnt+=1 #table
+ if para=~/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/; ocnt+=1 #table
ocn_dv,ocn_sp="o#{ocno}","t#{ocnt}"
- elsif para=~/^<:code>/; ocnc+=1 #code block
+ elsif para=~/^#{Mx[:gr_o]}code#{Mx[:gr_c]}/; ocnc+=1 #code block
ocn_dv,ocn_sp="o#{ocno}","c#{ocnc}"
- elsif para=~/^<:(?:group|alt|verse)>/; ocng+=1 #group, poem
+ elsif para=~/^#{Mx[:gr_o]}(?:group|alt|verse)#{Mx[:gr_c]}/; ocng+=1 #group, poem
ocn_dv,ocn_sp="o#{ocno}","g#{ocng}"
elsif para=~/\{\S+?\.(?:png|jpg|gif)\s+/m; ocni+=1 #image
ocn_dv,ocn_sp="o#{ocno}","i#{ocni}"
@@ -212,7 +237,7 @@ module SiSU_document_structure
# ocn_dv,ocn_sp="u#{ocnu}","u#{ocnu}"
#end
#para.gsub!(/<~#>|<-#>/,'') if para #get rid of need
- para.gsub!(/<~#>/,'') if para
+ para.gsub!(/#{Mx[:fa_o]}~##{Mx[:fa_c]}/,'') if para
ocn_dv,ocn_sp="u#{ocnu}","u#{ocnu}"
o[:txt],o[:node],o[:ocn],o[:lv],o[:type]=para,node,0,ocn_dv,ocn_sp
end
@@ -225,9 +250,9 @@ module SiSU_document_structure
end
end
end
- para.gsub!(/\n\n/,"\n") if para =~/<:(?:code|verse|alt|group)>/ #newlines taken out
- para.gsub!(/(<:(?:code-end)>)/,"\n\\1") if para =~/<:(?:code-end)>/ #newlines added check
- if para =~/<!Th?¡/u; para.gsub!(/(<!Th?¡.+?!)>/u,"\\1~#{o[:ocn]};#{o[:lv]};#{o[:type]}>")
+ para.gsub!(/\n\n/,"\n") if para =~/#{Mx[:gr_o]}(?:code|verse|alt|group)#{Mx[:gr_c]}/ #newlines taken out
+ para.gsub!(/(#{Mx[:gr_o]}(?:code-end)#{Mx[:gr_c]})/,"\n\\1") if para =~/#{Mx[:gr_o]}(?:code-end)#{Mx[:gr_c]}/ #newlines added check
+ if para =~/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}/u; para.gsub!(/(#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+?)#{Mx[:gr_c]}/u,"\\1#{Mx[:tc_p]}~#{o[:ocn]};#{o[:lv]};#{o[:type]}#{Mx[:gr_c]}")
end
@o_array << Struct.new(o).structure if o
end