Support adding chapters to the TOC when converting from html to lrf.

To accomodate that, a new flag can now disable adding links to the TOC.
This commit is contained in:
Ori Avtalion 2008-05-24 19:24:51 +03:00
parent cf9ff4bf34
commit dc0c9483d4
2 changed files with 13 additions and 1 deletions

View File

@ -163,6 +163,10 @@ def option_parser(usage, gui_mode=False):
link.add_option('--link-exclude', dest='link_exclude', default='@',
help=_('''A regular expression. <a> tags whoose href '''
'''matches will be ignored. Defaults to %default'''))
link.add_option('--no-links-in-toc', action='store_true', default=False,
dest='no_links_in_toc',
help=_('''Does not add discovered links to the table'''
''' of contents.'''))
chapter = parser.add_option_group('CHAPTER OPTIONS')
chapter.add_option('--disable-chapter-detection', action='store_true',
default=False, dest='disable_chapter_detection',
@ -186,6 +190,9 @@ def option_parser(usage, gui_mode=False):
default='$', help=_('Force a page break before tags whoose names match this regular expression.'))
chapter.add_option('--force-page-break-before-attr', dest='force_page_break_attr',
default='$,,$', help=_('Force a page break before an element having the specified attribute. The format for this option is tagname regexp,attribute name,attribute value regexp. For example to match all heading tags that have the attribute class="chapter" you would use "h\d,class,chapter". Default is %default'''))
chapter.add_option('--add-chapters-to-toc', action='store_true',
default=False, dest='add_chapters_to_toc',
help=_('''Add detected chapters to the table of contents.'''))
prepro = parser.add_option_group('PREPROCESSING OPTIONS')
prepro.add_option('--baen', action='store_true', default=False, dest='baen',
help=_('''Preprocess Baen HTML files to improve generated LRF.'''))

View File

@ -547,7 +547,8 @@ class HTMLConverter(object, LoggingInterface):
path, fragment = munge_paths(self.target_prefix, tag['href'])
return {'para':para, 'text':text, 'path':os.path.abspath(path),
'fragment':fragment, 'in toc': (self.link_level == 0 and not self.use_spine)}
'fragment':fragment, 'in toc': (self.link_level == 0 and
not self.use_spine and not self.options.no_links_in_toc)}
def get_text(self, tag, limit=None):
@ -1621,6 +1622,10 @@ class HTMLConverter(object, LoggingInterface):
self.end_page()
self.page_break_found = True
if self.options.add_chapters_to_toc:
self.extra_toc_entries.append((self.get_text(tag,
limit=1000), self.current_block))
if self.current_para.has_text():
self.current_para.append_to(self.current_block)
self.current_para = Paragraph()