aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/v3/dal_doc_str.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sisu/v3/dal_doc_str.rb')
-rw-r--r--lib/sisu/v3/dal_doc_str.rb320
1 files changed, 164 insertions, 156 deletions
diff --git a/lib/sisu/v3/dal_doc_str.rb b/lib/sisu/v3/dal_doc_str.rb
index 7bc36e11..b4a98edd 100644
--- a/lib/sisu/v3/dal_doc_str.rb
+++ b/lib/sisu/v3/dal_doc_str.rb
@@ -56,7 +56,7 @@
** Description: document abstraction
=end
-module SiSU_document_structure_extract
+module SiSU_DAL_DocumentStructureExtract
class Instantiate < SiSU_Param::Parameters::Instructions
@@flag={} #Beware!!
def initialize
@@ -69,9 +69,9 @@ module SiSU_document_structure_extract
@@flag={} #Beware!!
def initialize(md,data)
@md,@data=md,data
- Instantiate.new
- @pb=SiSU_document_structure::Object_layout.new.break(Hx[:br_page])
- @pbn=SiSU_document_structure::Object_layout.new.break(Hx[:br_page_new])
+ SiSU_DAL_DocumentStructureExtract::Instantiate.new
+ @pb=SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page])
+ @pbn=SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_new])
end
def ln_get(lv)
ln=case lv
@@ -131,11 +131,11 @@ module SiSU_document_structure_extract
if str.nil?
else
if str =~/(?:^|[ ])\*~([a-z0-9._-]+)(?=[ #{Mx[:br_nl]}]|$)/
- str.gsub!(/(^|[ ])\*~([a-z0-9._-]+)(?=[ #{Mx[:br_nl]}]|$)/i,
- "\\1#{Mx[:tag_o]}\\2#{Mx[:tag_c]}")
- str.gsub!(/ [ ]+/i,' ')
+ str=str.gsub(/(^|[ ])\*~([a-z0-9._-]+)(?=[ #{Mx[:br_nl]}]|$)/i,
+ "\\1#{Mx[:tag_o]}\\2#{Mx[:tag_c]}").
+ gsub(/ [ ]+/i,' ')
tags=str.scan(/#{Mx[:tag_o]}(\S+?)#{Mx[:tag_c]}/).flatten
- str.gsub!(/[ ]?#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}[ ]?/,' ') #may be issues with spaces would leave one, but "code" blocks?
+ str=str.gsub(/[ ]?#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}[ ]?/,' ') #may be issues with spaces would leave one, but "code" blocks?
end
tags=nametag ? (tags << nametag) : tags
end
@@ -148,7 +148,7 @@ module SiSU_document_structure_extract
@@counter,@verse_count=0,0
@metadata={}
@data.each do |t_o|
- t_o.gsub!(/(?:\n\s*\n)+/m,"\n") unless @@flag['code']
+ t_o=t_o.gsub(/(?:\n\s*\n)+/m,"\n") unless @@flag['code']
if t_o !~/^(?:code|poem|alt|group|block)\{|^\}(?:code|poem|alt|group|block)|^(?:table\{|\{table)[ ~]/ \
and not @@flag['code'] \
and not @@flag['poem'] \
@@ -158,7 +158,7 @@ module SiSU_document_structure_extract
and not @@flag['table']
unless t_o =~/^(?:@\S+?:|%+)\s/ # extract book index for paragraph if any
idx=if t_o=~/^=\{(.+)\}\s*$\Z/m; m=$1
- t_o.gsub!(/\n=\{.+\}\s*$\Z/m,'')
+ t_o=t_o.gsub(/\n=\{.+\}\s*$\Z/m,'')
m
else nil
end
@@ -173,7 +173,7 @@ module SiSU_document_structure_extract
when /^%+\s/ #comment
t_o=if t_o=~/^%+\s+(.+)/
h={obj: $1}
- SiSU_document_structure::Object_comment.new.comment(h)
+ SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h)
else nil
end
when /^:?([A-C1-6])\~/ #heading / lv
@@ -184,19 +184,19 @@ module SiSU_document_structure_extract
note=endnote_test?(obj)
obj,tags=extract_tags(obj)
h={ lv: lv, ln: ln, obj: obj, idx: idx, tags: tags }
- SiSU_document_structure::Object_heading.new.heading(h)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h)
elsif t_o=~/^:?[A-C1-6]\~(\S+?)-\s+(.+)/m
name,obj=$1,$2
note=endnote_test?(obj)
obj,tags=extract_tags(obj)
h={ lv: lv, name: name, obj: obj, idx: idx, autonum_: false, tags: tags}
- SiSU_document_structure::Object_heading.new.heading(h)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h)
elsif t_o=~/^:?[A-C1-6]\~(\S+)\s+(.+)/m
name,obj=$1,$2
note=endnote_test?(obj)
obj,tags=extract_tags(obj,name)
h={ lv: lv, name: name, obj: obj, idx: idx, tags: tags }
- SiSU_document_structure::Object_heading.new.heading(h)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h)
else nil
end
when /^_(?:[1-9]!?|[1-9]?\*)\s+/ #indented and/or bullet paragraph
@@ -213,7 +213,7 @@ module SiSU_document_structure_extract
obj,tags=extract_tags(obj)
unless obj=~/\A\s*\Z/m
h={ bullet_: bullet, hang: hang, indent: indent, obj: obj, idx: idx, note_: note, image_: image, tags: tags }
- SiSU_document_structure::Object_para.new.paragraph(h)
+ SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h)
end
else nil
end
@@ -230,23 +230,23 @@ module SiSU_document_structure_extract
obj,tags=extract_tags(obj)
unless obj=~/\A\s*\Z/m
h={ hang: hang, indent: indent, obj: obj, idx: idx, note_: note, image_: image, tags: tags }
- SiSU_document_structure::Object_para.new.paragraph(h)
+ SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h)
end
else nil
end
when /^[<\[](?:br)?:(?:pa?r|o(?:bj|---)?)[>\]]\s*$/ #[br:par] #[br:obj]
- SiSU_document_structure::Object_layout.new.break(Hx[:br_obj])
+ SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_obj])
when /^(?:[<\[](?:br)?:pg[>\]]|<?:pb>?)\s*$/ #[br:pg]
- SiSU_document_structure::Object_layout.new.break(Hx[:br_page])
+ SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page])
when /^[<\[](?:br)?:pg?n[>\]]\s*$/ #[br:pgn]
- SiSU_document_structure::Object_layout.new.break(Hx[:br_page_new])
+ SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_new])
else #paragraph
image=image_test(t_o)
note=endnote_test?(t_o)
obj,tags=extract_tags(t_o)
unless obj=~/\A\s*\Z/m
h={ bullet_: false, indent: 0, hang: 0, obj: obj, idx: idx, note_: note, image_: image, tags: tags }
- SiSU_document_structure::Object_para.new.paragraph(h)
+ SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h)
end
end
elsif not @@flag['code']
@@ -255,30 +255,30 @@ module SiSU_document_structure_extract
@@counter=1
@codeblock_numbered=(t_o =~/^code\{#/) ? true : false
h={ obj: 'code block start' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
elsif t_o =~/^poem\{/
@@flag['poem']=true
h={ obj: 'poem start' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
tuned_file << t_o
elsif t_o =~/^group\{/
@@flag['group']=true
h={ obj: 'group text start' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
tuned_file << t_o
elsif t_o =~/^block\{/
@@flag['block']=true
h={ obj: 'block text start' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
tuned_file << t_o
elsif t_o =~/^alt\{/
@@flag['alt']=true
h={ obj: 'alt text start' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
tuned_file << t_o
elsif t_o =~/^(?:table\{|\{table)[ ~]/
h={ obj: 'table start' } #introduce a counter
- ins=SiSU_document_structure::Object_comment.new.comment(h) #ins=SiSU_document_structure::Object_layout.new.insert(h)
+ ins=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #ins=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
tuned_file << ins
if t_o=~/^table\{(?:~h)?\s+/
@@flag['table']=true
@@ -304,7 +304,7 @@ module SiSU_document_structure_extract
cols=nil
rws.each do |r|
cols=(cols ? cols : (r.scan('|').length) +1)
- r.gsub!(/\s*\|\s*/m,"#{Mx[:tc_p]}") #r.gsub!(/\|/m,"#{Mx[:tc_p]}")
+ r=r.gsub(/\s*\|\s*/m,"#{Mx[:tc_p]}") #r.gsub!(/\|/m,"#{Mx[:tc_p]}")
rows += r + Mx[:tc_c]
end
col=[]
@@ -318,10 +318,10 @@ module SiSU_document_structure_extract
cols.times { col << width }
end
h={ head_: hd, cols: cols, widths: col, obj: rows, idx: idx, tags: tags }
- t_o=SiSU_document_structure::Object_table.new.table(h) unless h.nil?
+ t_o=SiSU_DAL_DocumentStructure::ObjectTable.new.table(h) unless h.nil?
tuned_file << t_o
h={ obj: 'table end' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h)
t_o
elsif t_o=~/^\{table(?:~h)?\s+/
m1,m2,hd=nil,nil,nil
@@ -337,14 +337,14 @@ module SiSU_document_structure_extract
rws=tbl.split(/\n/)
rows=''
rws.each do |r|
- r.gsub!(/\s*\|\s*/m,"#{Mx[:tc_p]}") #r.gsub!(/\|/m,"#{Mx[:tc_p]}")
+ r=r.gsub(/\s*\|\s*/m,"#{Mx[:tc_p]}") #r.gsub!(/\|/m,"#{Mx[:tc_p]}")
rows += r + Mx[:tc_c]
end
h={ head_: hd, cols: col.length, widths: col, obj: rows, idx: idx, tags: tags }
- t_o=SiSU_document_structure::Object_table.new.table(h) unless h.nil?
+ t_o=SiSU_DAL_DocumentStructure::ObjectTable.new.table(h) unless h.nil?
tuned_file << t_o
h={ obj: 'table end' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h)
t_o
end
end
@@ -356,18 +356,18 @@ module SiSU_document_structure_extract
@@flag['table']=false
headings,columns,widths,idx=@h[:head_],@h[:cols],@h[:widths],@h[:idx]
@h={ head_: headings, cols: columns, widths: widths, idx: idx, obj: @rows }
- t_o=SiSU_document_structure::Object_table.new.table(@h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectTable.new.table(@h)
tuned_file << t_o
@h,@rows=nil,''
t_o
h={ obj: 'table end' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
t_o
else
if t_o !~/^table\{/ \
and not t_o.nil?
- t_o.gsub!(/^\n+/m,'') #check added for ruby 1.9.2 not needed in 1.8 series (tested in v2)
- t_o.gsub!(/\n+/m,"#{Mx[:tc_p]}")
+ t_o=t_o.gsub(/^\n+/m,''). #check added for ruby 1.9.2 not needed in 1.8 series (tested in v2)
+ gsub(/\n+/m,"#{Mx[:tc_p]}")
@rows += t_o + Mx[:tc_c]
end
t_o=nil
@@ -379,11 +379,11 @@ module SiSU_document_structure_extract
obj=@tuned_code.join("\n")
tags=[]
h={ obj: obj, tags: tags, number_: @codeblock_numbered }
- t_o=SiSU_document_structure::Object_block_txt.new.code(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectBlockTxt.new.code(h)
@tuned_code=[]
tuned_file << t_o
h={ obj: 'code block end' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
end
if @@flag['code'] \
and t_o.class==String \
@@ -392,7 +392,7 @@ module SiSU_document_structure_extract
@line_mode=sub_array.scan(/.+/)
@line_mode=[]
sub_array.scan(/.+/) {|w| @line_mode << w if w =~/[\S]+/}
- t_o=SiSU_document_structure_extract::Build.new(@md,@line_mode).build_lines('code').join
+ t_o=SiSU_DAL_DocumentStructureExtract::Build.new(@md,@line_mode).build_lines('code').join
@tuned_code << t_o
t_o=nil
end
@@ -404,37 +404,37 @@ module SiSU_document_structure_extract
and t_o =~/^\}poem/
@@flag['poem']=false
h={ obj: 'poem end' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
elsif ( @@flag['group'] \
and t_o =~/^\}group/ )
@@flag['group']=false
obj,tags=extract_tags(@tuned_block.join("\n"))
h={ obj: obj, tags: tags }
@tuned_block=[]
- t_o=SiSU_document_structure::Object_block_txt.new.group(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectBlockTxt.new.group(h)
tuned_file << t_o
h={ obj: 'group text end' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
elsif ( @@flag['block'] \
and t_o =~/^\}block/ )
@@flag['block']=false
obj,tags=extract_tags(@tuned_block.join("\n"))
h={ obj: obj, tags: tags }
@tuned_block=[]
- t_o=SiSU_document_structure::Object_block_txt.new.block(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectBlockTxt.new.block(h)
tuned_file << t_o
h={ obj: 'block text end' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
elsif ( @@flag['alt'] \
and t_o =~/^\}alt/ )
@@flag['alt']=false
obj,tags=extract_tags(@tuned_block.join("\n"))
h={ obj: obj, tags: tags }
- t_o=SiSU_document_structure::Object_block_txt.new.alt(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectBlockTxt.new.alt(h)
@tuned_block=[]
tuned_file << t_o
h={ obj: 'alt text end' } #introduce a counter
- t_o=SiSU_document_structure::Object_comment.new.comment(h) #t_o=SiSU_document_structure::Object_layout.new.insert(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectComment.new.comment(h) #t_o=SiSU_DAL_DocumentStructure::ObjectLayout.new.insert(h)
end
if @@flag['poem'] \
or @@flag['group'] \
@@ -444,13 +444,13 @@ module SiSU_document_structure_extract
sub_array=t_o.dup
@line_mode=sub_array.scan(/.+/)
type=if @@flag['poem']; 'poem'
- t_o=SiSU_document_structure_extract::Build.new(@md,@line_mode).build_lines(type).join
+ t_o=SiSU_DAL_DocumentStructureExtract::Build.new(@md,@line_mode).build_lines(type).join
poem=t_o.split(/\n\n/)
poem.each do |v|
- v.gsub!(/\n/m,"#{Mx[:br_nl]}\n")
+ v=v.gsub(/\n/m,"#{Mx[:br_nl]}\n")
obj,tags=extract_tags(v)
h={ obj: obj, tags: tags }
- t_o=SiSU_document_structure::Object_block_txt.new.verse(h)
+ t_o=SiSU_DAL_DocumentStructure::ObjectBlockTxt.new.verse(h)
tuned_file << t_o
end
else 'group'
@@ -463,17 +463,17 @@ module SiSU_document_structure_extract
or @@flag['group'] \
or @@flag['alt']
if t_o.class==String
- t_o.gsub!(/\n/m,"#{Mx[:br_nl]}")
- t_o.gsub!(/[ ][ ]/m,"#{Mx[:nbsp]*2}")
- t_o.gsub!(/#{Mx[:nbsp]}\s/,"#{Mx[:nbsp]*2}")
+ t_o=t_o.gsub(/\n/m,"#{Mx[:br_nl]}").
+ gsub(/[ ][ ]/m,"#{Mx[:nbsp]*2}").
+ gsub(/#{Mx[:nbsp]}\s/,"#{Mx[:nbsp]*2}")
t_o=t_o + Mx[:br_nl] if t_o =~/\S+/
- elsif t_o.is=='group' \
- or t_o.is=='block' \
- or t_o.is=='alt' \
- or t_o.is=='verse'
- t_o.obj.gsub!(/\n/m,"#{Mx[:br_nl]}")
- t_o.obj.gsub!(/[ ][ ]/m,"#{Mx[:nbsp]*2}")
- t_o.obj.gsub!(/#{Mx[:nbsp]}\s/,"#{Mx[:nbsp]*2}")
+ elsif t_o.is==:group \
+ || t_o.is==:block \
+ || t_o.is==:alt \
+ || t_o.is==:verse
+ t_o.obj=t_o.obj.gsub(/\n/m,"#{Mx[:br_nl]}").
+ gsub(/[ ][ ]/m,"#{Mx[:nbsp]*2}").
+ gsub(/#{Mx[:nbsp]}\s/,"#{Mx[:nbsp]*2}")
end
@tuned_block << t_o if t_o =~/\S+/
else tuned_file << t_o
@@ -484,32 +484,27 @@ module SiSU_document_structure_extract
if @md.flag_endnotes
tuned_file << @pb
h={ ln: 2, obj: 'Endnotes', autonum_: false }
- tuned_file << SiSU_document_structure::Object_heading.new.heading_insert(h)
+ tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
h={ ln: 4, obj: 'Endnotes', name: 'endnotes', autonum_: false }
- tuned_file << SiSU_document_structure::Object_heading.new.heading_insert(h)
+ tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
h={ obj: 'Endnotes' }
end
if @md.book_idx
tuned_file << @pb
h={ ln: 2, obj: 'Index', autonum_: false }
- tuned_file << SiSU_document_structure::Object_heading.new.heading_insert(h)
+ tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
h={ ln: 4, obj: 'Index', name: 'book_index', autonum_: false }
- tuned_file << SiSU_document_structure::Object_heading.new.heading_insert(h)
+ tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
h={ obj: 'Index' }
end
tuned_file << @pb
h={ ln: 2, obj: 'Metadata', autonum_: false, ocn_: false }
- tuned_file << SiSU_document_structure::Object_heading.new.heading_insert(h)
+ tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
h={ ln: 4, obj: 'SiSU Metadata, document information', name: 'metadata', autonum_: false, ocn_: false }
- tuned_file << SiSU_document_structure::Object_heading.new.heading_insert(h)
- tuned_file << @pb
- h={ ln: 2, obj: 'Manifest', autonum_: false, ocn_: false }
- tuned_file << SiSU_document_structure::Object_heading.new.heading_insert(h)
- h={ ln: 4, obj: 'SiSU Manifest, alternative outputs etc.', name: 'sisu_manifest', autonum_: false, ocn_: false }
- tuned_file << SiSU_document_structure::Object_heading.new.heading_insert(h)
+ tuned_file << SiSU_DAL_DocumentStructure::ObjectHeading.new.heading_insert(h)
tuned_file
h={ obj: 'eof' }
- meta=SiSU_document_structure::Object_metadata.new.metadata(@metadata)
+ meta=SiSU_DAL_DocumentStructure::ObjectMetadata.new.metadata(@metadata)
[tuned_file,meta]
end
def table_rows_and_columns_array(table_str)
@@ -522,33 +517,33 @@ module SiSU_document_structure_extract
end
def meta_heading(h)
h={ lv: h[:lv], ln: h[:ln], name: h[:name], obj: h[:obj], ocn: '0' }
- SiSU_document_structure::Object_heading.new.heading(h)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h)
end
def meta_para(str)
h={ obj: str, ocn_: false }
- SiSU_document_structure::Object_para.new.paragraph(h)
+ SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h)
end
def build_lines(type='')
- data=@data
- data.each do |line|
- if line =~/\S/ \
+ lines,lines_new=@data,[]
+ lines.each do |line|
+ line=if line =~/\S/ \
and line !~/^code\{|^\}code/ \
and line.class != Hash
- line.gsub!(/\s\s/,"#{Mx[:nbsp]*2}")
- line.gsub!(/#{Mx[:nbsp]}\s/,"#{Mx[:nbsp]*2}")
- line.gsub!(/^/,"#{Mx[:gr_o]}codeline#{Mx[:gr_c]}") if type=='code' # REMOVE try sort for texpdf special case
- if line =~/(?:https?|file|ftp):\/\/\S+$/
- line.gsub!(/\s*$/," #{Mx[:br_nl]}")
- else line.gsub!(/\s*$/,"#{Mx[:br_nl]}") #unless type=='code'
- end
- if @@flag['code']; @@counter+=1
- else
+ @@counter+=1 if @@flag['code']
+ line=line.gsub(/\s\s/,"#{Mx[:nbsp]*2}").
+ gsub(/#{Mx[:nbsp]}\s/,"#{Mx[:nbsp]*2}")
+ line=line.gsub(/^/,"#{Mx[:gr_o]}codeline#{Mx[:gr_c]}") if type=='code' # REMOVE try sort for texpdf special case
+ line=if line =~/(?:https?|file|ftp):\/\/\S+$/
+ line.gsub(/\s*$/," #{Mx[:br_nl]}")
+ else line.gsub(/\s*$/,"#{Mx[:br_nl]}") #unless type=='code'
end
elsif line =~/^\s*$/
- line.gsub!(/\s*$/,"#{Mx[:br_nl]}")
+ line.gsub(/\s*$/,"#{Mx[:br_nl]}")
+ else line
end
+ lines_new << line
end
- data
+ lines_new
end
end
class Structure # this must happen early
@@ -561,29 +556,29 @@ module SiSU_document_structure_extract
@dob
end
def structure_markup #build structure where structure provided only in meta header
- @dob=if @dob.is =~/para/ \
- and ((@dob.hang !~/[1-9]/ and @dob.indent !~/[1-9]/) \
- or (@dob.hang != @dob.indent)) \
+ @dob=if @dob.is ==:para \
+ && (((@dob.hang !~/[1-9]/) && (@dob.indent !~/[1-9]/)) \
+ || (@dob.hang != @dob.indent)) \
and not @dob.bullet_
@dob=case @dob.obj
when /^#{@md.lv1}/
h={ lv: 'A', ln: 1 }
- SiSU_document_structure::Object_heading.new.heading(h,@dob)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
when /^#{@md.lv2}/
h={ lv: 'B', ln: 2 }
- SiSU_document_structure::Object_heading.new.heading(h,@dob)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
when /^#{@md.lv3}/
h={ lv: 'C', ln: 3 }
- SiSU_document_structure::Object_heading.new.heading(h,@dob)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
when /^#{@md.lv4}/
h={ lv: '1', ln: 4 }
- SiSU_document_structure::Object_heading.new.heading(h,@dob)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
when /^#{@md.lv5}/
h={ lv: '2', ln: 5 }
- SiSU_document_structure::Object_heading.new.heading(h,@dob)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
when /^#{@md.lv6}/
h={ lv: '3', ln: 6 }
- SiSU_document_structure::Object_heading.new.heading(h,@dob)
+ SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,@dob)
else @dob
end
else @dob
@@ -592,26 +587,26 @@ module SiSU_document_structure_extract
end
def structure_markup_normalize #needs a bit of thinking
dob=if @md.markup_version.determined < 0.38 #%convert internal representation, consider making 0.38 structure default ([A-C1-6] instead of [1-9]), requires downstream changes
- @dob.gsub!(/^[456]~/,'!_')
- @dob.gsub!(/^3~(\S+)/,"#{Mx[:lv_o]}6:\\1#{Mx[:lv_c]}")
- @dob.gsub!(/^3~\s+/,"#{Mx[:lv_o]}6:#{Mx[:lv_c]}")
- @dob.gsub!(/^2~(\S+)/,"#{Mx[:lv_o]}5:\\1#{Mx[:lv_c]}")
- @dob.gsub!(/^2~\s+/,"#{Mx[:lv_o]}5:#{Mx[:lv_c]}")
- @dob.gsub!(/^1~(\S+)/,"#{Mx[:lv_o]}4:\\1#{Mx[:lv_c]}")
- @dob.gsub!(/^1~\s+/,"#{Mx[:lv_o]}4:#{Mx[:lv_c]}")
- @dob.gsub!(/^:?C~(\S+)/,"#{Mx[:lv_o]}3:\\1#{Mx[:lv_c]}")
- @dob.gsub!(/^:?C~\s+/,"#{Mx[:lv_o]}3:#{Mx[:lv_c]}")
- @dob.gsub!(/^:?B~(\S+)/,"#{Mx[:lv_o]}2:\\1#{Mx[:lv_c]}")
- @dob.gsub!(/^:?B~\s+/,"#{Mx[:lv_o]}2:#{Mx[:lv_c]}")
- @dob.gsub!(/^:?A~(\S+)/,"#{Mx[:lv_o]}1:\\1#{Mx[:lv_c]}")
- @dob.gsub!(/^:?A~\s+/,"#{Mx[:lv_o]}1:#{Mx[:lv_c]}")
+ @dob=@dob.gsub(/^[456]~/,'!_').
+ gsub(/^3~(\S+)/,"#{Mx[:lv_o]}6:\\1#{Mx[:lv_c]}").
+ gsub(/^3~\s+/,"#{Mx[:lv_o]}6:#{Mx[:lv_c]}").
+ gsub(/^2~(\S+)/,"#{Mx[:lv_o]}5:\\1#{Mx[:lv_c]}").
+ gsub(/^2~\s+/,"#{Mx[:lv_o]}5:#{Mx[:lv_c]}").
+ gsub(/^1~(\S+)/,"#{Mx[:lv_o]}4:\\1#{Mx[:lv_c]}").
+ gsub(/^1~\s+/,"#{Mx[:lv_o]}4:#{Mx[:lv_c]}").
+ gsub(/^:?C~(\S+)/,"#{Mx[:lv_o]}3:\\1#{Mx[:lv_c]}").
+ gsub(/^:?C~\s+/,"#{Mx[:lv_o]}3:#{Mx[:lv_c]}").
+ gsub(/^:?B~(\S+)/,"#{Mx[:lv_o]}2:\\1#{Mx[:lv_c]}").
+ gsub(/^:?B~\s+/,"#{Mx[:lv_o]}2:#{Mx[:lv_c]}").
+ gsub(/^:?A~(\S+)/,"#{Mx[:lv_o]}1:\\1#{Mx[:lv_c]}").
+ gsub(/^:?A~\s+/,"#{Mx[:lv_o]}1:#{Mx[:lv_c]}")
@dob=if @dob =~/^@(?:level|markup):\s/
- @dob.gsub!(/3/,'6')
- @dob.gsub!(/2/,'5')
- @dob.gsub!(/1/,'4')
- @dob.gsub!(/:?C/,'3')
- @dob.gsub!(/:?B/,'2')
- @dob.gsub!(/:?A/,'1')
+ @dob=@dob.gsub(/3/,'6').
+ gsub(/2/,'5').
+ gsub(/1/,'4').
+ gsub(/:?C/,'3').
+ gsub(/:?B/,'2').
+ gsub(/:?A/,'1')
@dob
else @dob
end
@@ -620,19 +615,19 @@ module SiSU_document_structure_extract
end
def structure_marks
t_o=if @md.markup_version.determined < 0.38
- @t_o.gsub!(/^1~(\S+)/,"#{Mx[:lv_o]}1:\\1#{Mx[:lv_c]}")
- @t_o.gsub!(/^1~\s+/,"#{Mx[:lv_o]}1:#{Mx[:lv_c]}")
- @t_o.gsub!(/^2~(\S+)/,"#{Mx[:lv_o]}2:\\1#{Mx[:lv_c]}")
- @t_o.gsub!(/^2~\s+/,"#{Mx[:lv_o]}2:#{Mx[:lv_c]}")
- @t_o.gsub!(/^3~(\S+)/,"#{Mx[:lv_o]}3:\\1#{Mx[:lv_c]}")
- @t_o.gsub!(/^3~\s+/,"#{Mx[:lv_o]}3:#{Mx[:lv_c]}")
- @t_o.gsub!(/^4~(\S+)/,"#{Mx[:lv_o]}4:\\1#{Mx[:lv_c]}")
- @t_o.gsub!(/^4~\s+/,"#{Mx[:lv_o]}4:#{Mx[:lv_c]}")
- @t_o.gsub!(/^5~(\S+)/,"#{Mx[:lv_o]}5:\\1#{Mx[:lv_c]}")
- @t_o.gsub!(/^5~\s+/,"#{Mx[:lv_o]}5:#{Mx[:lv_c]}")
- @t_o.gsub!(/^6~(\S+)/,"#{Mx[:lv_o]}6:\\1#{Mx[:lv_c]}")
- @t_o.gsub!(/^6~\s+/,"#{Mx[:lv_o]}6:#{Mx[:lv_c]}")
- @t_o.gsub!(/^[789]~/,'!_')
+ @t_o=@t_o.gsub(/^1~(\S+)/,"#{Mx[:lv_o]}1:\\1#{Mx[:lv_c]}").
+ gsub(/^1~\s+/,"#{Mx[:lv_o]}1:#{Mx[:lv_c]}").
+ gsub(/^2~(\S+)/,"#{Mx[:lv_o]}2:\\1#{Mx[:lv_c]}").
+ gsub(/^2~\s+/,"#{Mx[:lv_o]}2:#{Mx[:lv_c]}").
+ gsub(/^3~(\S+)/,"#{Mx[:lv_o]}3:\\1#{Mx[:lv_c]}").
+ gsub(/^3~\s+/,"#{Mx[:lv_o]}3:#{Mx[:lv_c]}").
+ gsub(/^4~(\S+)/,"#{Mx[:lv_o]}4:\\1#{Mx[:lv_c]}").
+ gsub(/^4~\s+/,"#{Mx[:lv_o]}4:#{Mx[:lv_c]}").
+ gsub(/^5~(\S+)/,"#{Mx[:lv_o]}5:\\1#{Mx[:lv_c]}").
+ gsub(/^5~\s+/,"#{Mx[:lv_o]}5:#{Mx[:lv_c]}").
+ gsub(/^6~(\S+)/,"#{Mx[:lv_o]}6:\\1#{Mx[:lv_c]}").
+ gsub(/^6~\s+/,"#{Mx[:lv_o]}6:#{Mx[:lv_c]}").
+ gsub(/^[789]~/,'!_')
@t_o
else @t_o
end
@@ -651,12 +646,14 @@ module SiSU_document_structure_extract
parent=node1=node2=node3=node4=node5=node6=nil
data.each do |dob|
h={}
- if (dob.obj !~ regex_exclude_ocn_and_node || dob.is =='code') \
- and dob.of !~/(?:comment|layout|meta)/ \
- and dob.obj !~/#{Mx[:pa_non_object_no_heading]}|#{Mx[:pa_non_object_dummy_heading]}/ \
- and dob.ocn_
+ if (dob.obj !~ regex_exclude_ocn_and_node || dob.is ==:code) \
+ && (dob.of !=:comment \
+ && dob.of !=:layout \
+ && dob.of !=:meta) \
+ && dob.obj !~/#{Mx[:pa_non_object_no_heading]}|#{Mx[:pa_non_object_dummy_heading]}/ \
+ && dob.ocn_
#dob.ln now is determined, and set earlier, check how best to remove this -->
- if dob.is=='heading'
+ if dob.is==:heading
ln=case dob.lv
when 'A'; 1
when 'B'; 2
@@ -672,7 +669,7 @@ module SiSU_document_structure_extract
if not dob.obj =~/<:#>|~#|-#/ \
or not dob.toc_ # fix this no longer in dob.obj
ocn+=1
- if dob.is=='heading' \
+ if dob.is==:heading \
and (ln.to_s =~/^[1-9]/ \
or ln.to_s =~@md.lv1 \
or ln.to_s =~@md.lv2 \
@@ -708,56 +705,67 @@ module SiSU_document_structure_extract
end
else
ocno+=1
- if dob.is=='table'
+ if dob.is==:table
ocnt+=1
ocn_sp,parent="t#{ocnt}",node
- elsif dob.is=='code'
+ elsif dob.is==:code
ocnc+=1
ocn_sp,parent="c#{ocnc}",node
- elsif dob.is=~/^(?:group|block|alt|verse)/
+ elsif dob.is==:group \
+ || dob.is==:block \
+ || dob.is==:alt \
+ || dob.is==:verse
ocng+=1 #group, poem
ocn_sp,parent="g#{ocng}",node
- elsif dob.is=~/image|#{Mx[:lnk_o]}\S+?\.(?:png|jpg|gif)\s+/m
+ elsif dob.is==:image #check
ocni+=1
ocn_sp,parent="i#{ocni}",node
else ocnp+=1 #paragraph
ocn_sp,parent="p#{ocnp}",node
end
end
- if dob.is=='heading'
+ if dob.is==:heading
dob.ln,dob.node,dob.ocn,dob.odv,dob.osp,dob.parent=ln,node,ocn,ocn_dv,ocn_sp,parent
else
- unless dob.of=~/meta|comment|layout/
+ if dob.of !=:meta \
+ && dob.of !=:comment \
+ && dob.of !=:layout
dob.ocn,dob.odv,dob.osp,dob.parent=ocn,ocn_dv,ocn_sp,parent
end
end
else ocnu+=1
- dob.obj.gsub!(/#{Mx[:fa_o]}~##{Mx[:fa_c]}/,'') if dob.obj
+ dob.obj=dob.obj.gsub(/#{Mx[:fa_o]}~##{Mx[:fa_c]}/,'') if dob.obj
ocn_dv,ocn_sp="u#{ocnu}","u#{ocnu}"
dob.ocn,dob.odv,dob.osp=ocn,ocn_dv,ocn_sp
end
h
elsif dob.obj=~/#{Mx[:pa_non_object_no_heading]}/
- dob.obj.gsub!(/#{Mx[:pa_non_object_no_heading]}/,'')
- if dob.is=='para'
+ dob.obj=dob.obj.gsub(/#{Mx[:pa_non_object_no_heading]}/,'')
+ if dob.is==:para
h={ obj: dob.obj, ocn_: false, ocn: nil }
- dob=SiSU_document_structure::Object_para.new.paragraph(h,dob)
- elsif dob.is=='heading'
+ dob=SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h,dob)
+ elsif dob.is==:heading
h={ obj: dob.obj, ocn_: false, ocn: nil, toc_: true }
- dob=SiSU_document_structure::Object_heading.new.heading(h,dob)
+ dob=SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,dob)
end
elsif dob.obj=~/#{Mx[:pa_non_object_dummy_heading]}/
- dob.obj.gsub!(/#{Mx[:pa_non_object_dummy_heading]}/,'')
- if dob.is=='para'
+ dob.obj=dob.obj.gsub(/#{Mx[:pa_non_object_dummy_heading]}/,'')
+ if dob.is==:para
h={ obj: dob.obj, ocn_: false, ocn: nil }
- dob=SiSU_document_structure::Object_para.new.paragraph(h,dob)
- elsif dob.is=='heading'
+ dob=SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h,dob)
+ elsif dob.is==:heading
h={ obj: dob.obj, ocn_: false, ocn: nil, toc_: false }
- dob=SiSU_document_structure::Object_heading.new.heading(h,dob)
+ dob=SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h,dob)
end
else dob
end
- dob.obj.gsub!(/\n\n/,"\n") if dob.is =~/(?:code|verse|alt|group|block)/ #newlines taken out
+ if dob.is==:code \
+ || dob.is==:verse \
+ || dob.is==:alt \
+ || dob.is==:group \
+ || dob.is==:block
+ dob.obj=dob.obj.gsub(/\n\n/,"\n") #newlines taken out
+ end
@o_array << dob
end
@o_array
@@ -791,7 +799,8 @@ module SiSU_document_structure_extract
puts "<#{@s[0]}>"
end
data.each_with_index do |o,i|
- if o.is =~/^heading/
+ if o.is ==:heading \
+ || o.is ==:heading_insert
case o.ln
when 1
tuned_file << tag_close(o.ln,hs)
@@ -847,8 +856,7 @@ module SiSU_document_structure_extract
end
puts_tag_close(0,hs) if @md.opt.cmd =~/V/
tuned_file << tag_close(0,hs)
- tuned_file.flatten!
- tuned_file
+ tuned_file=tuned_file.flatten
end
def tags(o)
tag=if o[:status]=='open'
@@ -867,7 +875,7 @@ module SiSU_document_structure_extract
when '6'; 9
end
h={ tag: tag, node: o[:node], lv: o[:lv], ln: ln, status: o[:status] }
- SiSU_document_structure::Object_structure.new.xml_dom(h) #downstream code utilise else ignore like comments
+ SiSU_DAL_DocumentStructure::ObjectStructure.new.xml_dom(h) #downstream code utilise else ignore like comments
end
def tag_open(o,tag)
t={ lv: tag[o.ln], node: o.node, status: 'open' }