Compare commits

..

4 Commits

4 changed files with 27 additions and 14 deletions

View File

@@ -17,6 +17,9 @@ install-dep:
clean: clean:
@rm -r ./dist ./build @rm -r ./dist ./build
publish:
@cd ./outbox && python3 -m http.server
install: install:
ifeq ($(USER), root) ifeq ($(USER), root)
@cp ./dist/main /usr/local/bin/blog @cp ./dist/main /usr/local/bin/blog

View File

@@ -7,6 +7,7 @@ from blog.page import Page
from blog.config import Config from blog.config import Config
from jinja2 import Environment, FileSystemLoader, Template from jinja2 import Environment, FileSystemLoader, Template
class Blog: class Blog:
def __init__(self, conf: Config): def __init__(self, conf: Config):
@@ -69,7 +70,8 @@ class Blog:
if updated < date: if updated < date:
updated = date updated = date
articles += textwrap.indent( articles += textwrap.indent(
textwrap.dedent(f"""\ textwrap.dedent(
f"""\
<entry> <entry>
<title>{self.pages[filename].title}</title> <title>{self.pages[filename].title}</title>
<link href="{self.conf.url}/pages/{filename}.html"/> <link href="{self.conf.url}/pages/{filename}.html"/>
@@ -81,10 +83,13 @@ class Blog:
</div> </div>
</content> </content>
</entry> </entry>
"""), """
" ") ),
" ",
)
header = textwrap.dedent(f""" <?xml version="1.0" encoding="utf-8"?> header = textwrap.dedent(
f""" <?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"> <feed xmlns="http://www.w3.org/2005/Atom">
<title>{self.conf.title}</title> <title>{self.conf.title}</title>
<subtitle>{self.conf.presentation}</subtitle> <subtitle>{self.conf.presentation}</subtitle>
@@ -96,11 +101,12 @@ class Blog:
<email>{self.conf.author_mail}</email> <email>{self.conf.author_mail}</email>
</author> </author>
<id>urn:uuid:{self.conf.id}</id> <id>urn:uuid:{self.conf.id}</id>
""") """
)
footer = "</feed>" footer = "</feed>"
with open(Path(self.conf.outbox) / "atom.xml", 'w+') as rss_file: with open(Path(self.conf.outbox) / "atom.xml", "w+") as rss_file:
rss_file.write(header + articles + footer) rss_file.write(header + articles + footer)
def _copy_css(self): def _copy_css(self):

View File

@@ -15,7 +15,7 @@ class Config:
"draft", "draft",
"author_name", "author_name",
"author_mail", "author_mail",
"id" "id",
} }
def __init__(self, config_file: Path): def __init__(self, config_file: Path):

View File

@@ -14,13 +14,13 @@ def new_page(title: str, path: Path) -> Path:
today = date.today().strftime("%Y-%m-%d") today = date.today().strftime("%Y-%m-%d")
filename = path + '/' + re.sub("[^a-zA-Z0-9-]", "_", title) + ".md" filename = path + "/" + re.sub("[^a-zA-Z0-9-]", "_", title) + ".md"
id = uuid.uuid4() id = uuid.uuid4()
content = textwrap.dedent( content = textwrap.dedent(
f"""\ f"""\
--- ---
date: {today} date: {today}
title: {title} title: "{title}"
id: {id} id: {id}
category: category:
tags: tags:
@@ -43,6 +43,8 @@ class Page:
md_content = "" md_content = ""
filename = "" filename = ""
_cache = ""
def __init__(self, filename: Path): def __init__(self, filename: Path):
"""Constructeur : nouvelle page""" """Constructeur : nouvelle page"""
self.filename = filename self.filename = filename
@@ -84,10 +86,12 @@ class Page:
def html(self) -> str: def html(self) -> str:
"""Convertit le markdown en html""" """Convertit le markdown en html"""
return markdown.markdown( if not self._cache:
self.md_content, extensions=["codehilite", "fenced_code"] self._cache = markdown.markdown(
) self.md_content, extensions=["codehilite", "fenced_code"]
)
return self._cache
def html_template(self, template: jinja2.Template) -> str: def html_template(self, template: jinja2.Template) -> str:
"""Convertit la page en html a partir d'un template jinja2""" """Convertit la page en html a partir d'un template jinja2"""