require 'review/tocprinter'
require 'review/i18n'
module ReVIEW
class WEBTOCPrinter < TOCPrinter
include HTMLUtils
def self.book_to_string(book)
io = StringIO.new
ReVIEW::WEBTOCPrinter.new(1, {}, io).print_book(book)
io.seek(0)
io.read
end
def print_book(book)
@out.puts '
'
@out.puts %Q(- TOP
\n)
book.each_part do |part|
print_part(part)
end
@out.puts '
'
end
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(#{h(I18n.t('part_short', part.number) + ' ' + part.title)}\n\n)
else
@out.puts %Q(- #{h(I18n.t('part_short', part.number) + ' ' + part.title)}\n
\n)
end
end
part.each_chapter do |chap|
print_chapter(chap)
end
if part.number
@out.puts "
\n \n"
end
end
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(- #{h(label)}
\n)
end
end
end