diff options
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() + } |
