33 lines
900 B
Python
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)
|