From 12e18454ba07c3b7747f8b868f6830f05de149c4 Mon Sep 17 00:00:00 2001 From: Kévin Le Gouguec Date: Sun, 12 Apr 2020 23:06:07 +0200 Subject: Add intermediate step to cache site tree Seems kind of wasteful to recompute it every time. Also, now subsequent scripts don't have to care about file extensions anymore. --- repo/www/helpers.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'repo/www/helpers.py') diff --git a/repo/www/helpers.py b/repo/www/helpers.py index 80115b7..6dc5bad 100644 --- a/repo/www/helpers.py +++ b/repo/www/helpers.py @@ -1,13 +1,23 @@ from collections import defaultdict from dataclasses import dataclass, field from os import path -from typing import List, Set +from typing import Iterator @dataclass class Directory: - files: List[str] = field(default_factory=list) - subfolders: Set[str] = field(default_factory=set) + files: Iterator[str] = field(default_factory=list) + subfolders: Iterator[str] = field(default_factory=set) + + def serialize(self): + return { + 'files': sorted(self.files), + 'subfolders': sorted(self.subfolders) + } + + @classmethod + def deserialize(cls, d): + return cls(**d) def _find_files(extensions, repository): @@ -36,3 +46,9 @@ def compute_directories(extensions, repository): files = _find_files(extensions, repository) top_dir = path.relpath(repository.working_dir, path.curdir) return _fill_directories(files, top_dir) + + +def deserialize_directories(directories): + return { + k: Directory.deserialize(v) for k, v in directories.items() + } -- cgit v1.2.3