""" Extract Table of Content ======================== This plugin allows you to extract table of contents (ToC) from article.content and place it in its own article.toc variable. """ from os import path from bs4 import BeautifulSoup from pelican import signals, readers, contents def extract_toc(content): if isinstance(content, contents.Static): return soup = BeautifulSoup(content._content,'html.parser') filename = content.source_path extension = path.splitext(filename)[1][1:] toc = '' # if it is a Markdown file if extension in readers.MarkdownReader.file_extensions: toc = soup.find('div', class_='toc') # else if it is a reST file elif extension in readers.RstReader.file_extensions: toc = soup.find('div', class_='contents topic') if toc: toc.extract() content._content = soup.decode() content.toc = toc.decode() def register(): signals.content_object_init.connect(extract_toc)