This repository has been archived on 2023-03-26. You can view files and clone it, but cannot push or open issues or pull requests.
md-pdf/md_pdf/build/content.py

56 lines
1.5 KiB
Python
Raw Permalink Normal View History

2017-05-10 17:22:55 +01:00
from bs4 import BeautifulSoup
import os
import logging
from md_pdf.build.context import get_context
2017-06-08 09:48:35 +01:00
from md_pdf.build.jinja import render_content
2017-05-10 17:22:55 +01:00
logger = logging.getLogger(__file__)
2017-05-10 17:41:49 +01:00
def fix_references_title(content, config):
2017-05-10 17:22:55 +01:00
logger.debug("Adding Reference Title...")
soup = BeautifulSoup(content, 'html.parser')
reference_element = soup.find('div', class_='references')
if reference_element is not None:
title = soup.new_tag('h1')
2017-05-10 20:52:00 +01:00
title['class'] = 'references-title'
2017-05-10 17:22:55 +01:00
title.string = "References"
reference_element.insert_before(title)
return soup.prettify()
2017-05-28 22:12:22 +01:00
def make_images_relative(doc, config):
2017-05-10 17:22:55 +01:00
logger.debug("Adding Base Tag...")
soup = BeautifulSoup(doc, 'html.parser')
2017-05-10 21:42:03 +01:00
for img in soup.findAll('img'):
2017-05-11 13:19:14 +01:00
abs_path = os.path.abspath(img['src'])
if os.path.isfile(abs_path):
img['src'] = abs_path
2017-05-10 17:22:55 +01:00
return soup.prettify()
2017-05-10 18:14:30 +01:00
def add_body_class(doc, config):
logger.debug("Adding Body Class...")
soup = BeautifulSoup(doc, 'html.parser')
2017-05-28 22:12:22 +01:00
if not soup.body:
return doc
2017-05-10 18:14:30 +01:00
soup.body['class'] = 'content'
return soup.prettify()
2017-05-10 17:22:55 +01:00
def render_template(html, config):
logger.debug("Rendering Template...")
context = get_context(config, html)
2017-06-08 09:48:35 +01:00
return render_content(html, context)
2017-05-10 17:22:55 +01:00
def parse_template(doc, config):
2017-05-10 17:41:49 +01:00
parsed_doc = doc
for parser in [
fix_references_title,
2017-05-28 22:12:22 +01:00
make_images_relative,
2017-05-10 18:14:30 +01:00
add_body_class,
2017-05-10 17:41:49 +01:00
]:
parsed_doc = parser(parsed_doc, config)
2017-05-10 18:14:30 +01:00
return render_template(parsed_doc, config)