Premier commit
This commit is contained in:
59
blog/blog.py
Normal file
59
blog/blog.py
Normal file
@@ -0,0 +1,59 @@
|
||||
import glob
|
||||
from pathlib import Path
|
||||
from blog.page import Page
|
||||
from blog.config import Config
|
||||
from jinja2 import Environment, FileSystemLoader, Template
|
||||
|
||||
|
||||
class Blog:
|
||||
|
||||
def __init__(self, conf: Config):
|
||||
""" """
|
||||
self.conf = conf
|
||||
self.pages = dict()
|
||||
|
||||
def load_pages(self):
|
||||
"""Charge tous les fichiers .md dans le dossier inbox"""
|
||||
files_list = glob.glob(f"{self.conf.inbox}/*.md")
|
||||
|
||||
self.pages = dict()
|
||||
for file in files_list:
|
||||
self.pages[Path(file).stem] = Page(Path(file))
|
||||
|
||||
def make(self):
|
||||
"""Convertit les pages en un site html"""
|
||||
if not self.pages:
|
||||
self.load_pages()
|
||||
|
||||
env = Environment(loader=FileSystemLoader(self.conf.theme))
|
||||
|
||||
page_template = env.get_template("page.html.j2")
|
||||
index_template = env.get_template("index.html.j2")
|
||||
|
||||
self._build_all_pages(page_template)
|
||||
self._build_index(index_template)
|
||||
|
||||
def _build_all_pages(self, template: Template):
|
||||
"""Convertit les pages markdown dans conf.inbox en html dans conf.outbox"""
|
||||
|
||||
outbox_path = Path(f"{self.conf.outbox}/pages")
|
||||
if not outbox_path.is_dir():
|
||||
outbox_path.mkdir()
|
||||
|
||||
for filename in self.pages:
|
||||
html_content = self.pages[filename].html(template)
|
||||
with open(f"{self.conf.outbox}/pages/{filename}.html", "w+") as html_file:
|
||||
html_file.write(html_content)
|
||||
|
||||
def _build_index(self, template: Template):
|
||||
"""Crée l'index du blog."""
|
||||
html_content = template.render(
|
||||
pages=self.pages, title=self.conf.title, presentation=self.conf.presentation
|
||||
)
|
||||
with open(f"{self.conf.outbox}/index.html", "w+") as html_file:
|
||||
html_file.write(html_content)
|
||||
|
||||
# def _copycss_files(src_dir: str, dest_dir: str) -> list:
|
||||
# list_css = glob.glob(f'{src_dir}/css/*.css')
|
||||
# for css_file in list_css:
|
||||
# shutil.copy(css_file, dest_dir)
|
Reference in New Issue
Block a user