Sha256: 85d20714c73559ddbe113f891f60b743c77ecbd702160bb8a3b4a84d9207acbf

Contents?: true

Size: 1.23 KB

Versions: 4

Compression:

Stored size: 1.23 KB

Contents

require 'review/tocprinter'
require 'review/i18n'
require 'review/htmlutils'

module ReVIEW
  class WEBTOCPrinter < TOCPrinter
    include HTMLUtils

    def self.book_to_string(book)
      ReVIEW::WEBTOCPrinter.new.print_book(book)
    end

    def print_book(book)
      @book = book
      @indent = nil
      @upper = 1 # only part and chapter
      print_result(build_result_array)
    end

    def print_result(result_array)
      content = <<EOT
<ul class="book-toc">
<li><a href="index.html">TOP</a></li>
EOT

      path = ''
      result_array.each do |result|
        unless result.headline
          result.headline = '-'
        end

        if result.name
          path = "#{result.name}.#{@book.config['htmlext']}"
          next
        end

        if result.part
          if result.part == 'end'
            content << "</ul></li>\n"
          end
          next
        end

        if path.start_with?('.')
          content << "<li>#{escape(result.headline)}"
        else
          content << %Q(<li><a href="#{path}">#{escape(result.headline)}</a>)
        end
        if result.level == 0
          content << "\n<ul>" # part
        else
          content << "</li>\n"
        end
      end
      content << "</ul>\n"
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
review-5.3.0 lib/review/webtocprinter.rb
review-5.2.0 lib/review/webtocprinter.rb
review-5.1.1 lib/review/webtocprinter.rb
review-5.1.0 lib/review/webtocprinter.rb