diff options
author | Ralph Amissah <ralph@amissah.com> | 2011-08-18 23:21:23 -0400 |
---|---|---|
committer | Ralph Amissah <ralph@amissah.com> | 2011-08-18 23:21:23 -0400 |
commit | a72ff8fbcebeb3a273ff1706501863daf065b1a5 (patch) | |
tree | 430c8d99401f74a9bddd55e281231da7b4b9b170 /lib/sisu/v3/epub.rb | |
parent | debian/changelog (3.0.15-1) (diff) | |
parent | v3: dal, sisu document links (multiple output versions) shortcut (diff) |
Merge commit 'sisu-3.0.16' into debian/sid
Diffstat (limited to 'lib/sisu/v3/epub.rb')
-rw-r--r-- | lib/sisu/v3/epub.rb | 75 |
1 files changed, 51 insertions, 24 deletions
diff --git a/lib/sisu/v3/epub.rb b/lib/sisu/v3/epub.rb index 83a0a795..e2d65111 100644 --- a/lib/sisu/v3/epub.rb +++ b/lib/sisu/v3/epub.rb @@ -85,9 +85,9 @@ module SiSU_EPUB @env=@particulars.env loc=@env.path.url.output_tell unless @opt.cmd =~/q/ - tool=if @opt.cmd =~/[MVvz]/; "#{@env.program.epub_viewer} #{@md.file.output_path.epub.dir}/#{@md.file.base_filename.epub}" - else "[#{@opt.f_pth[:lng_is]}] #{@opt.fns}" - end + tool=(@opt.cmd =~/[MVvz]/) \ + ? "#{@env.program.epub_viewer} #{@md.file.output_path.epub.dir}/#{@md.file.base_filename.epub}" \ + : "[#{@opt.f_pth[:lng_is]}] #{@opt.fns}" @opt.cmd=~/[MVvz]/ \ ? SiSU_Screen::Ansi.new(@opt.cmd,'EPUB',tool).green_hi_blue \ : SiSU_Screen::Ansi.new(@opt.cmd,'EPUB',tool).green_title_hi @@ -199,7 +199,8 @@ module SiSU_EPUB @@firstseg=nil @@toc={ seg: [], seg_mini: [], scr: [], ncx: [], opf: [] } md_opf_a_content,md_opf_a_spine,md_opf_a_guide=[],[],[] - @nav_no=1 + @nav_no=0 + @s_a_no,@s_b_no,@s_c_no=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 @@ -207,7 +208,6 @@ module SiSU_EPUB @@toc[:opf] << @epub.metadata_opf.package_open @@toc[:opf] << @epub.metadata_opf.metadata @@toc[:opf] << @epub.metadata_opf.manifest_open - @@toc[:ncx] << @epub.toc_ncx.navmap_sisu_toc(@nav_no) #epub ncx navmap, toc @@toc[:seg] << %{<div class="content">\n<div class="substance">} @@toc[:scr] << %{<div class="content">\n<div class="substance">} md_opf_a_content << @epub.metadata_opf.manifest_content_sisu_toc @@ -216,43 +216,68 @@ module SiSU_EPUB @ncxo=[nil,false,false,false,false,false,false] @dob_toc2,@dob_toc3=nil,nil @ncx_cls=[] + @level_a_first_occurrence=true @data.each do |dob| if dob.is=='heading' \ or dob.is=='heading_insert' dob_toc=dob.dup toc=case dob_toc.ln when 1 + @s_a_no +=1 + 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[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 + @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 + @nav_no+=1 + @@toc[:ncx] << @epub.toc_ncx.navmap_sisu_toc(@nav_no) #epub ncx navmap, toc + @level_a_first_occurrence=false + end + md_opf_a_content << @epub.metadata_opf.manifest_content(dob_toc,name_s_a) + md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,name_s_a) + md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,name_s_a) Toc.new(@md,dob_toc).level_1 when 2 + @s_b_no +=1 + name_s_b='section_b' + @s_b_no.to_s @nav_no+=1 @nav_no2=@nav_no - @ncx_cls << @epub.toc_ncx.navpoint_close if @ncxo[4] - @ncx_cls << @epub.toc_ncx.navpoint_close if @ncxo[3] - @ncx_cls << @epub.toc_ncx.navpoint_close if @ncxo[2] - @ncxo[2],@ncxo[3],@ncxo[4]=false,false,false - @dob_toc2=dob_toc - @ncxo[2]=true + @@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 + @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) + md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,name_s_b) + md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,name_s_b) Toc.new(@md,dob_toc).level_2 when 3 + @s_c_no +=1 + name_s_c='section_c' + @s_c_no.to_s @nav_no+=1 @nav_no3=@nav_no - @ncx_cls << @epub.toc_ncx.navpoint_close if @ncxo[4] - @ncx_cls << @epub.toc_ncx.navpoint_close if @ncxo[3] - @ncxo[3],@ncxo[4]=false,false - @dob_toc3=dob_toc - @ncxo[3]=true + @@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 + @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) + md_opf_a_spine << @epub.metadata_opf.spine(dob_toc,name_s_c) + md_opf_a_guide << @epub.metadata_opf.guide(dob_toc,name_s_c) Toc.new(@md,dob_toc).level_3 when 4 - @@toc[:ncx] << @ncx_cls if @ncx_cls.length > 0 @ncx_cls=[] - @@toc[:ncx] << @epub.toc_ncx.navpoint_top3(@dob_toc2,@nav_no2,dob_toc.name) if @dob_toc2 #epub ncx navmap - @@toc[:ncx] << @epub.toc_ncx.navpoint_top3(@dob_toc3,@nav_no3,dob_toc.name) if @dob_toc3 #epub ncx navmap - @dob_toc2,@dob_toc3=nil,nil @nav_no+=1 @@toc[:ncx] << @epub.toc_ncx.navpoint_close if @ncxo[4] - @ncxo[4]=false - @@toc[:ncx] << @epub.toc_ncx.navpoint(dob_toc,@nav_no) if dob_toc #epub ncx navmap @ncxo[4]=true + @@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) @@ -499,8 +524,10 @@ module SiSU_EPUB dochead.gsub!(/toc\.(html)/,'doc.\1') #kludge toc_shared << dochead #<< ads.div.major segtoc << format_head_toc.head #<< ads.div.major - toc_shared << format_head_toc.toc_head_escript if SiSU_EPUB_Format::Head_toc.method_defined? :toc_head_escript - segtoc << format_head_toc.toc_head_escript if SiSU_EPUB_Format::Head_toc.method_defined? :toc_head_escript + if SiSU_EPUB_Format::Head_toc.method_defined? :toc_head_escript + toc_shared << format_head_toc.toc_head_escript + segtoc << format_head_toc.toc_head_escript + end if defined? @md.rights.all \ and @md.rights.all rights=format_head_toc.rights.all |