diff options
Diffstat (limited to 'lib/sisu/v5/xhtml_epub2.rb')
-rw-r--r-- | lib/sisu/v5/xhtml_epub2.rb | 85 |
1 files changed, 67 insertions, 18 deletions
diff --git a/lib/sisu/v5/xhtml_epub2.rb b/lib/sisu/v5/xhtml_epub2.rb index c54d77ff..33e3a529 100644 --- a/lib/sisu/v5/xhtml_epub2.rb +++ b/lib/sisu/v5/xhtml_epub2.rb @@ -8,7 +8,8 @@ * Author: Ralph Amissah * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, - 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved. + 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Ralph Amissah, + All Rights Reserved. * License: GPL 3 or later: @@ -208,7 +209,7 @@ module SiSU_XHTML_EPUB2 @@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,@lv5_no,@lv6_no=0,0,0,0,0 + @s_a_no,@s_b_no,@s_c_no,@s_d_no,@lv5_no,@lv6_no=0,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 @@ -230,7 +231,7 @@ module SiSU_XHTML_EPUB2 md_opf_a_spine << @epub.metadata_opf.spine_sisu_toc md_opf_a_guide << @epub.metadata_opf.guide_sisu_toc end - @ncxo=[nil,false,false,false,false,false,false] + @ncxo=[false,false,false,false,false,false,false] @dob_toc2,@dob_toc3=nil,nil @ncx_cls=[] @level_a_first_occurrence=true @@ -239,7 +240,7 @@ module SiSU_XHTML_EPUB2 || dob.is==:heading_insert dob_toc=dob.dup toc=case dob_toc.ln - when 1 + when 0 @s_a_no +=1 lv_name='section_a' + @s_a_no.to_s @nav_no+=1 @@ -250,20 +251,21 @@ module SiSU_XHTML_EPUB2 @@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],@ncxo[5],@ncxo[6]=true,false,false,false,false,false + @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[0] + @ncxo[0],@ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=true,false,false,false,false,false,false @epub.sections(dob_toc,lv_name) - @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc if @level_a_first_occurrence \ && @make.build.toc? - @nav_no+=1 @@toc[:ncx] << @epub.toc_ncx.navmap_sisu_toc(@nav_no) #epub ncx navmap, toc + @nav_no+=1 @level_a_first_occurrence=false end + @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name) - SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_1 - when 2 + SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_0 + when 1 @s_b_no +=1 lv_name='section_b' + @s_b_no.to_s @nav_no+=1 @@ -273,6 +275,24 @@ module SiSU_XHTML_EPUB2 @@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],@ncxo[5],@ncxo[6]=true,false,false,false,false,false + @epub.sections(dob_toc,lv_name) + @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc + md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,lv_name) + md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,lv_name) + md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name) + SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_1 + when 2 + @s_c_no +=1 + lv_name='section_c' + @s_c_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],@ncxo[5],@ncxo[6]=true,false,false,false,false @epub.sections(dob_toc,lv_name) @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no,lv_name) if dob_toc @@ -281,8 +301,8 @@ module SiSU_XHTML_EPUB2 md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,lv_name) SiSU_XHTML_EPUB2::Source::Toc.new(@md,dob_toc).level_2 when 3 - @s_c_no +=1 - lv_name='section_c' + @s_c_no.to_s + @s_d_no +=1 + lv_name='section_d' + @s_d_no.to_s @nav_no+=1 @nav_no3=@nav_no @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[6] @@ -363,7 +383,8 @@ module SiSU_XHTML_EPUB2 @@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],@ncxo[5],@ncxo[6]=false,false,false,false,false,false + @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[0] + @ncxo[0],@ncxo[1],@ncxo[2],@ncxo[3],@ncxo[4],@ncxo[5],@ncxo[6]=false,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>" @@ -380,9 +401,32 @@ module SiSU_XHTML_EPUB2 @@toc end protected + def level_0 + dob=@data + linkname=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'').strip + link=dob.ocn + title=linkname + toc={} + txt_obj={ txt: title } + format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) + toc[:seg]=format_toc.lev1 + title=if dob.ocn ==0 then linkname + else + @@toc[:scr] << '<br />' + link=(dob.ln) \ + ? dob.ln + : '' + %{<b><a href="##{link}">#{linkname}</a></b>} + end + txt_obj={ txt: title } + format_toc=SiSU_XHTML_EPUB2_Format::FormatToc.new(@md,txt_obj) + toc[:scr]=format_toc.lev1 + toc + end def level_1 dob=@data - linkname,link=dob.obj.strip,dob.ocn + linkname=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'').strip + link=dob.ocn title=if dob.obj !~/Document Information/ linkname else @@ -421,7 +465,8 @@ module SiSU_XHTML_EPUB2 end def level_2 dob=@data - linkname,ocn=dob.obj.strip,dob.ocn + linkname=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'').strip + ocn=dob.ocn if ocn \ and ocn !~/#/ p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn) @@ -440,7 +485,8 @@ module SiSU_XHTML_EPUB2 end def level_3 dob=@data - linkname,ocn=dob.obj.strip,dob.ocn + linkname=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'').strip + ocn=dob.ocn if ocn \ and ocn !~/#/ p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn) @@ -459,7 +505,8 @@ module SiSU_XHTML_EPUB2 end def level_4 dob=@data - linkname,ocn=dob.obj.strip,dob.ocn + linkname=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'').strip + ocn=dob.ocn p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,ocn) if ocn if dob.ln==4 seg_link=%{ <a href="#{dob.name}#{Sfx[:epub_xhtml]}"> @@ -484,7 +531,8 @@ module SiSU_XHTML_EPUB2 end def level_5 dob=@data - linkname,ocn=dob.obj.strip,dob.ocn + linkname=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'').strip + ocn=dob.ocn toc={} if ocn \ and ocn !~/#/ @@ -504,7 +552,8 @@ module SiSU_XHTML_EPUB2 end def level_6 dob=@data - linkname,ocn=dob.obj.strip,dob.ocn + linkname=dob.obj.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'').strip + ocn=dob.ocn toc={} if ocn \ and ocn !~/#/ |