<!DOCTYPE html>

<html> <head> <meta content=“text/html; charset=UTF-8” http-equiv=“Content-Type”>

<title>class EPUBMaker::EPUBv3 - review-2.1.0 Documentation</title>

<link type=“text/css” media=“screen” href=“../rdoc.css” rel=“stylesheet”>

<script type=“text/javascript”>

var rdoc_rel_prefix = "../";

</script>

<script type=“text/javascript” charset=“utf-8” src=“../js/jquery.js”></script> <script type=“text/javascript” charset=“utf-8” src=“../js/navigation.js”></script> <script type=“text/javascript” charset=“utf-8” src=“../js/search_index.js”></script> <script type=“text/javascript” charset=“utf-8” src=“../js/search.js”></script> <script type=“text/javascript” charset=“utf-8” src=“../js/searcher.js”></script> <script type=“text/javascript” charset=“utf-8” src=“../js/darkfish.js”></script>

<body id=“top” class=“class”> <nav id=“metadata”>

<nav id="home-section" class="section">
<h3 class="section-header">
  <a href="../index.html">Home</a>
  <a href="../table_of_contents.html#classes">Classes</a>
  <a href="../table_of_contents.html#methods">Methods</a>
</h3>

</nav>

<nav id="search-section" class="section project-section" class="initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
  <h3 class="section-header">
    <input type="text" name="search" placeholder="Search" id="search-field"
           title="Type to search, Up and Down to navigate, Enter to load">
  </h3>
</form>

<ul id="search-results" class="initially-hidden"></ul>

</nav>

<div id="file-metadata">
  <nav id="file-list-section" class="section">
<h3 class="section-header">Defined In</h3>
<ul>
  <li>lib/epubmaker/epubv3.rb
</ul>

</nav>

</div>

<div id="class-metadata">

  <nav id="parent-class-section" class="section">
<h3 class="section-header">Parent</h3>

<p class="link"><a href="EPUBCommon.html">EPUBMaker::EPUBCommon</a>

</nav>

<!-- Method Quickref -->

<nav id=“method-list-section” class=“section”>

<h3 class="section-header">Methods</h3>

<ul class="link-list">

  <li class="calls-super" ><a href="#method-c-new">::new</a>

  <li ><a href="#method-i-cover_in_opf">#cover_in_opf</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>

</nav>

</div>

<div id="project-metadata">
  <nav id="fileindex-section" class="section project-section">
<h3 class="section-header">Pages</h3>

<ul>

  <li class="file"><a href="../ChangeLog.html">ChangeLog</a>

</ul>

</nav>

  <nav id="classindex-section" class="section project-section">
<h3 class="section-header">Class and Module Index</h3>

