roundabout,
created on Friday, 19 April 2024, 18:42:48 (1713552168),
received on Tuesday, 23 April 2024, 11:54:32 (1713873272)
Author identity: vlad <vlad.muntoiu@gmail.com>
7c4f2bb89fe265e804d8fae7978273b26b68e96b
ampoule_ssg/__init__.py
@@ -5,6 +5,10 @@ import jinja2
from ruamel.yaml import YAML import shutil import contextlib import colorama colorama.init()@contextlib.contextmanager
@@ -26,7 +30,7 @@ def delete_directory_contents(directory):
class Document: def __init__(self, file_name):def __init__(self, file_name, url_transform=lambda x: x):self.file_name = file_name self.encoding = "utf-8" # If the file is text, read it.
@@ -34,19 +38,19 @@ class Document:
self.content = "" try: with open(file_name, "r", encoding=self.encoding) as f: print("!" + f"Loading document {file_name}".center(80, "-") + "!")print(colorama.Style.RESET_ALL, colorama.Style.BRIGHT, colorama.Fore.LIGHTWHITE_EX, f"Loading document {file_name}".ljust(shutil.get_terminal_size().columns), sep="")# Parse front matter if available. front_matter = "" initial_line = f.readline() if initial_line == "---\n": print("!" + "Front matter found".center(80, "-") + "!")print(colorama.Style.RESET_ALL, colorama.Fore.CYAN, "Front matter found", sep="")line = "" while line != "---\n": line = f.readline() if line != "---\n": front_matter += line print("!" + "Front matter loaded".center(80, "-") + "!")print(colorama.Style.RESET_ALL, colorama.Fore.GREEN, "Front matter loaded", sep="")print(front_matter) if front_matter:
@@ -54,18 +58,27 @@ class Document:
else: # put it back self.content = initial_line print("!" + "Reading content".center(80, "-") + "!")print(colorama.Style.RESET_ALL, colorama.Fore.CYAN, "Reading content", sep="")self.content += f.read() print("!" + "Content loaded".center(80, "-") + "!")print(self.content[:256] + "..." if len(self.content) > 256 else self.content)print(colorama.Style.RESET_ALL, colorama.Fore.GREEN, "Content loaded", sep="") print(colorama.Style.RESET_ALL, colorama.Style.DIM, self.content[:128] + "..." if len(self.content) > 128 else self.content)except UnicodeDecodeError: print("!" + "Text decoding failed, assuming binary.".center(80, "-") + "!")print(colorama.Style.RESET_ALL, colorama.Fore.CYAN, "Text decoding failed, assuming binary", sep="")self.encoding = None with open(file_name, "rb") as f: self.content = f.read() print("!" + "Binary content loaded".center(80, "-") + "!")print(colorama.Style.RESET_ALL, colorama.Fore.GREEN, "Binary content loaded", sep="") print(colorama.Style.RESET_ALL, colorama.Fore.CYAN, colorama.Style.DIM, f"Transforming URL {self.file_name} ->", end=" ", sep="") self.file_name = url_transform(self.file_name) print(colorama.Style.RESET_ALL, colorama.Style.BRIGHT, colorama.Fore.LIGHTYELLOW_EX, self.file_name) print(colorama.Style.RESET_ALL, end="") def __repr__(self): return f"Document({self.file_name})"class Index:
@@ -77,10 +90,11 @@ class Index:
self.file_names = [os.path.join(dir_path, f) for dir_path, dir_name, filenames in os.walk(".") for f in filenames] else: self.file_names = [i for i in os.listdir() if os.path.isfile(i)] self.documents = [Document(url_transform(i)) for i in self.file_names]self.documents = [Document(i, url_transform) for i in self.file_names]self.__current_index = 0 def __iter__(self): self.__current_index = 0return self def __next__(self):
@@ -90,6 +104,12 @@ class Index:
self.__current_index += 1 return self.documents[self.__current_index - 1] def __repr__(self): return f"Index({self.directory}): {self.documents}" def __len__(self): return len(self.documents) class Site: def __init__(self, build_dir, template_dir="templates"):
setup.py
@@ -10,7 +10,7 @@ setup(
long_description_content_type="text/markdown", url="https://roundabout-host.com/roundabout/ampoule", packages=find_packages(), install_requires=["Jinja2", "ruamel.yaml", "beautifulsoup4"],install_requires=["Jinja2", "ruamel.yaml", "beautifulsoup4", "colorama"],classifiers=[ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers",