From 6811ac91f21a434fc7d967c11e1b20f33918c6ea Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Mon, 19 Mar 2012 22:07:29 -0400 Subject: v3: 3.2 branch is main (v3dv --> v3); dev (v3dv) branch directories removed * v3dv (3.2) "merged" into v3 (previously 3.1) (& removed) * conf/sisu/v3dv --> conf/sisu/v3 * data/sisu/v3dv --> data/sisu/v3 * lib/sisu/v3dv --> lib/sisu/v3 * bin/sisu* (v3dv references changed to v3) * (--dev modifier (superfluous for the time being) runs main v3 branch) --- lib/sisu/v3/epub.rb | 213 ++++++++++++++++++++++------------------------------ 1 file changed, 88 insertions(+), 125 deletions(-) (limited to 'lib/sisu/v3/epub.rb') diff --git a/lib/sisu/v3/epub.rb b/lib/sisu/v3/epub.rb index e0a1d219..e9aeb4de 100644 --- a/lib/sisu/v3/epub.rb +++ b/lib/sisu/v3/epub.rb @@ -66,14 +66,14 @@ module SiSU_EPUB require_relative 'epub_format' # epub_format.rb include SiSU_EPUB_Format require_relative 'epub_segments' # epub_segments.rb - include SiSU_EPUB_seg + include SiSU_EPUB_Seg require_relative 'epub_tune' # epub_tune.rb include SiSU_EPUB_Tune require_relative 'epub_concordance' # epub_concordance.rb class Source def initialize(opt) @opt=opt - @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt) + @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt) end def read songsheet @@ -96,18 +96,18 @@ module SiSU_EPUB @env.processing_path.epub_bld #(@md) @env.processing_path.epub_cp_images(@md) dir_epub=@env.processing_path.epub - SiSU_Env::Info_skin.new(@md).select + SiSU_Env::InfoSkin.new(@md).select data=nil - SiSU_Env::SiSU_file.new(@md).mkdir.output.epub - @tuned_file_array=SiSU_EPUB::Source::XHtml_environment.new(@particulars).tuned_file_instructions + SiSU_Env::FileOp.new(@md).mkdir.output.epub + @tuned_file_array=SiSU_EPUB::Source::XHTML_Environment.new(@particulars).tuned_file_instructions data=@tuned_file_array scr_endnotes=SiSU_EPUB::Source::Endnotes.new(@md,data).scroll toc=SiSU_EPUB::Source::Toc.new(@md,data).songsheet data=@tuned_file_array - scr_toc=SiSU_EPUB::Source::Scroll_head_and_segtoc.new(@md,toc).in_common #watch + scr_toc=SiSU_EPUB::Source::ScrollHeadAndSegToc.new(@md,toc).in_common #watch SiSU_EPUB::Source::Seg.new(@md,data).songsheet - SiSU_EPUB::Source::Epub_output.new(@md).songsheet - rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error + SiSU_EPUB::Source::Output.new(@md).songsheet + rescue; SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error ensure unless @opt.cmd =~/[MV]/ #check maintenance flag texfiles=Dir["#{@env.processing_path.tune}/#{@opt.fns}*"] @@ -126,19 +126,19 @@ module SiSU_EPUB end end private - class XHtml_environment + class XHTML_Environment def initialize(particulars) @particulars=particulars @md,@env=particulars.md,particulars.env - @vz=SiSU_Env::Get_init.instance.skin - @env,@css,@symlnk=particulars.env,SiSU_Style::CSS.new,SiSU_Env::Create_system_link.new #home + @vz=SiSU_Env::GetInit.instance.skin + @env,@css,@symlnk=particulars.env,SiSU_Style::CSS.new,SiSU_Env::CreateSystemLink.new #home end def link_images @symlnk.images end def directories title=File.basename(@md.fns,'.rb') - SiSU_Env::SiSU_file.new(@md).mkdir.output.epub + SiSU_Env::FileOp.new(@md).mkdir.output.epub end def tuned_file_instructions @tell=SiSU_Screen::Ansi.new(@md.opt.cmd) @@ -157,10 +157,10 @@ module SiSU_EPUB end def scroll @scr_endnotes=[] - format_head_scroll=SiSU_EPUB_Format::Head_scroll.new(@md) + format_head_scroll=SiSU_EPUB_Format::HeadScroll.new(@md) @data.each do |dob| pg=dob.dup - unless pg.is =~/^code/ + unless pg.is ==:code if pg.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[\d*+]+ / endnote_array=[] if pg.obj=~/#{Mx[:en_a_o]}[\d*+].+?#{Mx[:en_a_c]}/m @@ -174,7 +174,7 @@ module SiSU_EPUB end endnote_array.flatten.each do |note| txt_obj={ txt: note } - format_scroll=SiSU_EPUB_Format::Format_scroll.new(@md,txt_obj) + format_scroll=SiSU_EPUB_Format::FormatScroll.new(@md,txt_obj) @scr_endnotes << format_scroll.endnote_body end end @@ -189,9 +189,10 @@ module SiSU_EPUB @@firstseg=nil def initialize(md=nil,data='') @md,@data=md,data - @vz=SiSU_Env::Get_init.instance.skin - @epub=SiSU_EPUB_Format::Head_information.new(@md) + @vz=SiSU_Env::GetInit.instance.skin + @epub=SiSU_EPUB_Format::HeadInformation.new(@md) @tell=SiSU_Screen::Ansi.new(@md.opt.cmd) if @md + @make=SiSU_Env::ProcessingSettings.new(@md) end def songsheet #extracts toc for scroll & seg SiSU_Screen::Ansi.new(@md.opt.cmd,'Toc').txt_grey if @md.opt.cmd =~/[MVv]/ @@ -211,15 +212,17 @@ module SiSU_EPUB @@toc[:seg] << %{
\n
} @@toc[:scr] << %{
\n
} md_opf_a_content << @epub.metadata_opf.manifest_content_sisu_toc - md_opf_a_spine << @epub.metadata_opf.spine_sisu_toc - md_opf_a_guide << @epub.metadata_opf.guide_sisu_toc + if @make.build.toc? + 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] @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' + if dob.is==:heading \ + || dob.is==:heading_insert dob_toc=dob.dup toc=case dob_toc.ln when 1 @@ -234,7 +237,8 @@ module SiSU_EPUB @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 + 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 @level_a_first_occurrence=false @@ -242,7 +246,7 @@ module SiSU_EPUB 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 + SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_1 when 2 @s_b_no +=1 name_s_b='section_b' + @s_b_no.to_s @@ -257,7 +261,7 @@ module SiSU_EPUB 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 + SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_2 when 3 @s_c_no +=1 name_s_c='section_c' + @s_c_no.to_s @@ -271,7 +275,7 @@ module SiSU_EPUB 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 + SiSU_EPUB::Source::Toc.new(@md,dob_toc).level_3 when 4 @ncx_cls=[] @nav_no+=1 @@ -281,9 +285,9 @@ module SiSU_EPUB 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) - Toc.new(@md,dob_toc).level_4 - when 5; Toc.new(@md,dob_toc).level_5 - when 6; Toc.new(@md,dob_toc).level_6 + 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 else nil end toc.each do |k,d| @@ -298,8 +302,7 @@ module SiSU_EPUB begin @@toc[:seg] << toc[:seg] @@toc[:scr] << toc[:seg] - @@toc[:seg_mini] << toc[:seg_mini] if toc[:seg_mini] - rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error + rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error end end end @@ -318,22 +321,18 @@ module SiSU_EPUB @@toc[:opf] << @epub.metadata_opf.guide_open << md_opf_a_guide << @epub.metadata_opf.guide_close @@toc[:opf] << @epub.metadata_opf.package_close @@toc[:opf]=@@toc[:opf].flatten - Epub_output.new(@md,@@toc[:opf]).epub_metadata_opf - Epub_output.new(@md,@@toc[:ncx]).epub_toc_ncx + SiSU_EPUB::Source::Output.new(@md,@@toc[:opf]).epub_metadata_opf + SiSU_EPUB::Source::Output.new(@md,@@toc[:ncx]).epub_toc_ncx @md.firstseg=@@firstseg @@toc end - def minitoc - minitoc=@@toc[:seg_mini].join("\n") - '
' + minitoc + '
' - end protected def level_1 dob=@data linkname,link=dob.obj.strip,dob.ocn if link \ and link !~/#/ #% keep eye on link - p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,link) + p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,link) end title=if dob.obj !~/Document Information/; linkname else @@ -342,20 +341,12 @@ module SiSU_EPUB end toc={} txt_obj={ txt: title } - format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj) + format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) toc[:seg]=if dob.name =~/^meta/ \ and dob.obj =~/Document Information/ #check format_toc.lev0 else format_toc.lev1 end - toc[:seg_mini]=if dob.name =~/^meta/ \ - and dob.obj =~/Document Information/ #check - x=if @md.concord_make - format_toc.mini_concord_tail - else format_toc.mini_tail - end - else format_toc.mini_lev1 - end title=if dob.ocn ==0 if dob.name =~/^meta/ \ and dob.obj =~/Document Information/ @@ -370,7 +361,7 @@ module SiSU_EPUB %{#{linkname}} end txt_obj={ txt: title } - format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj) + format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) toc[:scr]=if dob.name =~/^meta/ \ and dob.obj =~/Document Information/ format_toc.lev0 @@ -383,17 +374,16 @@ module SiSU_EPUB linkname,ocn=dob.obj.strip,dob.ocn if ocn \ and ocn !~/#/ - p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn) + p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) end txt_obj={ txt: linkname } - format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj) + format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) toc={} toc[:seg]=format_toc.lev2 - toc[:seg_mini]=format_toc.mini_lev2 if p_num title=%{#{p_num.goto}#{linkname}} txt_obj={ txt: title } - format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj) + format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) toc[:scr]=format_toc.lev2 end toc @@ -403,17 +393,16 @@ module SiSU_EPUB linkname,ocn=dob.obj.strip,dob.ocn if ocn \ and ocn !~/#/ - p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn) + p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) end txt_obj={ txt: linkname } - format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj) + format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) toc={} toc[:seg]=format_toc.lev3 - toc[:seg_mini]=format_toc.mini_lev3 if p_num title=%{#{p_num.goto}#{linkname}} txt_obj={ txt: title } - format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj) + format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) toc[:scr]=format_toc.lev3 end toc @@ -421,7 +410,7 @@ module SiSU_EPUB def level_4 dob=@data linkname,ocn=dob.obj.strip,dob.ocn - p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn) if ocn + p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) if ocn if dob.ln==4 seg_link=%{ #{dob.obj} @@ -432,15 +421,14 @@ module SiSU_EPUB %{} + %{\\1 \\2 }) end - p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn) if ocn + p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) if ocn txt_obj={ txt: seg_link } - format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj) + format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) toc={} toc[:seg]=format_toc.lev4 - toc[:seg_mini]=format_toc.mini_lev4 title=%{#{p_num.goto}#{linkname}} if p_num txt_obj={ txt: title } - format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj) + format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) toc[:scr]=format_toc.lev4 toc end @@ -450,17 +438,16 @@ module SiSU_EPUB toc={} if ocn \ and ocn !~/#/ - p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn) + p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) lnk_n_txt=%{ #{linkname} } txt_obj={ txt: lnk_n_txt } - format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj) + format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) toc[:seg]=format_toc.lev5 - toc[:seg_mini]=format_toc.mini_lev5 title=%{#{p_num.goto}#{linkname}} txt_obj={ txt: title } - format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj) + format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) toc[:scr]=format_toc.lev5 end toc @@ -471,72 +458,48 @@ module SiSU_EPUB toc={} if ocn \ and ocn !~/#/ - p_num=SiSU_EPUB_Format::Paragraph_number.new(@md,ocn) + p_num=SiSU_EPUB_Format::ParagraphNumber.new(@md,ocn) lnk_n_txt=%{ #{linkname} } txt_obj={ txt: lnk_n_txt } - format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj) + format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) toc[:seg]=format_toc.lev6 - toc[:seg_mini]=format_toc.mini_lev6 title=%{#{p_num.goto}#{linkname}} txt_obj={ txt: title } - format_toc=SiSU_EPUB_Format::Format_toc.new(@md,txt_obj) + format_toc=SiSU_EPUB_Format::FormatToc.new(@md,txt_obj) toc[:scr]=format_toc.lev6 end toc end - def level_crosslink - dob=@data - if dob !~/^4~!/ - dob.gsub!(/^4~!\s+(\S+)\s+(.+)/, - %{ -
- #{@png.crosslink_ext} -   \\2 - <\/a> -
-}) - else - dob.gsub!(/^4~!\s+(\S+)\s+(.+)/, - %{
- - - #{@png.crosslink} -   \\2 - <\/a> -
-}) - end - end end - class Scroll_head_and_segtoc < Toc + class ScrollHeadAndSegToc < Toc def initialize(md='',toc='',links_guide_toc='') @md,@toc,@links_guide_toc=md,toc,links_guide_toc - @vz=SiSU_Env::Get_init.instance.skin + @vz=SiSU_Env::GetInit.instance.skin end def in_common toc_shared=[] segtoc=[] SiSU_Screen::Ansi.new(@md.opt.cmd,'Scroll & Segtoc').txt_grey if @md.opt.cmd =~/[MVv]/ - format_head_toc=SiSU_EPUB_Format::Head_toc.new(@md) + format_head_toc=SiSU_EPUB_Format::HeadToc.new(@md) dochead=format_head_toc.head - dochead.gsub!(/toc\.(html)/,'doc.\1') #kludge + dochead=dochead.gsub(/toc\.(html)/,'doc.\1') #kludge toc_shared << dochead #<< ads.div.major segtoc << format_head_toc.head #<< ads.div.major - if SiSU_EPUB_Format::Head_toc.method_defined? :toc_head_escript + if SiSU_EPUB_Format::HeadToc.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 - rights=SiSU_EPUB_Tune::Clean_xhtml.new(rights).clean + rights=SiSU_EPUB_Tune::CleanXHTML.new(rights).clean end if defined? @md.notes.prefix_b \ and @md.notes.prefix_b prefix_b=format_head_toc.prefix_b - prefix_b=SiSU_EPUB_Tune::Clean_xhtml.new(prefix_b).clean + prefix_b=SiSU_EPUB_Tune::CleanXHTML.new(prefix_b).clean end seg_toc_band=format_head_toc.seg_head_navigation_band seg_toc_band_bottom=format_head_toc.seg_head_navigation_band_bottom @@ -544,7 +507,7 @@ module SiSU_EPUB doc_title_endnote=@md.title.full.gsub(/(\*+)/,'\1') tmp_head=doc_title_endnote + "\n" txt_obj={ txt: tmp_head } - format_txt_obj=SiSU_EPUB_Format::Format_text_object.new(@md,txt_obj) + format_txt_obj=SiSU_EPUB_Format::FormatTextObject.new(@md,txt_obj) toc_shared << format_txt_obj.center_bold segtoc << format_txt_obj.center_bold if defined? @md.creator.author \ @@ -552,7 +515,7 @@ module SiSU_EPUB creator_endnote=@md.creator.author.gsub(/(\*+)/,%{ \\1}) tmp_head=creator_endnote + "\n" txt_obj={ txt: tmp_head } - format_txt_obj=SiSU_EPUB_Format::Format_text_object.new(@md,txt_obj) + format_txt_obj=SiSU_EPUB_Format::FormatTextObject.new(@md,txt_obj) toc_shared << format_txt_obj.center_bold segtoc << format_txt_obj.center_bold end @@ -589,23 +552,24 @@ module SiSU_EPUB #Segtoc tail added here segtoc << seg_toc_band_bottom segtoc << format_head_toc.xhtml_close - segtoc.flatten!.compact! - Epub_output.new(@md,segtoc).segtoc + segtoc=segtoc.flatten.compact #watch + SiSU_EPUB::Source::Output.new(@md,segtoc).segtoc segtoc=[] @toc[:scr],@toc[:seg]=[],[] toc_shared end end - class Table < SiSU_XHTML_table::Table_xhtml + class Table < SiSU_XHTML_Table::TableXHTML end - class Seg < SiSU_EPUB_seg::Seg + class Seg < SiSU_EPUB_Seg::Seg end - class Epub_output + class Output def initialize(md,output='') @md,@output=md,output @epub_doc="#{@md.fnb}.epub" - @epub_header=SiSU_EPUB_Format::Head_information.new(@md) - @make=SiSU_Env::Create_file.new(@md.fns) + @epub_header=SiSU_EPUB_Format::HeadInformation.new(@md) + @make=SiSU_Env::ProcessingSettings.new(@md) + @make_file=SiSU_Env::CreateFile.new(@md.fns) end def songsheet mimetype @@ -616,42 +580,42 @@ module SiSU_EPUB output_zip end def mimetype - out=@make.epub.mimetype + out=@make_file.epub.mimetype out<<@epub_header.mimetype out.close end def metainf_container #container.xml file in META-INF directory - out=@make.epub.metainf_cont + out=@make_file.epub.metainf_cont out<<@epub_header.metainf_container out.close end def css - out=@make.epub.xhtml_css - out << SiSU_EPUB_Format::Css.new.css_epub_xhtml + out=@make_file.epub.xhtml_css + out << SiSU_EPUB_Format::CSS.new.css_epub_xhtml out.close end def epub_toc_ncx begin - out=@make.epub.toc_ncx + out=@make_file.epub.toc_ncx @output.each do |para| unless para =~/\A\s*\Z/ out.puts para end end out.close - rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error + rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error end end def epub_metadata_opf begin - out=@make.epub.metadata + out=@make_file.epub.metadata @output.each do |para| unless para =~/\A\s*\Z/ out.puts para end end out.close - rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error + rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error end end def images @@ -686,18 +650,17 @@ module SiSU_EPUB end def segtoc begin - filename_html_segtoc=@make.epub.xhtml_segtoc - filename_html_index=@make.epub.xhtml_index - @output.each do |para| - para.strip! - unless para =~/\A\s*\Z/ - filename_html_segtoc.puts para,"\n" - filename_html_index.puts para,"\n" + if @make.build.toc? + filename_html_index=@make_file.epub.xhtml_index + @output.each do |para| + para=para.strip + unless para =~/\A\s*\Z/ + filename_html_index.puts para,"\n" + end end + filename_html_index.close end - filename_html_segtoc.close - filename_html_index.close - rescue; SiSU_Errors::Info_error.new($!,$@,@md.opt.cmd,@md.fns).error + rescue; SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error end end end -- cgit v1.2.3