aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/v3/epub.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sisu/v3/epub.rb')
-rw-r--r--lib/sisu/v3/epub.rb48
1 files changed, 40 insertions, 8 deletions
diff --git a/lib/sisu/v3/epub.rb b/lib/sisu/v3/epub.rb
index c51a7656..fdb1398f 100644
--- a/lib/sisu/v3/epub.rb
+++ b/lib/sisu/v3/epub.rb
@@ -199,7 +199,7 @@ module SiSU_EPUB
@@toc={ seg: [], seg_mini: [], scr: [], ncx: [], opf: [] }
md_opf_a_content,md_opf_a_spine,md_opf_a_guide=[],[],[]
@nav_no=0
- @s_a_no,@s_b_no,@s_c_no=0,0,0
+ @s_a_no,@s_b_no,@s_c_no,@lv5_no,@lv6_no=0,0,0,0,0
@@toc[:ncx] << @epub.toc_ncx.open #epub ncx navmap
@@toc[:ncx] << @epub.toc_ncx.head_open << @epub.toc_ncx.head << @epub.toc_ncx.head_close
@@toc[:ncx] << @epub.toc_ncx.doc_title << @epub.toc_ncx.doc_author
@@ -228,11 +228,13 @@ module SiSU_EPUB
name_s_a='section_a' + @s_a_no.to_s
@nav_no+=1
@nav_no2=@nav_no
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[1]
- @ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4]=true,false,false,false
+ @ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=true,false,false,false,false,false
@epub.sections(dob_toc,name_s_a)
@@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,name_s_a) if dob_toc
if @level_a_first_occurrence \
@@ -250,10 +252,12 @@ module SiSU_EPUB
name_s_b='section_b' + @s_b_no.to_s
@nav_no+=1
@nav_no2=@nav_no
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2]
- @ncxo[2],@ncxo[3],@ncxo[4]=true,false,false
+ @ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=true,false,false,false,false
@epub.sections(dob_toc,name_s_b)
@@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,name_s_b) if dob_toc
md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,name_s_b)
@@ -265,9 +269,11 @@ module SiSU_EPUB
name_s_c='section_c' + @s_c_no.to_s
@nav_no+=1
@nav_no3=@nav_no
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3]
- @ncxo[3],@ncxo[4]=true,false
+ @ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=true,false,false,false
@epub.sections(dob_toc,name_s_c)
@@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,name_s_c) if dob_toc
md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,name_s_c)
@@ -277,15 +283,39 @@ module SiSU_EPUB
when 4
@ncx_cls=[]
@nav_no+=1
+ @dob_name=dob.name
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]
- @ncxo[4]=true
+ @ncxo[4],@ncxo[5],@ncxo[6]=true,false,false
@@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no) if dob_toc
md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc)
md_opf_a_spine << @epub.metadata_opf.spine(dob_toc)
md_opf_a_guide << @epub.metadata_opf.guide(dob_toc)
SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_4
- when 5; SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_5
- when 6; SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_6
+ when 5
+ @ncx_cls=[]
+ name_lv5=@dob_name + '.xhtml' + '#o' + dob_toc.ocn.to_s
+ @nav_no+=1
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5]
+ @ncxo[5],@ncxo[6]=true,false
+ @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,name_lv5) if dob_toc
+ md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,name_lv5)
+ md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,name_lv5)
+ md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,name_lv5)
+ SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_5
+ when 6
+ @ncx_cls=[]
+ name_lv6=@dob_name + '.xhtml' + '#o' + dob_toc.ocn.to_s
+ @nav_no+=1
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]
+ @ncxo[6]=true
+ @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,name_lv6) if dob_toc
+ md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,name_lv6)
+ md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,name_lv6)
+ md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,name_lv6)
+ SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_6
else nil
end
toc.each do |k,d|
@@ -308,10 +338,12 @@ module SiSU_EPUB
end
end
end
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6]
+ @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[5]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[3]
@@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[2]
- @ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4]=false,false,false,false
+ @ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=false,false,false,false,false,false
md_opf_a_content << @epub.metadata_opf.manifest_images(@md.ec[:image])
@@toc[:seg] << "</div>\n</div>"
@@toc[:scr] << "</div>\n</div>"