<ul class="link-list">

  <li><a href="../EPUBMaker.html">EPUBMaker</a>

  <li><a href="../EPUBMaker/Content.html">EPUBMaker::Content</a>

  <li><a href="../EPUBMaker/EPUBCommon.html">EPUBMaker::EPUBCommon</a>

  <li><a href="../EPUBMaker/EPUBv2.html">EPUBMaker::EPUBv2</a>

  <li><a href="../EPUBMaker/EPUBv3.html">EPUBMaker::EPUBv3</a>

  <li><a href="../EPUBMaker/Producer.html">EPUBMaker::Producer</a>

  <li><a href="../Encoding.html">Encoding</a>

  <li><a href="../Hash.html">Hash</a>

  <li><a href="../LineInput.html">LineInput</a>

  <li><a href="../Object.html">Object</a>

  <li><a href="../ReVIEW.html">ReVIEW</a>

  <li><a href="../ReVIEW/ApplicationError.html">ReVIEW::ApplicationError</a>

  <li><a href="../ReVIEW/Book.html">ReVIEW::Book</a>

  <li><a href="../ReVIEW/Book/Base.html">ReVIEW::Book::Base</a>

  <li><a href="../ReVIEW/Book/BibpaperIndex.html">ReVIEW::Book::BibpaperIndex</a>

  <li><a href="../ReVIEW/Book/Chapter.html">ReVIEW::Book::Chapter</a>

  <li><a href="../ReVIEW/Book/ChapterIndex.html">ReVIEW::Book::ChapterIndex</a>

  <li><a href="../ReVIEW/Book/ColumnIndex.html">ReVIEW::Book::ColumnIndex</a>

  <li><a href="../ReVIEW/Book/Compilable.html">ReVIEW::Book::Compilable</a>

  <li><a href="../ReVIEW/Book/FootnoteIndex.html">ReVIEW::Book::FootnoteIndex</a>

  <li><a href="../ReVIEW/Book/HeadlineIndex.html">ReVIEW::Book::HeadlineIndex</a>

  <li><a href="../ReVIEW/Book/IconIndex.html">ReVIEW::Book::IconIndex</a>

  <li><a href="../ReVIEW/Book/ImageFinder.html">ReVIEW::Book::ImageFinder</a>

  <li><a href="../ReVIEW/Book/ImageIndex.html">ReVIEW::Book::ImageIndex</a>

  <li><a href="../ReVIEW/Book/ImageIndex/Item.html">ReVIEW::Book::ImageIndex::Item</a>

  <li><a href="../ReVIEW/Book/IndepImageIndex.html">ReVIEW::Book::IndepImageIndex</a>

  <li><a href="../ReVIEW/Book/IndepImageIndex/Item.html">ReVIEW::Book::IndepImageIndex::Item</a>

  <li><a href="../ReVIEW/Book/Index.html">ReVIEW::Book::Index</a>

  <li><a href="../ReVIEW/Book/ListIndex.html">ReVIEW::Book::ListIndex</a>

  <li><a href="../ReVIEW/Book/NumberlessImageIndex.html">ReVIEW::Book::NumberlessImageIndex</a>

  <li><a href="../ReVIEW/Book/NumberlessImageIndex/Item.html">ReVIEW::Book::NumberlessImageIndex::Item</a>

  <li><a href="../ReVIEW/Book/PageMetric.html">ReVIEW::Book::PageMetric</a>

  <li><a href="../ReVIEW/Book/Part.html">ReVIEW::Book::Part</a>

  <li><a href="../ReVIEW/Book/TableIndex.html">ReVIEW::Book::TableIndex</a>

  <li><a href="../ReVIEW/Book/Volume.html">ReVIEW::Book::Volume</a>

  <li><a href="../ReVIEW/Builder.html">ReVIEW::Builder</a>

  <li><a href="../ReVIEW/Catalog.html">ReVIEW::Catalog</a>

  <li><a href="../ReVIEW/CompileError.html">ReVIEW::CompileError</a>

  <li><a href="../ReVIEW/Compiler.html">ReVIEW::Compiler</a>

  <li><a href="../ReVIEW/Compiler/InlineSyntaxElement.html">ReVIEW::Compiler::InlineSyntaxElement</a>

  <li><a href="../ReVIEW/Compiler/SyntaxElement.html">ReVIEW::Compiler::SyntaxElement</a>

  <li><a href="../ReVIEW/ConfigError.html">ReVIEW::ConfigError</a>

  <li><a href="../ReVIEW/Configure.html">ReVIEW::Configure</a>

  <li><a href="../ReVIEW/Converter.html">ReVIEW::Converter</a>

  <li><a href="../ReVIEW/EPUBBuilder.html">ReVIEW::EPUBBuilder</a>

  <li><a href="../ReVIEW/EPUBMaker.html">ReVIEW::EPUBMaker</a>

  <li><a href="../ReVIEW/EPUBMaker/ReVIEWHeaderListener.html">ReVIEW::EPUBMaker::ReVIEWHeaderListener</a>

  <li><a href="../ReVIEW/EWBBuilder.html">ReVIEW::EWBBuilder</a>

  <li><a href="../ReVIEW/Error.html">ReVIEW::Error</a>

  <li><a href="../ReVIEW/ErrorUtils.html">ReVIEW::ErrorUtils</a>

  <li><a href="../ReVIEW/FileNotFound.html">ReVIEW::FileNotFound</a>

  <li><a href="../ReVIEW/HTMLBuilder.html">ReVIEW::HTMLBuilder</a>

  <li><a href="../ReVIEW/HTMLTOCPrinter.html">ReVIEW::HTMLTOCPrinter</a>

  <li><a href="../ReVIEW/HTMLToc.html">ReVIEW::HTMLToc</a>

  <li><a href="../ReVIEW/HTMLUtils.html">ReVIEW::HTMLUtils</a>

  <li><a href="../ReVIEW/I18n.html">ReVIEW::I18n</a>

  <li><a href="../ReVIEW/IDGXMLBuilder.html">ReVIEW::IDGXMLBuilder</a>

  <li><a href="../ReVIEW/KeyError.html">ReVIEW::KeyError</a>

  <li><a href="../ReVIEW/LATEXBuilder.html">ReVIEW::LATEXBuilder</a>

  <li><a href="../ReVIEW/LaTeXIndex.html">ReVIEW::LaTeXIndex</a>

  <li><a href="../ReVIEW/LaTeXUtils.html">ReVIEW::LaTeXUtils</a>

  <li><a href="../ReVIEW/Line.html">ReVIEW::Line</a>

  <li><a href="../ReVIEW/LineInput.html">ReVIEW::LineInput</a>

  <li><a href="../ReVIEW/Location.html">ReVIEW::Location</a>

  <li><a href="../ReVIEW/MARKDOWNBuilder.html">ReVIEW::MARKDOWNBuilder</a>

  <li><a href="../ReVIEW/MD2INAOBuilder.html">ReVIEW::MD2INAOBuilder</a>

  <li><a href="../ReVIEW/MakerHelper.html">ReVIEW::MakerHelper</a>

  <li><a href="../ReVIEW/PDFMaker.html">ReVIEW::PDFMaker</a>

  <li><a href="../ReVIEW/Preprocessor.html">ReVIEW::Preprocessor</a>

  <li><a href="../ReVIEW/Preprocessor/Directive.html">ReVIEW::Preprocessor::Directive</a>

  <li><a href="../ReVIEW/Preprocessor/Strip.html">ReVIEW::Preprocessor::Strip</a>

  <li><a href="../ReVIEW/Repository.html">ReVIEW::Repository</a>

  <li><a href="../ReVIEW/SecCounter.html">ReVIEW::SecCounter</a>

  <li><a href="../ReVIEW/SyntaxError.html">ReVIEW::SyntaxError</a>

  <li><a href="../ReVIEW/TEXTBuilder.html">ReVIEW::TEXTBuilder</a>

  <li><a href="../ReVIEW/TOCParser.html">ReVIEW::TOCParser</a>

  <li><a href="../ReVIEW/TOCParser/Chapter.html">ReVIEW::TOCParser::Chapter</a>

  <li><a href="../ReVIEW/TOCParser/List.html">ReVIEW::TOCParser::List</a>

  <li><a href="../ReVIEW/TOCParser/Node.html">ReVIEW::TOCParser::Node</a>

  <li><a href="../ReVIEW/TOCParser/Paragraph.html">ReVIEW::TOCParser::Paragraph</a>

  <li><a href="../ReVIEW/TOCParser/Section.html">ReVIEW::TOCParser::Section</a>

  <li><a href="../ReVIEW/TOCPrinter.html">ReVIEW::TOCPrinter</a>

  <li><a href="../ReVIEW/TOPBuilder.html">ReVIEW::TOPBuilder</a>

  <li><a href="../ReVIEW/Template.html">ReVIEW::Template</a>

  <li><a href="../ReVIEW/TextTOCPrinter.html">ReVIEW::TextTOCPrinter</a>

  <li><a href="../ReVIEW/TextUtils.html">ReVIEW::TextUtils</a>

  <li><a href="../ReVIEW/Unfold.html">ReVIEW::Unfold</a>

  <li><a href="../ReVIEW/WEBMaker.html">ReVIEW::WEBMaker</a>

  <li><a href="../ReVIEW/WEBTOCPrinter.html">ReVIEW::WEBTOCPrinter</a>

  <li><a href="../ReVIEW/WrongInput.html">ReVIEW::WrongInput</a>

  <li><a href="../ReVIEW/YAMLLoader.html">ReVIEW::YAMLLoader</a>

  <li><a href="../String.html">String</a>

