diff --git a/src/config.py b/src/config.py index 8f61119..06f65c1 100644 --- a/src/config.py +++ b/src/config.py @@ -2,4 +2,5 @@ CREATE_GENERAL_CATEGORY: bool = True THUMB_DIMENSION: tuple[int, int] = (200, 200) -MAX_THREADS: int = 50 \ No newline at end of file +MAX_THREADS: int = 50 +PAGE_EXT: str = ".ph" \ No newline at end of file diff --git a/src/main.py b/src/main.py index 21181b5..ea68e27 100644 --- a/src/main.py +++ b/src/main.py @@ -6,6 +6,8 @@ from path import Path from picture import Picture from bulk_page import BulkPage from bulk_category import BulkCategory +from page import Page + import argparse import config @@ -21,7 +23,7 @@ def argument_parsing(): args = parser.parse_args() return args -def scan_pages(folders: list[Path]) -> list[BulkPage]: +def scan_bulk_pages(folders: list[Path]) -> list[BulkPage]: pages: list[BulkPage] = [] prev: BulkPage = None with Bar("Scanning Pages...", max=len(folders)) as bar: @@ -81,7 +83,7 @@ def create_categories(categories: list[BulkCategory]) -> None: def gen_bulk(bulk_path: Path): category_path: Path = Path(bulk_path, "categories") - pages: list[BulkPage] = scan_pages(bulk_path.get_dirs()) + pages: list[BulkPage] = scan_bulk_pages(bulk_path.get_dirs()) categories: list[BulkCategory] = scan_categories(pages, category_path) if config.CREATE_GENERAL_CATEGORY: @@ -97,9 +99,16 @@ def gen_bulk(bulk_path: Path): category_path.create() create_categories(categories) +def scan_pages(site_path: Path): + for path in [f for f in site_path.get_files() if f.get_name().endswith(config.PAGE_EXT)]: + page: Page = Page(path) + page.create() + +def gen_pages(site_path: Path): + scan_pages(site_path) def regen(bulk_path: Path, is_thumb: bool, is_small: bool): - pages: list[BulkPage] = scan_pages(bulk_path.get_dirs()) + pages: list[BulkPage] = scan_bulk_pages(bulk_path.get_dirs()) with Bar("Regenerating assets...", max=len(pages)) as bar: for page in pages: for picture in page.get_pictures(): @@ -124,6 +133,7 @@ def main(): if args.regen is not None: regen(bulk_path, 't' in args.regen, 's' in args.regen) gen_bulk(bulk_path) + gen_pages(site_path) gen_home(site_path) diff --git a/src/page.py b/src/page.py new file mode 100644 index 0000000..a41429f --- /dev/null +++ b/src/page.py @@ -0,0 +1,28 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +import config +import bozodown +from path import Path + + +class Page: + + def __init__(self, path: Path): + self._path: Path = path + self._html: Path = Path(self._path.get_absolute_path()[:-len(config.PAGE_EXT)] + ".html") + with open(path.get_absolute_path(), "r") as f: + self._raw_content: str = f.read() + + def _get_content(self): + content = bozodown.render(self._raw_content) + return content + + def _to_html(self) -> str: + html: str = self._get_content() + return html + + def create(self) -> Path: + with open(self._html.get_absolute_path(), "w") as f: + f.write(self._to_html()) \ No newline at end of file diff --git a/src/path.py b/src/path.py index e240c8e..50164fd 100644 --- a/src/path.py +++ b/src/path.py @@ -71,4 +71,8 @@ class Path(): return self._absolute_path def __repr__(self): - return f"Path({self._absolute_path})" \ No newline at end of file + return f"Path({self._absolute_path})" + + def __eq__(self, value): + if (isinstance(value, Path)): + self = Path(value.get_absolute_path()) \ No newline at end of file diff --git a/src/templates/page.css b/src/templates/page.css new file mode 100644 index 0000000..e69de29 diff --git a/src/templates/page.jinja b/src/templates/page.jinja new file mode 100644 index 0000000..64fd6cf --- /dev/null +++ b/src/templates/page.jinja @@ -0,0 +1,12 @@ + + + + + + + + +

{{ category.name }}

+ + + \ No newline at end of file