summaryrefslogtreecommitdiff
path: root/repo/www/helpers.py
diff options
context:
space:
mode:
Diffstat (limited to 'repo/www/helpers.py')
-rw-r--r--repo/www/helpers.py22
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()
+ }