From ff824c5c3d36f278e3050b171293e04c22b7356e Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Wed, 23 Jan 2013 23:48:09 -0500 Subject: v4 v3: epub, epub_format, provide full depth epub table of contents MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [request Mikael Böök] --- lib/sisu/v3/epub.rb | 48 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 8 deletions(-) (limited to 'lib/sisu/v3/epub.rb') 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] << "\n" @@toc[:scr] << "\n" -- cgit v1.2.3