</ul>

</nav>

</div>

</nav>

<div id=“documentation”>

<h1 class="class">class EPUBMaker::EPUBv3</h1>

<div id="description" class="description">

<p><a href=“EPUBv3.html”>EPUBv3</a> is EPUB version 3 producer.</p>

</div><!-- description -->

<section id="5Buntitled-5D" class="documentation-section">

  <!-- Methods -->

   <section id="public-class-5Buntitled-5D-method-details" class="method-section section">
    <h3 class="section-header">Public Class Methods</h3>

    <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 18</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-constant">Hash</span>.<span class="ruby-identifier">new</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">&quot;opf_prefix&quot;</span>].<span class="ruby-identifier">present?</span>
  <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">&quot;opf_prefix&quot;</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><!-- new-source -->

      </div>

    </div><!-- new-method -->

  </section><!-- public-class-method-details -->

   <section id="public-instance-5Buntitled-5D-method-details" class="method-section section">
    <h3 class="section-header">Public Instance Methods</h3>

    <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 197</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">&quot;epubmaker&quot;</span>][<span class="ruby-string">&quot;flattoc&quot;</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">&quot;ol&quot;</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">&quot;ol&quot;</span>, <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">&quot;epubmaker&quot;</span>][<span class="ruby-string">&quot;flattocindent&quot;</span>])
    <span class="ruby-keyword">end</span>

    <span class="ruby-ivar">@body</span> = <span class="ruby-value">&lt;&lt;EOT
