aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/v6/ao_doc_str.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sisu/v6/ao_doc_str.rb')
-rw-r--r--lib/sisu/v6/ao_doc_str.rb53
1 files changed, 31 insertions, 22 deletions
diff --git a/lib/sisu/v6/ao_doc_str.rb b/lib/sisu/v6/ao_doc_str.rb
index 0c07eee7..2a96abb7 100644
--- a/lib/sisu/v6/ao_doc_str.rb
+++ b/lib/sisu/v6/ao_doc_str.rb
@@ -506,8 +506,9 @@ module SiSU_AO_DocumentStructureExtract
tags: tags,
quote: quotes?,
}
- SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h)
+ t_o=SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h)
end
+ t_o=SiSU_AO_DocumentStructureExtract::Structure.new(@md).structure_markup(t_o) #must happen earlier, node info etc. require
end
elsif @@flag[:code]==:off
if t_o =~/^(?:code(?:\.[a-z][0-9a-z_]+)?\{|```[ ]+code(?:\.[a-z][0-9a-z_]+)?)/
@@ -1146,66 +1147,74 @@ module SiSU_AO_DocumentStructureExtract
end
end
class Structure # this must happen early
- def initialize(md,dob)
- @md,@dob=md,dob
+ def initialize(md)
+ @md=md
end
- def structure
- structure_markup
- @dob
+ def structure(data)
+ data.compact.each do |dob|
+ structure_markup(dob)
+ end
end
- def structure_markup #build structure where structure provided only in meta header
- @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
+ def structure_markup(dob) #build structure where structure provided only in meta header
+ 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.lv0}/
h={
+ is: :heading,
lv: 'A',
ln: 0,
}
- SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,@dob)
+ SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,dob)
when /^#{@md.lv1}/
h={
+ is: :heading,
lv: 'B',
ln: 1,
}
- SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,@dob)
+ SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,dob)
when /^#{@md.lv2}/
h={
+ is: :heading,
lv: 'C',
ln: 2,
}
- SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,@dob)
+ SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,dob)
when /^#{@md.lv3}/
h={
+ is: :heading,
lv: 'D',
ln: 3,
}
- SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,@dob)
+ SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,dob)
when /^#{@md.lv4}/
h={
+ is: :heading,
lv: '1',
ln: 4,
}
- SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,@dob)
+ SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,dob)
when /^#{@md.lv5}/
h={
+ is: :heading,
lv: '2',
ln: 5,
}
- SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,@dob)
+ SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,dob)
when /^#{@md.lv6}/
h={
+ is: :heading,
lv: '3',
ln: 6,
}
- SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,@dob)
- else @dob
+ SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h,dob)
+ else dob
end
- else @dob
+ else dob
end
- @dob
+ dob
end
end
class OCN