Sha256: d795e22be6a19cf0cbf4d9e1aa5c1ccf6111eb181a8685768a6ae07a9fbaa56b

Contents?: true

Size: 1.33 KB

Versions: 4

Compression:

Stored size: 1.33 KB

Contents

# frozen_string_literal: true

module Kitabu
  module TOC
    class Epub
      attr_accessor :navigation

      def initialize(navigation)
        @navigation = navigation
      end

      def to_html
        data = OpenStruct.new(navigation: navigation).instance_eval { binding }
        ERB.new(template).result(data)
      end

      def template
        (+<<-HTML).strip_heredoc.force_encoding("utf-8")
          <?xml version="1.0" encoding="utf-8" ?>
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
          <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
            <head>
              <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
              <link rel="stylesheet" type="text/css" href="epub.css"/>
              <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
              <title>Table of Contents</title>
            </head>
            <body>
              <div id="toc">
                <ul>
                  <% navigation.each do |nav| %>
                    <li>
                      <a href="<%= nav[:content] %>"><%= nav[:label] %></a>
                    </li>
                  <% end %>
                </ul>
              </div>
            </body>
          </html>
        HTML
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
kitabu-3.0.3 lib/kitabu/toc/epub.rb
kitabu-3.0.2 lib/kitabu/toc/epub.rb
kitabu-3.0.1 lib/kitabu/toc/epub.rb
kitabu-3.0.0 lib/kitabu/toc/epub.rb