&lt;nav xmlns:epub=&quot;http://www.idpf.org/2007/ops&quot; epub:type=&quot;toc&quot; id=&quot;toc&quot;&gt;
&lt;h1 class=&quot;toc-title&quot;&gt;#{CGI.escapeHTML(@producer.res.v(&quot;toctitle&quot;))}&lt;/h1&gt;

#{ncx_main} &lt;/nav&gt; 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">&quot;toctitle&quot;</span>))
  <span class="ruby-ivar">@language</span> = <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">&#39;language&#39;</span>]
  <span class="ruby-ivar">@stylesheets</span> = <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">&quot;stylesheet&quot;</span>]
  <span class="ruby-identifier">tmplfile</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-string">&#39;./html/layout-html5.html.erb&#39;</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><!-- ncx-source -->

    </div>

  </div><!-- ncx-method -->

  <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 29</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">&quot;&quot;</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">&quot; &quot;</span>)
  <span class="ruby-ivar">@package_attrs</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; prefix=\&quot;#{prefixes_str}\&quot;&quot;</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">&#39;./opf/epubv3.opf.erb&#39;</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><!-- opf-source -->

      </div>

    </div><!-- opf-method -->

    <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 141</span>
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">opf_manifest</span>
    <span class="ruby-identifier">s</span> = <span class="ruby-string">&quot;&quot;</span>
    <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">&lt;&lt;EOT
&lt;manifest&gt;
  &lt;item properties=&quot;nav&quot; id=&quot;#{@producer.params[&quot;bookname&quot;]}-toc.#{@producer.params[&quot;htmlext&quot;]}&quot; href=&quot;#{@producer.params[&quot;bookname&quot;]}-toc.#{@producer.params[&quot;htmlext&quot;]}&quot; media-type=&quot;application/xhtml+xml&quot;/&gt;
  &lt;item id=&quot;#{@producer.params[&quot;bookname&quot;]}&quot; href=&quot;#{@producer.params[&quot;cover&quot;]}&quot; media-type=&quot;application/xhtml+xml&quot;/&gt;

