diff options
| author | Kévin Le Gouguec <kevin.legouguec@gmail.com> | 2020-04-12 23:06:07 +0200 |
|---|---|---|
| committer | Kévin Le Gouguec <kevin.legouguec@gmail.com> | 2020-04-12 23:06:07 +0200 |
| commit | 12e18454ba07c3b7747f8b868f6830f05de149c4 (patch) | |
| tree | 317c3f700b9d088cf30466a197ffc512d12fc183 /repo/www/helpers.py | |
| parent | 629664bd50ed4e72cffc33bf2e7082119d483469 (diff) | |
| download | memory-leaks-12e18454ba07c3b7747f8b868f6830f05de149c4.tar.xz | |
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.
Diffstat (limited to 'repo/www/helpers.py')
| -rw-r--r-- | repo/www/helpers.py | 22 |
1 files changed, 19 insertions, 3 deletions
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() + } |
