<!DOCTYPE html>
<html> <head> <meta charset=“UTF-8”>
<title>class EPUBMaker::EPUBv3 - review-2.2.0 Documentation</title>
<script type=“text/javascript”>
var rdoc_rel_prefix = "../"; var index_rel_prefix = "../";
</script>
<script src=“../js/jquery.js”></script> <script src=“../js/darkfish.js”></script>
<link href=“../css/fonts.css” rel=“stylesheet”> <link href=“../css/rdoc.css” rel=“stylesheet”>
<body id=“top” role=“document” class=“class”> <nav role=“navigation”>
<div id="project-navigation"> <div id="home-section" role="region" title="Quick navigation" class="nav-section"> <h2> <a href="../index.html" rel="home">Home</a> </h2> <div id="table-of-contents-navigation"> <a href="../table_of_contents.html#pages">Pages</a> <a href="../table_of_contents.html#classes">Classes</a> <a href="../table_of_contents.html#methods">Methods</a> </div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden"> <form action="#" method="get" accept-charset="utf-8"> <div id="search-field-wrapper"> <input id="search-field" role="combobox" aria-label="Search" aria-autocomplete="list" aria-controls="search-results" type="text" name="search" placeholder="Search" spellcheck="false" title="Type to search, Up and Down to navigate, Enter to load"> </div> <ul id="search-results" aria-label="Search Results" aria-busy="false" aria-expanded="false" aria-atomic="false" class="initially-hidden"></ul> </form>
</div>
</div> <div id="class-metadata"> <div id="parent-class-section" class="nav-section"> <h3>Parent</h3> <p class="link"><a href="EPUBCommon.html">EPUBMaker::EPUBCommon</a>
</div>
<!-- Method Quickref -->
<div id=“method-list-section” class=“nav-section”>
<h3>Methods</h3> <ul class="link-list" role="directory"> <li class="calls-super" ><a href="#method-c-new">::new</a> <li ><a href="#method-i-ncx">#ncx</a> <li ><a href="#method-i-opf">#opf</a> <li ><a href="#method-i-opf_manifest">#opf_manifest</a> <li ><a href="#method-i-opf_metainfo">#opf_metainfo</a> <li ><a href="#method-i-opf_tocx">#opf_tocx</a> <li ><a href="#method-i-produce">#produce</a> </ul>
</div>
</div>
</nav>
<main role=“main” aria-labelledby=“class-EPUBMaker::EPUBv3”>
<h1 id="class-EPUBMaker::EPUBv3" class="class"> class EPUBMaker::EPUBv3 </h1> <section class="description">
<p><a href=“EPUBv3.html”>EPUBv3</a> is EPUB version 3 producer.</p>
</section> <section id="5Buntitled-5D" class="documentation-section"> <section id="public-class-5Buntitled-5D-method-details" class="method-section"> <header> <h3>Public Class Methods</h3> </header> <div id="method-c-new" class="method-detail "> <div class="method-heading"> <span class="method-name">new</span><span class="method-args">(producer)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Construct object with parameter hash <code>params</code> and message
resource hash res
.</p>
<div class="method-calls-super"> Calls superclass method <a href="EPUBCommon.html#method-c-new">EPUBMaker::EPUBCommon.new</a> </div> <div class="method-source-code" id="new-source"> <pre><span class="ruby-comment"># File lib/epubmaker/epubv3.rb, line 19</span>
<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>initialize</span>(<span class=“ruby-identifier”>producer</span>)
<span class="ruby-keyword">super</span> <span class="ruby-ivar">@opf_prefix</span> = {} <span class="ruby-keyword">if</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">"opf_prefix"</span>].<span class="ruby-identifier">present?</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">"opf_prefix"</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@opf_prefix</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span>
<span class=“ruby-keyword”>end</span></pre>
</div> </div> </div> </section> <section id="public-instance-5Buntitled-5D-method-details" class="method-section"> <header> <h3>Public Instance Methods</h3> </header> <div id="method-i-ncx" class="method-detail "> <div class="method-heading"> <span class="method-name">ncx</span><span class="method-args">(indentarray)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="ncx-source"> <pre><span class="ruby-comment"># File lib/epubmaker/epubv3.rb, line 198</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">ncx</span>(<span class="ruby-identifier">indentarray</span>) <span class="ruby-keyword">if</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">"epubmaker"</span>][<span class="ruby-string">"flattoc"</span>].<span class="ruby-identifier">nil?</span> <span class="ruby-identifier">ncx_main</span> = <span class="ruby-identifier">hierarchy_ncx</span>(<span class="ruby-string">"ol"</span>) <span class="ruby-keyword">else</span> <span class="ruby-identifier">ncx_main</span> = <span class="ruby-identifier">flat_ncx</span>(<span class="ruby-string">"ol"</span>, <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">"epubmaker"</span>][<span class="ruby-string">"flattocindent"</span>]) <span class="ruby-keyword">end</span> <span class="ruby-ivar">@body</span> = <span class="ruby-value"><<EOT <nav xmlns:epub="http://www.idpf.org/2007/ops" epub:type="toc" id="toc"> <h1 class="toc-title">#{CGI.escapeHTML(@producer.res.v("toctitle"))}</h1>
#{ncx_main} </nav> EOT</span>
<span class="ruby-ivar">@title</span> = <span class="ruby-constant">CGI</span>.<span class="ruby-identifier">escapeHTML</span>(<span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">res</span>.<span class="ruby-identifier">v</span>(<span class="ruby-string">"toctitle"</span>)) <span class="ruby-ivar">@language</span> = <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">'language'</span>] <span class="ruby-ivar">@stylesheets</span> = <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">"stylesheet"</span>] <span class="ruby-identifier">tmplfile</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-string">'./html/layout-html5.html.erb'</span>, <span class="ruby-constant">ReVIEW</span><span class="ruby-operator">::</span><span class="ruby-constant">Template</span><span class="ruby-operator">::</span><span class="ruby-constant">TEMPLATE_DIR</span>) <span class="ruby-identifier">tmpl</span> = <span class="ruby-constant">ReVIEW</span><span class="ruby-operator">::</span><span class="ruby-constant">Template</span>.<span class="ruby-identifier">load</span>(<span class="ruby-identifier">tmplfile</span>) <span class="ruby-keyword">return</span> <span class="ruby-identifier">tmpl</span>.<span class="ruby-identifier">result</span>(<span class="ruby-identifier">binding</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-opf" class="method-detail "> <div class="method-heading"> <span class="method-name">opf</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Return opf file content.</p> <div class="method-source-code" id="opf-source"> <pre><span class="ruby-comment"># File lib/epubmaker/epubv3.rb, line 30</span>
<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>opf</span>
<span class="ruby-ivar">@opf_metainfo</span> = <span class="ruby-identifier">opf_metainfo</span> <span class="ruby-ivar">@opf_manifest</span> = <span class="ruby-identifier">opf_manifest</span> <span class="ruby-ivar">@opf_toc</span> = <span class="ruby-identifier">opf_tocx</span> <span class="ruby-ivar">@package_attrs</span> = <span class="ruby-string">""</span> <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@opf_prefix</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-identifier">prefixes_str</span> = <span class="ruby-ivar">@opf_prefix</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-node">%Q|#{k}: #{v}|</span> }.<span class="ruby-identifier">join</span>(<span class="ruby-string">" "</span>) <span class="ruby-ivar">@package_attrs</span> <span class="ruby-operator"><<</span> <span class="ruby-node">" prefix=\"#{prefixes_str}\""</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">tmplfile</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-string">'./opf/epubv3.opf.erb'</span>, <span class="ruby-constant">ReVIEW</span><span class="ruby-operator">::</span><span class="ruby-constant">Template</span><span class="ruby-operator">::</span><span class="ruby-constant">TEMPLATE_DIR</span>) <span class="ruby-identifier">tmpl</span> = <span class="ruby-constant">ReVIEW</span><span class="ruby-operator">::</span><span class="ruby-constant">Template</span>.<span class="ruby-identifier">load</span>(<span class="ruby-identifier">tmplfile</span>) <span class="ruby-keyword">return</span> <span class="ruby-identifier">tmpl</span>.<span class="ruby-identifier">result</span>(<span class="ruby-identifier">binding</span>)
<span class=“ruby-keyword”>end</span></pre>
</div> </div> </div> <div id="method-i-opf_manifest" class="method-detail "> <div class="method-heading"> <span class="method-name">opf_manifest</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="opf_manifest-source"> <pre><span class="ruby-comment"># File lib/epubmaker/epubv3.rb, line 142</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">opf_manifest</span> <span class="ruby-identifier">s</span> = <span class="ruby-string">""</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-value"><<EOT <manifest> <item properties="nav" id="#{@producer.params["bookname"]}-toc.#{@producer.params["htmlext"]}" href="#{@producer.params["bookname"]}-toc.#{@producer.params["htmlext"]}" media-type="application/xhtml+xml"/> <item id="#{@producer.params["bookname"]}" href="#{@producer.params["cover"]}" media-type="application/xhtml+xml"/>
EOT</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">"coverimage"</span>] <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">contents</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">item</span><span class="ruby-operator">|</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">item</span>.<span class="ruby-identifier">media</span>.<span class="ruby-identifier">start_with?</span>(<span class="ruby-string">'image'</span>) <span class="ruby-operator">&&</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">basename</span>(<span class="ruby-identifier">item</span>.<span class="ruby-identifier">file</span>) <span class="ruby-operator">==</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">"coverimage"</span>] <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <item properties="cover-image" id="cover-#{item.id}" href="#{item.file}" media-type="#{item.media}"/>\n]</span> <span class="ruby-identifier">item</span>.<span class="ruby-identifier">id</span> = <span class="ruby-keyword">nil</span> <span class="ruby-keyword">break</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">contents</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">item</span><span class="ruby-operator">|</span> <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">item</span>.<span class="ruby-identifier">file</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/#/</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">item</span>.<span class="ruby-identifier">id</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-comment"># skip subgroup, or id=nil (for cover)</span> <span class="ruby-identifier">propstr</span> = <span class="ruby-string">""</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">item</span>.<span class="ruby-identifier">properties</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-identifier">propstr</span> = <span class="ruby-node">%Q[ properties="#{item.properties.sort.uniq.join(" ")}"]</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <item id="#{item.id}" href="#{item.file}" media-type="#{item.media}"#{propstr}/>\n]</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-string">%Q[ </manifest>\n]</span> <span class="ruby-identifier">s</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-opf_metainfo" class="method-detail "> <div class="method-heading"> <span class="method-name">opf_metainfo</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="opf_metainfo-source"> <pre><span class="ruby-comment"># File lib/epubmaker/epubv3.rb, line 46</span>
<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>opf_metainfo</span>
<span class="ruby-identifier">s</span> = <span class="ruby-string">""</span> <span class="ruby-node">%w[title language date type format source description relation coverage subject rights]</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">item</span><span class="ruby-operator">|</span> <span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-identifier">item</span>] <span class="ruby-keyword">if</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-identifier">item</span>].<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Array</span>) <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-identifier">item</span>].<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span>, <span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Hash</span>) <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <dc:#{item} id="#{item}-#{i}">#{CGI.escapeHTML(v["name"])}</dc:#{item}>\n]</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span>, <span class="ruby-identifier">val</span><span class="ruby-operator">|</span> <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-string">"name"</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <meta refines="##{item}-#{i}" property="#{name}">#{CGI.escapeHTML(val)}</meta>\n]</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <dc:#{item} id="#{item}-#{i}">#{CGI.escapeHTML(v.to_s)}</dc:#{item}>\n]</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">elsif</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-identifier">item</span>].<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Hash</span>) <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <dc:#{item} id="#{item}">#{CGI.escapeHTML(@producer.params[item]["name"])}</dc:#{item}>\n]</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-identifier">item</span>].<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span>, <span class="ruby-identifier">val</span><span class="ruby-operator">|</span> <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-string">"name"</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <meta refines="##{item}" property="#{name}">#{CGI.escapeHTML(val)}</meta>\n]</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <dc:#{item} id="#{item}">#{CGI.escapeHTML(@producer.params[item].to_s)}</dc:#{item}>\n]</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <meta property="dcterms:modified">#{@producer.params["modified"]}</meta>\n]</span> <span class="ruby-comment"># ID</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">"isbn"</span>].<span class="ruby-identifier">nil?</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <dc:identifier id="BookId">#{@producer.params["urnid"]}</dc:identifier>\n]</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <dc:identifier id="BookId">#{@producer.params["isbn"]}</dc:identifier>\n]</span> <span class="ruby-keyword">end</span> <span class="ruby-comment"># creator (should be array)</span> <span class="ruby-node">%w[a-adp a-ann a-arr a-art a-asn a-aqt a-aft a-aui a-ant a-bkp a-clb a-cmm a-csl a-dsr a-edt a-ill a-lyr a-mdc a-mus a-nrt a-oth a-pht a-prt a-red a-rev a-spn a-ths a-trc a-trl aut]</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">role</span><span class="ruby-operator">|</span> <span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-identifier">role</span>] <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-identifier">role</span>].<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span>, <span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Hash</span>) <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <dc:creator id="#{role}-#{i}">#{CGI.escapeHTML(v["name"])}</dc:creator>\n]</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <meta refines="##{role}-#{i}" property="role" scheme="marc:relators">#{role.sub('a-', '')}</meta>\n]</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span>, <span class="ruby-identifier">val</span><span class="ruby-operator">|</span> <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-string">"name"</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <meta refines="##{role.sub('a-', '')}-#{i}" property="#{name}">#{CGI.escapeHTML(val)}</meta>\n]</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <dc:creator id="#{role}-#{i}">#{CGI.escapeHTML(v)}</dc:creator>\n]</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <meta refines="##{role}-#{i}" property="role" scheme="marc:relators">#{role.sub('a-', '')}</meta>\n]</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span> <span class="ruby-comment"># contributor (should be array)</span> <span class="ruby-node">%w[adp ann arr art asn aqt aft aui ant bkp clb cmm csl dsr edt ill lyr mdc mus nrt oth pbd pbl pht prt red rev spn ths trc trl]</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">role</span><span class="ruby-operator">|</span> <span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-identifier">role</span>] <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-identifier">role</span>].<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span>, <span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Hash</span>) <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <dc:contributor id="#{role}-#{i}">#{CGI.escapeHTML(v["name"])}</dc:contributor>\n]</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <meta refines="##{role}-#{i}" property="role" scheme="marc:relators">#{role}</meta>\n]</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span>, <span class="ruby-identifier">val</span><span class="ruby-operator">|</span> <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-string">"name"</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <meta refines="##{role}-#{i}" property="#{name}">#{CGI.escapeHTML(val)}</meta>\n]</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <dc:contributor id="#{role}-#{i}">#{CGI.escapeHTML(v)}</dc:contributor>\n]</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <meta refines="##{role}-#{i}" property="role" scheme="marc:relators">#{role}</meta>\n]</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">role</span> <span class="ruby-operator">==</span> <span class="ruby-string">"prt"</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">role</span> <span class="ruby-operator">==</span> <span class="ruby-string">"pbl"</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Hash</span>) <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <dc:publisher id="pub-#{role}-#{i}">#{CGI.escapeHTML(v["name"])}</dc:publisher>\n]</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <meta refines="#pub-#{role}-#{i}" property="role" scheme="marc:relators">#{role}</meta>\n]</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span>, <span class="ruby-identifier">val</span><span class="ruby-operator">|</span> <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-string">"name"</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <meta refines="#pub-#{role}-#{i}" property="#{name}">#{CGI.escapeHTML(val)}</meta>\n]</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <dc:publisher id="pub-#{role}-#{i}">#{CGI.escapeHTML(v)}</dc:publisher>\n]</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <meta refines="#pub-#{role}-#{i}" property="role" scheme="marc:relators">prt</meta>\n]</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span> <span class="ruby-comment">## add custom <meta> element</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">"opf_meta"</span>].<span class="ruby-identifier">present?</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">"opf_meta"</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <meta property="#{k}">#{CGI.escapeHTML(v)}</meta>\n]</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">s</span>
<span class=“ruby-keyword”>end</span></pre>
</div> </div> </div> <div id="method-i-opf_tocx" class="method-detail "> <div class="method-heading"> <span class="method-name">opf_tocx</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="opf_tocx-source"> <pre><span class="ruby-comment"># File lib/epubmaker/epubv3.rb, line 173</span>
<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>opf_tocx</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">"epubmaker"</span>][<span class="ruby-string">"cover_linear"</span>] <span class="ruby-operator">&&</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">"epubmaker"</span>][<span class="ruby-string">"cover_linear"</span>] <span class="ruby-operator">!=</span> <span class="ruby-string">"no"</span> <span class="ruby-identifier">cover_linear</span> = <span class="ruby-string">"yes"</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">cover_linear</span> = <span class="ruby-string">"no"</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">s</span> = <span class="ruby-string">""</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">"direction"</span>] <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <spine page-progression-direction="#{@producer.params["direction"]}">\n]</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-string">%Q[ <spine>\n]</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <itemref idref="#{@producer.params["bookname"]}" linear="#{cover_linear}"/>\n]</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <itemref idref="#{@producer.params["bookname"]}-toc.#{@producer.params["htmlext"]}" />\n]</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">"toc"</span>] <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">contents</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">item</span><span class="ruby-operator">|</span> <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">item</span>.<span class="ruby-identifier">media</span> <span class="ruby-operator">!~</span> <span class="ruby-regexp">/xhtml\+xml/</span> <span class="ruby-comment"># skip non XHTML</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">%Q[ <itemref idref="#{item.id}"/>\n]</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-string">%Q[ </spine>\n]</span> <span class="ruby-identifier">s</span>
<span class=“ruby-keyword”>end</span></pre>
</div> </div> </div> <div id="method-i-produce" class="method-detail "> <div class="method-heading"> <span class="method-name">produce</span><span class="method-args">(epubfile, basedir, tmpdir)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Produce EPUB file <code>epubfile</code>. <code>basedir</code> points the
directory has contents. tmpdir
defines temporary
directory.</p>
<div class="method-source-code" id="produce-source"> <pre><span class="ruby-comment"># File lib/epubmaker/epubv3.rb, line 222</span>
<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>produce</span>(<span class=“ruby-identifier”>epubfile</span>, <span class=“ruby-identifier”>basedir</span>, <span class=“ruby-identifier”>tmpdir</span>)
<span class="ruby-identifier">produce_write_common</span>(<span class="ruby-identifier">basedir</span>, <span class="ruby-identifier">tmpdir</span>) <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-node">"#{tmpdir}/OEBPS/#{@producer.params["bookname"]}-toc.#{@producer.params["htmlext"]}"</span>, <span class="ruby-string">"w"</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">ncx</span>(<span class="ruby-identifier">f</span>, <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">"epubmaker"</span>][<span class="ruby-string">"ncxindent"</span>]) } <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">call_hook</span>(<span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">"epubmaker"</span>][<span class="ruby-string">"hook_prepack"</span>], <span class="ruby-identifier">tmpdir</span>) <span class="ruby-identifier">expoter</span> = <span class="ruby-constant">EPUBMaker</span><span class="ruby-operator">::</span><span class="ruby-constant">ZipExporter</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">tmpdir</span>, <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>) <span class="ruby-identifier">expoter</span>.<span class="ruby-identifier">export_zip</span>(<span class="ruby-identifier">epubfile</span>)
<span class=“ruby-keyword”>end</span></pre>
</div> </div> </div> </section> </section>
</main>
<footer id=“validator-badges” role=“contentinfo”>
<p><a href="http://validator.w3.org/check/referer">Validate</a> <p>Generated by <a href="http://docs.seattlerb.org/rdoc/">RDoc</a> 4.2.2. <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>