Class: ReVIEW::WEBTOCPrinter

Inherits:
TOCPrinter show all
Includes:
HTMLUtils
Defined in:
lib/review/webtocprinter.rb

Constant Summary

Constants included from HTMLUtils

HTMLUtils::ESC

Class Method Summary collapse

Instance Method Summary collapse

Methods included from HTMLUtils

#escape, #escape_comment, #highlight, #highlight?, #highlight_pygments, #highlight_rouge, #normalize_id, #strip_html, #unescape

Methods inherited from TOCPrinter

default_upper_level, #initialize, #print?

Constructor Details

This class inherits a constructor from ReVIEW::TOCPrinter

Class Method Details

.book_to_string(book) ⇒ Object



8
9
10
11
12
13
# File 'lib/review/webtocprinter.rb', line 8

def self.book_to_string(book)
  io = StringIO.new
  ReVIEW::WEBTOCPrinter.new(1, {}, io).print_book(book)
  io.seek(0)
  io.read
end

Instance Method Details



15
16
17
18
19
20
21
22
# File 'lib/review/webtocprinter.rb', line 15

def print_book(book)
  @out.puts '<ul class="book-toc">'
  @out.puts %Q(<li><a href="index.html">TOP</a></li>\n)
  book.each_part do |part|
    print_part(part)
  end
  @out.puts '</ul>'
end


42
43
44
45
46
47
48
49
50
51
52
# File 'lib/review/webtocprinter.rb', line 42

def print_chapter(chap)
  chap_node = TOCParser.chapter_node(chap)
  ext = chap.book.config['htmlext'] || 'html'
  path = File.basename(chap.path.sub(/\.re/, '.' + ext))
  label = if chap_node.number && chap.on_chaps?
            "#{I18n.t('chapter_short', chap.number)} #{chap.title}"
          else
            chap.title
          end
  @out.puts %Q(<li><a href="#{path}">#{h(label)}</a></li>\n)
end


24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/review/webtocprinter.rb', line 24

def print_part(part)
  if part.number
    if part.file?
      ext = part.book.config['htmlext'] || 'html'
      path = File.basename(part.path.sub(/\.re/, '.' + ext))
      @out.puts %Q(<li><a href="#{path}">#{h(I18n.t('part_short', part.number) + ' ' + part.title)}</a>\n<ul>\n)
    else
      @out.puts %Q(<li>#{h(I18n.t('part_short', part.number) + ' ' + part.title)}\n<ul>\n)
    end
  end
  part.each_chapter do |chap|
    print_chapter(chap)
  end
  if part.number
    @out.puts "</ul>\n</li>\n"
  end
end