EOT</span>

  <span class="ruby-keyword">if</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">&quot;coverimage&quot;</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">&#39;image&#39;</span>) <span class="ruby-operator">&amp;&amp;</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">&quot;coverimage&quot;</span>]
        <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;item properties=&quot;cover-image&quot; id=&quot;cover-#{item.id}&quot; href=&quot;#{item.file}&quot; media-type=&quot;#{item.media}&quot;/&gt;\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">&quot;&quot;</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">&gt;</span> <span class="ruby-value">0</span>
      <span class="ruby-identifier">propstr</span> = <span class="ruby-node">%Q[ properties=&quot;#{item.properties.sort.uniq.join(&quot; &quot;)}&quot;]</span>
    <span class="ruby-keyword">end</span>
    <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;item id=&quot;#{item.id}&quot; href=&quot;#{item.file}&quot; media-type=&quot;#{item.media}&quot;#{propstr}/&gt;\n]</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">%Q[  &lt;/manifest&gt;\n]</span>

  <span class="ruby-identifier">s</span>
<span class="ruby-keyword">end</span></pre>
      </div><!-- opf_manifest-source -->

    </div>

  </div><!-- opf_manifest-method -->

  <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 45</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>opf_metainfo</span>

<span class="ruby-identifier">s</span> = <span class="ruby-string">&quot;&quot;</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">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;dc:#{item} id=&quot;#{item}-#{i}&quot;&gt;#{CGI.escapeHTML(v[&quot;name&quot;])}&lt;/dc:#{item}&gt;\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">&quot;name&quot;</span>
          <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;meta refines=&quot;##{item}-#{i}&quot; property=&quot;#{name}&quot;&gt;#{CGI.escapeHTML(val)}&lt;/meta&gt;\n]</span>
        <span class="ruby-keyword">end</span>
      <span class="ruby-keyword">else</span>
        <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;dc:#{item} id=&quot;#{item}-#{i}&quot;&gt;#{CGI.escapeHTML(v.to_s)}&lt;/dc:#{item}&gt;\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">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;dc:#{item} id=&quot;#{item}&quot;&gt;#{CGI.escapeHTML(@producer.params[item][&quot;name&quot;])}&lt;/dc:#{item}&gt;\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">&quot;name&quot;</span>
      <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;meta refines=&quot;##{item}&quot; property=&quot;#{name}&quot;&gt;#{CGI.escapeHTML(val)}&lt;/meta&gt;\n]</span>
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;dc:#{item} id=&quot;#{item}&quot;&gt;#{CGI.escapeHTML(@producer.params[item].to_s)}&lt;/dc:#{item}&gt;\n]</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>

<span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;meta property=&quot;dcterms:modified&quot;&gt;#{@producer.params[&quot;modified&quot;]}&lt;/meta&gt;\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">&quot;isbn&quot;</span>].<span class="ruby-identifier">nil?</span>
  <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;dc:identifier id=&quot;BookId&quot;&gt;#{@producer.params[&quot;urnid&quot;]}&lt;/dc:identifier&gt;\n]</span>
<span class="ruby-keyword">else</span>
  <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;dc:identifier id=&quot;BookId&quot;&gt;#{@producer.params[&quot;isbn&quot;]}&lt;/dc:identifier&gt;\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">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;dc:creator id=&quot;#{role}-#{i}&quot;&gt;#{CGI.escapeHTML(v[&quot;name&quot;])}&lt;/dc:creator&gt;\n]</span>
      <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;meta refines=&quot;##{role}-#{i}&quot; property=&quot;role&quot; scheme=&quot;marc:relators&quot;&gt;#{role.sub(&#39;a-&#39;, &#39;&#39;)}&lt;/meta&gt;\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">&quot;name&quot;</span>
        <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;meta refines=&quot;##{role.sub(&#39;a-&#39;, &#39;&#39;)}-#{i}&quot; property=&quot;#{name}&quot;&gt;#{CGI.escapeHTML(val)}&lt;/meta&gt;\n]</span>
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">else</span>
      <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;dc:creator id=&quot;#{role}-#{i}&quot;&gt;#{CGI.escapeHTML(v)}&lt;/dc:creator&gt;\n]</span>
      <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;meta refines=&quot;##{role}-#{i}&quot; property=&quot;role&quot; scheme=&quot;marc:relators&quot;&gt;#{role.sub(&#39;a-&#39;, &#39;&#39;)}&lt;/meta&gt;\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">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;dc:contributor id=&quot;#{role}-#{i}&quot;&gt;#{CGI.escapeHTML(v[&quot;name&quot;])}&lt;/dc:contributor&gt;\n]</span>
      <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;meta refines=&quot;##{role}-#{i}&quot; property=&quot;role&quot; scheme=&quot;marc:relators&quot;&gt;#{role}&lt;/meta&gt;\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">&quot;name&quot;</span>
        <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;meta refines=&quot;##{role}-#{i}&quot; property=&quot;#{name}&quot;&gt;#{CGI.escapeHTML(val)}&lt;/meta&gt;\n]</span>
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">else</span>
      <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;dc:contributor id=&quot;#{role}-#{i}&quot;&gt;#{CGI.escapeHTML(v)}&lt;/dc:contributor&gt;\n]</span>
      <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;meta refines=&quot;##{role}-#{i}&quot; property=&quot;role&quot; scheme=&quot;marc:relators&quot;&gt;#{role}&lt;/meta&gt;\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">&quot;prt&quot;</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">role</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;pbl&quot;</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">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;dc:publisher id=&quot;pub-#{role}-#{i}&quot;&gt;#{CGI.escapeHTML(v[&quot;name&quot;])}&lt;/dc:publisher&gt;\n]</span>
        <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;meta refines=&quot;#pub-#{role}-#{i}&quot; property=&quot;role&quot; scheme=&quot;marc:relators&quot;&gt;#{role}&lt;/meta&gt;\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">&quot;name&quot;</span>
          <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;meta refines=&quot;#pub-#{role}-#{i}&quot; property=&quot;#{name}&quot;&gt;#{CGI.escapeHTML(val)}&lt;/meta&gt;\n]</span>
        <span class="ruby-keyword">end</span>
      <span class="ruby-keyword">else</span>
        <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;dc:publisher id=&quot;pub-#{role}-#{i}&quot;&gt;#{CGI.escapeHTML(v)}&lt;/dc:publisher&gt;\n]</span>
        <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;meta refines=&quot;#pub-#{role}-#{i}&quot; property=&quot;role&quot; scheme=&quot;marc:relators&quot;&gt;prt&lt;/meta&gt;\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 &lt;meta&gt; element</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">&quot;opf_meta&quot;</span>].<span class="ruby-identifier">present?</span>
  <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">&quot;opf_meta&quot;</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">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;meta property=&quot;#{k}&quot;&gt;#{CGI.escapeHTML(v)}&lt;/meta&gt;\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><!-- opf_metainfo-source -->

  </div>

</div><!-- opf_metainfo-method -->

<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 172</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">&quot;epubmaker&quot;</span>][<span class="ruby-string">&quot;cover_linear&quot;</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">&quot;epubmaker&quot;</span>][<span class="ruby-string">&quot;cover_linear&quot;</span>] <span class="ruby-operator">!=</span> <span class="ruby-string">&quot;no&quot;</span>
  <span class="ruby-identifier">cover_linear</span> = <span class="ruby-string">&quot;yes&quot;</span>
