Files
pelican-plugins/extract_toc/extract_toc.py
2013-04-16 10:29:57 -07:00

33 lines
900 B
Python

"""
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
def extract_toc(content):
soup = BeautifulSoup(content._content)
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)