diff options
Diffstat (limited to 'lib/sisu/v3/epub_format.rb')
-rw-r--r-- | lib/sisu/v3/epub_format.rb | 314 |
1 files changed, 97 insertions, 217 deletions
diff --git a/lib/sisu/v3/epub_format.rb b/lib/sisu/v3/epub_format.rb index 31bae51b..e11f5d3d 100644 --- a/lib/sisu/v3/epub_format.rb +++ b/lib/sisu/v3/epub_format.rb @@ -58,31 +58,27 @@ =end module SiSU_EPUB_Format include SiSU_Viz - class Paragraph_number + class ParagraphNumber def initialize(md,ocn) @md,@ocn=md,ocn.to_s @ocn ||='' - vz=SiSU_Env::Get_init.instance.skin - @skin_no_ocn=if defined? vz.ocn_display_off \ - and vz.ocn_display_off==true - true - else false - end + vz=SiSU_Env::GetInit.instance.skin end def ocn_display - if @md.markup.inspect =~/no_ocn/ \ - or @md.opt.mod.inspect =~/--no-ocn/ \ - or @skin_no_ocn - ocn_class='ocn_off' - @ocn.gsub(/^(\d+|)$/, - %{<label class="#{ocn_class}"> </label>}) - elsif @ocn.to_i==0 - @ocn.gsub(/^(\d+|)$/, - %{<label class="#{ocn_class}"> </label>}) - else + @make=SiSU_Env::ProcessingSettings.new(@md) + if @make.build.ocn? ocn_class='ocn' + if @ocn.to_i==0 + @ocn.gsub(/^(\d+|)$/, + %{<label class="#{ocn_class}"> </label>}) + else + @ocn.gsub(/^(\d+|)$/, + %{<label class="#{ocn_class}"><a href="#o\\1" class="lnk#{ocn_class}">\\1</a></label>}) + end + else + ocn_class='ocn_off' @ocn.gsub(/^(\d+|)$/, - %{<label class="#{ocn_class}"><a href="#o\\1" class="lnk#{ocn_class}">\\1</a></label>}) + %{<label class="#{ocn_class}"> </label>}) end end def name @@ -95,7 +91,7 @@ module SiSU_EPUB_Format %{<a href="##{@ocn}">} end end - class Css + class CSS def css_epub_xhtml <<WOK /* SiSU epub css default stylesheet */ @@ -1198,36 +1194,6 @@ module SiSU_EPUB_Format background-color: #f9f9aa; } - .minitoc { - font-weight: normal; - margin-top: 2px; - margin-bottom: 2px; - } - h1.minitoc, h2.minitoc, h3.minitoc { - margin-left: 0em; - font-weight: bold; - text-align: left; - font-size: 90%; - margin-top: 4px; - margin-bottom: 4px; - } - h4.minitoc { - margin-left: 0em; - font-size: 90%; - } - h5.minitoc { - margin-left: 1em; - font-size: 85%; - } - h6.minitoc { - margin-left: 2em; - font-size: 85%; - } - h0.minitoc { - margin-left: 0em; - font-size: 90%; - } - h1.c, h2.c, h3.c, h4.c, h5.c, h6.c, p.c { text-align: center } @@ -1252,14 +1218,14 @@ module SiSU_EPUB_Format WOK end end - class Head_information + class HeadInformation include SiSU_Viz attr_reader :md,:rdf,:vz def initialize(md) @md=md # DublinCore 1 - title - @vz=SiSU_Env::Get_init.instance.skin - @css=SiSU_Env::CSS_stylesheet.new(md) + @vz=SiSU_Env::GetInit.instance.skin + @css=SiSU_Env::CSS_Stylesheet.new(md) @seg_name_xhtml=(SiSU_EPUB::Source::Seg.new.seg_name_xhtml || []) @seg_name_xhtml_tracker=(SiSU_EPUB::Source::Seg.new.seg_name_xhtml_tracker || []) @index='index' @@ -1493,12 +1459,12 @@ WOK m=(m.empty?) \ ? (surname + other_names) : (m + '; ' + surname + ', ' + other_names) - m.gsub!(/</,'<'); m.gsub!(/>/,'>') - m.gsub!(/<br(?: \/)?>/,';') + m=m.gsub(/</,'<').gsub(/>/,'>'). + gsub(/<br(?: \/)?>/,';') end x=@md.creator.author.dup - x.gsub!(/</,'<'); x.gsub!(/>/,'>') - x.gsub!(/<br(?: \/)?>/,'<br />') + x=x.gsub(/</,'<').gsub(/>/,'>'). + gsub(/<br(?: \/)?>/,'<br />') %{\n <dc:creator opf:file-as="#{m}" opf:role="aut">#{x}</dc:creator>} else '' end @@ -1515,12 +1481,12 @@ WOK m=(m.empty?) \ ? (surname + other_names) : (m + '; ' + surname + ', ' + other_names) - m.gsub!(/</,'<'); m.gsub!(/>/,'>') - m.gsub!(/<br(?: \/)?>/,';') + m=m.gsub(/</,'<').gsub(/>/,'>'). + gsub(/<br(?: \/)?>/,';') end x=@md.creator.editor.dup - x.gsub!(/</,'<'); x.gsub!(/>/,'>') - x.gsub!(/<br(?: \/)?>/,'<br />') + x=x.gsub(/</,'<').gsub(/>/,'>'). + gsub(/<br(?: \/)?>/,'<br />') %{\n <dc:creator opf:file-as="#{m}" opf:role="edt">#{x}</dc:creator>} else '' end @@ -1537,12 +1503,12 @@ WOK m=(m.empty?) \ ? (surname + other_names) : (m + '; ' + surname + ', ' + other_names) - m.gsub!(/</,'<'); m.gsub!(/>/,'>') - m.gsub!(/<br(?: \/)?>/,';') + m=m.gsub(/</,'<').gsub(/>/,'>'). + gsub(/<br(?: \/)?>/,';') end x=@md.creator.translator.dup - x.gsub!(/</,'<'); x.gsub!(/>/,'>') - x.gsub!(/<br(?: \/)?>/,'<br />') + x=x.gsub(/</,'<').gsub(/>/,'>'). + gsub(/<br(?: \/)?>/,'<br />') %{\n <dc:creator opf:file-as="#{m}" opf:role="trl">#{x}</dc:creator>} else '' end @@ -1559,28 +1525,28 @@ WOK m=(m.empty?) \ ? (surname + other_names) : (m + '; ' + surname + ', ' + other_names) - m.gsub!(/</,'<'); m.gsub!(/>/,'>') - m.gsub!(/<br(?: \/)?>/,';') + m=m.gsub(/</,'<').gsub(/>/,'>'). + gsub(/<br(?: \/)?>/,';') end x=@md.creator.illustrator.dup - x.gsub!(/</,'<'); x.gsub!(/>/,'>') - x.gsub!(/<br(?: \/)?>/,'<br />') + x=x.gsub(/</,'<').gsub(/>/,'>'). + gsub(/<br(?: \/)?>/,'<br />') %{\n <dc:creator opf:file-as="#{m}" opf:role="ill">#{x}</dc:creator>} else '' end date_published=if defined? @md.date.published \ and @md.date.published =~/\S+/ x=@md.date.published.dup - x.gsub!(/</,'<'); x.gsub!(/>/,'>') - x.gsub!(/<br(?: \/)?>/,'<br />') + x=x.gsub(/</,'<').gsub(/>/,'>'). + gsub(/<br(?: \/)?>/,'<br />') %{\n <dc:date opf:event="published">#{x}</dc:date>} else '' end subject=if defined? @md.classify.subject \ and @md.classify.subject =~/\S+/ x=@md.classify.subject.dup - x.gsub!(/</,'<'); x.gsub!(/>/,'>') - x.gsub!(/<br(?: \/)?>/,'<br />') + x=x.gsub(/</,'<').gsub(/>/,'>'). + gsub(/<br(?: \/)?>/,'<br />') %{\n <dc:subject>#{x}</dc:subject>} else '' end @@ -1596,7 +1562,7 @@ WOK %{\n <dc:rights>#{rights}</dc:rights>} else '' end - f=SiSU_Env::SiSU_file.new(@md) + f=SiSU_Env::FileOp.new(@md) <<WOK <metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf" @@ -1718,7 +1684,7 @@ WOK </html>} end end - class Head_toc < Head_information + class HeadToc < HeadInformation def initialize(md) super(md) @md=md @@ -1743,7 +1709,7 @@ WOK def manifest_link(text) %{ <a href="#{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}" target="_top" #{@vz.js_manifest}>#{text}</a>} end - def concordance_link(text) #watch fix removed font size 2 + def concordance_link(text) if @md.concord_make %{<a href="#{@md.file.base_filename.html_concordance}" target="_top" #{@vz.js_concordance}> #{text} @@ -1829,7 +1795,7 @@ WOK #{@vz.table_close}} end end - class Head_seg < Head_information + class HeadSeg < HeadInformation def initialize(md) super(md) end @@ -1850,10 +1816,8 @@ WOK <hr class="endnote" /> } end - def title_banner(title,subtitle,creator) - end end - class Head_scroll < Head_toc + class HeadScroll < HeadToc def initialize(md) super(md) end @@ -1870,8 +1834,8 @@ WOK #{@vz.table_close}} end end - class Format_text_object - @vz=SiSU_Env::Get_init.instance.skin + class FormatTextObject + @vz=SiSU_Env::GetInit.instance.skin attr_accessor :md,:t_o,:txt,:ocn,:format,:table,:link,:linkname,:paranum,:p_num,:headname,:banner,:url def initialize(md,t_o) @md,@t_o=md,t_o @@ -1903,7 +1867,7 @@ WOK @named=nametags_seg(@dob) @txt=((defined? t_o.obj) ? t_o.obj : nil) @ocn=((defined? t_o.ocn) ? t_o.ocn.to_s : nil) - @headname=((t_o.is=='heading' and defined? t_o.name) ? t_o.name : nil) + @headname=((t_o.is==:heading and defined? t_o.name) ? t_o.name : nil) else if @md.opt.cmd =~/M/ p __FILE__ +':'+ __LINE__.to_s @@ -1912,10 +1876,10 @@ WOK end end if @txt and not @txt.empty? - @txt.gsub!(/#{Mx[:mk_o]}[-~]##{Mx[:mk_c]}/,'') + @txt=@txt.gsub(/#{Mx[:mk_o]}[-~]##{Mx[:mk_c]}/,'') end - @p_num=Paragraph_number.new(@md,@ocn) - @vz=SiSU_Env::Get_init.instance.skin + @p_num=ParagraphNumber.new(@md,@ocn) + @vz=SiSU_Env::GetInit.instance.skin end def nametags_seg(dob) #FIX tags='' @@ -1951,60 +1915,60 @@ WOK </div> } end - def para_form_css(tag,attrib) # regular paragraphs shaped here + def para_form_css(tag,attrib,txt) # regular paragraphs shaped here ul=ulc='' ul,ulc="<ul>\n ","\n </ul>" if @tag =~/li/ %{ <div class="substance"> #{@p_num.ocn_display} #{ul}<#{tag} class="#{attrib}" #{@p_num.id}> - #{@named}#{@txt} + #{@named}#{txt} </#{tag}>#{ulc} </div> } end def para - para_form_css('p','norm') + para_form_css('p','norm',@txt) end def group - para_form_css('p','group') + para_form_css('p','group',@txt) end def block - para_form_css('p','block') + para_form_css('p','block',@txt) end def alt - para_form_css('p','alt') + para_form_css('p','alt',@txt) end def verse - para_form_css('p','verse') + para_form_css('p','verse',@txt) end def code - para_form_css('p','code') + para_form_css('p','code',@txt) end def center - para_form_css('p','center') + para_form_css('p','center',@txt) end def bold - para_form_css('p','bold') + para_form_css('p','bold',@txt) end def bullet - para_form_css('li','bullet') + para_form_css('li','bullet',@txt) end def table @txt=if @t_o.obj !~/^<table\s/ - table=SiSU_XHTML_shared::Table_xhtml.new(@t_o) #move, make happen earlier - @txt=table.table.obj + table=SiSU_XHTML_Shared::TableXHTML.new(@t_o) #move, make happen earlier + table.table.obj else @txt end - para_form_css('p','norm') + para_form_css('p','norm',@txt) end def break - @txt.gsub!(/#{Mx[:br_page_new]}|#{Mx[:br_page]}/,'<hr /><br />') - @txt.gsub!(/#{Mx[:br_obj]}/,'<hr style="width:30%" /><br />') - para_form_css('p','norm') + @txt=@txt.gsub(/#{Mx[:br_page_new]}|#{Mx[:br_page]}/,'<hr /><br />'). + gsub(/#{Mx[:br_obj]}/,'<hr style="width:30%" /><br />') + para_form_css('p','norm',@txt) end def format(tag,attrib) - para_form_css(tag,attrib) + para_form_css(tag,attrib,@txt) end def title_heading(tag,attrib) %{ @@ -2033,8 +1997,8 @@ WOK def title_heading4 '' end - def seg_heading_sub(tag,attrib) - @txt.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ') + def seg_heading_sub(tag,attrib,txt) + txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ') %{ <div class="substance"> #{@p_num.ocn_display} @@ -2055,10 +2019,10 @@ WOK } end def seg_heading5 - seg_heading_sub('p','bold') + seg_heading_sub('p','bold',@txt) end def seg_heading6 - seg_heading_sub('p','bold') + seg_heading_sub('p','bold',@txt) end def dl #check :trailer "<dl><b>#{@txt}</b> #{@trailer}</dl>" @@ -2068,18 +2032,19 @@ WOK </p> </div>' end - def gsub_body - case @txt + def gsub_body #unused + @txt=case @txt when /^(?:#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]}\s*)?\((i+|iv|v|vi+|ix|x|xi+)\)/ - @txt.gsub!(/^\((i+|iv|v|vi+|ix|x|xi+)\)/,'<b>(\1)</b>') - @txt.gsub!(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((i+|iv|v|vi+|ix|x|xi+)\)/,'\1<b>(\2)</b>') + @txt.gsub(/^\((i+|iv|v|vi+|ix|x|xi+)\)/,'<b>(\1)</b>'). + gsub(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((i+|iv|v|vi+|ix|x|xi+)\)/,'\1<b>(\2)</b>') when /^(?:#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]}\s*)?\(?(\d|[a-z])+\)/ - @txt.gsub!(/^\((\d+|[a-z])+\)/,'<b>(\1)</b>') - @txt.gsub!(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((\d+|[a-z])+\)/,'\1<b>(\2)</b>') + @txt.gsub(/^\((\d+|[a-z])+\)/,'<b>(\1)</b>'). + gsub(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((\d+|[a-z])+\)/,'\1<b>(\2)</b>') when /^\s*\d{1,3}\.\s/ - @txt.gsub!(/^\s*(\d+\.)/,'<b>\1</b>') + @txt.gsub(/^\s*(\d+\.)/,'<b>\1</b>') when /^\s*[A-Z]\.\s/ - @txt.gsub!(/^\s*([A-Z]\.)/,'<b>\1</b>') + @txt.gsub(/^\s*([A-Z]\.)/,'<b>\1</b>') + else @txt end end def bold_para @@ -2091,9 +2056,9 @@ WOK #{@vz.table_close}} end - def bold_heading - @txt.gsub!(/[1-9]~\S+/,'') - @txt.gsub!(/[1-9]~/,'') + def bold_heading #unused + @txt=@txt.gsub(/[1-9]~\S+/,''). + gsub(/[1-9]~/,'') %{<p class="bold"> #{@txt} </p> @@ -2114,62 +2079,16 @@ WOK %{<p class="centerbold">#{@txt}</p>\n} end end - class Format_scroll < Format_text_object + class FormatScroll < FormatTextObject def initialize(md,txt) super(md,txt) - @vz=SiSU_Env::Get_init.instance.skin + @vz=SiSU_Env::GetInit.instance.skin end end - class Format_seg < Format_text_object + class FormatSeg < FormatTextObject def initialize(md,txt) super(md,txt) end - def navigation_toc_lev1_advert - %{#{@banner.home_button}\n -<p class="center"> -#{@txt} -#{@two} -</a></p>} - end - def navigation_toc_lev1 - %{#{@banner.nav_toc}} - end - def navigation_toc_lev2 #change bold use css - %{<table summary="navigation segment level 2"> -<tr><td width ="20"> -</td> -<td> - <font size="3" #{@vz.font_face}> - <b>#{@txt}</b> - </font> - </p> -#{@vz.table_close}} - end - def navigation_toc_lev3 #change bold use css - %{<table summary="navigation segment level 3"> -<tr><td width ="20"> -</td> -<td> - <font size="3" #{@vz.font_face}> - <b>#{@txt}</b> - </font> - </p> -#{@vz.table_close}} - end - def navigation_toc_lev4 - %{<table summary="navigation segment level 4"> -<tr><td width ="80"> -</td> -<td> -<p> - #{@txt} -</p> -#{@vz.table_close}} - end - def navigation_toc_lev5 - end - def navigation_toc_lev6 - end def endnote_seg_body(fn='') #FIX #url construction keep within single line... BUG WATCH 200408 fn='doc' if fn.to_s.empty? #you may wish to reconsider, sends to 'doc' where no segment info %{ @@ -2179,9 +2098,8 @@ WOK } end def clean(txt) - txt.gsub!(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/,'') - txt.gsub!(/#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'') - txt + txt=txt.gsub(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/,''). + gsub(/#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/,'') end def subtoc_lev(tag,attrib) @txt=clean(@txt) @@ -2193,10 +2111,10 @@ WOK note='' if txt =~/(#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})/m # had \s* at end note=$1 - note.gsub!(/[\n\s]+/m,' ') - txt.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ') - txt.gsub!(/<a[\n\s]+"[\n\s]+href="#note_ref\d+"> <sup id="note\d+">\d+<\/sup> /m,'') - txt.gsub!(/<a[\n\s]+"[\n\s]+href="#note_ref\d+">#{Mx[:nbsp]}<sup id="note\d+">\d+<\/sup>#{Mx[:nbsp]}/m,'') #remove + note=note.gsub(/[\n\s]+/m,' ') + txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' '). + gsub(/<a[\n\s]+"[\n\s]+href="#note_ref\d+"> <sup id="note\d+">\d+<\/sup> /m,''). + gsub(/<a[\n\s]+"[\n\s]+href="#note_ref\d+">#{Mx[:nbsp]}<sup id="note\d+">\d+<\/sup>#{Mx[:nbsp]}/m,'') #remove end %{<#{tag} class="#{attrib}"> <a href="#o#{@ocn}"><i>#{txt}</i></a> #{note} @@ -2208,8 +2126,8 @@ WOK def subtoc_lev6 subtoc_lev('h6','subtoc') if @txt end - def heading_sub(tag,attrib) - @txt.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ') + def heading_sub(tag,attrib,txt) + txt=txt.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ') %{ <div class="substance"> #{@p_num.ocn_display} @@ -2231,10 +2149,10 @@ WOK } end def heading5 - heading_sub('p','bold') + heading_sub('p','bold',@txt) end def heading6 - heading_sub('p','bold') + heading_sub('p','bold',@txt) end def navigation_heading4 %{<table summary="navigation segment heading 4" width=100% bgcolor="#08163f" border="0"> @@ -2258,7 +2176,7 @@ WOK %{<p class="centerbold">#{@txt}</p>} end end - class Format_toc < Format_text_object + class FormatToc < FormatTextObject def initialize(md,txt) super(md,txt) end @@ -2300,44 +2218,6 @@ WOK def lev0 #docinfo lev('h0','toc') end - def mini_lev1 - lev('h1','minitoc') - end - def mini_lev2 - lev('h2','minitoc') - end - def mini_lev3 - lev('h3','minitoc') - end - def mini_lev4 - lev('h4','minitoc') - end - def mini_lev5 - lev('h5','minitoc') - end - def mini_lev6 - lev('h6','minitoc') - end - def mini_lev0 #docinfo - lev('h0','minitoc') - end - def mini_tail - %{ - <h4 class="minitoc"> - <a href="sisu_manifest.html">Manifest (alternative outputs)</a> - </h4> -} - end - def mini_concord_tail - %{ - <h4 class="minitoc"> - <a href="concordance.html">Concordance (wordlist)</a> - </h4> - <h4 class="minitoc"> - <a href="sisu_manifest.html">Manifest (alternative outputs)</a> - </h4> -} - end end end __END__ |