<span class="ruby-keyword">else</span>
  <span class="ruby-identifier">cover_linear</span> = <span class="ruby-string">&quot;no&quot;</span>
<span class="ruby-keyword">end</span>

<span class="ruby-identifier">s</span> = <span class="ruby-string">&quot;&quot;</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">&quot;direction&quot;</span>]
  <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[  &lt;spine page-progression-direction=&quot;#{@producer.params[&quot;direction&quot;]}&quot;&gt;\n]</span>
<span class="ruby-keyword">else</span>
  <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">%Q[  &lt;spine&gt;\n]</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;itemref idref=&quot;#{@producer.params[&quot;bookname&quot;]}&quot; linear=&quot;#{cover_linear}&quot;/&gt;\n]</span>
<span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;itemref idref=&quot;#{@producer.params[&quot;bookname&quot;]}-toc.#{@producer.params[&quot;htmlext&quot;]}&quot; /&gt;\n]</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">&quot;toc&quot;</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">&lt;&lt;</span> <span class="ruby-node">%Q[    &lt;itemref idref=&quot;#{item.id}&quot;/&gt;\n]</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">%Q[  &lt;/spine&gt;\n]</span>

<span class="ruby-identifier">s</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- opf_tocx-source -->

  </div>

</div><!-- opf_tocx-method -->

<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 221</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">&quot;#{tmpdir}/OEBPS/#{@producer.params[&quot;bookname&quot;]}-toc.#{@producer.params[&quot;htmlext&quot;]}&quot;</span>, <span class="ruby-string">&quot;w&quot;</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">&quot;epubmaker&quot;</span>][<span class="ruby-string">&quot;ncxindent&quot;</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">&quot;epubmaker&quot;</span>][<span class="ruby-string">&quot;hook_prepack&quot;</span>], <span class="ruby-identifier">tmpdir</span>)
<span class="ruby-identifier">export_zip</span>(<span class="ruby-identifier">tmpdir</span>, <span class="ruby-identifier">epubfile</span>)

<span class=“ruby-keyword”>end</span></pre>

      </div><!-- produce-source -->

    </div>

  </div><!-- produce-method -->

</section><!-- public-instance-method-details -->

 <section id="private-instance-5Buntitled-5D-method-details" class="method-section section">
  <h3 class="section-header">Private Instance Methods</h3>

  <div id="method-i-cover_in_opf" class="method-detail ">

    <div class="method-heading">
      <span class="method-name">cover_in_opf</span><span
        class="method-args">()</span>

      <span class="method-click-advice">click to toggle source</span>

    </div>

    <div class="method-description">

      <p>Return cover pointer for opf file</p>

      <div class="method-source-code" id="cover_in_opf-source">
        <pre><span class="ruby-comment"># File lib/epubmaker/epubv3.rb, line 233</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">cover_in_opf</span>
  <span class="ruby-identifier">s</span> = <span class="ruby-string">&quot;&quot;</span>

  <span class="ruby-keyword">if</span> <span class="ruby-ivar">@producer</span>.<span class="ruby-identifier">params</span>[<span class="ruby-string">&quot;coverimage&quot;</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">&#39;image&#39;</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">item</span>.<span class="ruby-identifier">file</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/#{@producer.params[&quot;coverimage&quot;]}\Z/</span>
          <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">&lt;&lt;EOT
        &lt;item id=&quot;#{item.id}&quot; href=&quot;#{item.file}&quot; media-type=&quot;#{item.media}&quot;/&gt;

EOT</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-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">&lt;&lt;EOT
&lt;item id=&quot;#{@producer.params[&quot;bookname&quot;]}&quot; href=&quot;#{@producer.params[&quot;cover&quot;]}&quot; media-type=&quot;application/xhtml+xml&quot;/&gt;

EOT</span>

    <span class="ruby-identifier">s</span>
  <span class="ruby-keyword">end</span></pre>
        </div><!-- cover_in_opf-source -->

      </div>

    </div><!-- cover_in_opf-method -->

  </section><!-- private-instance-method-details -->

</section><!-- 5Buntitled-5D -->

</div><!– documentation –>

<footer id=“validator-badges”>

<p><a href="http://validator.w3.org/check/referer">[Validate]</a>
<p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 4.0.0.
<p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.

</footer>