home · contact · privacy
Reorganize Collection metadata serialization.
authorPlom Heller <plom@plomlompom.com>
Thu, 30 Apr 2026 01:16:53 +0000 (03:16 +0200)
committerPlom Heller <plom@plomlompom.com>
Thu, 30 Apr 2026 01:16:53 +0000 (03:16 +0200)
bricksplom.py

index 70a3f22d6fd937b9eb0687b8416e15181b6fdab5..e0c395ebf7b6af5241266f0696ee2cf4d7ee23e0 100755 (executable)
@@ -218,12 +218,13 @@ class Collection(Textfiled):
         i_listings: list[list[list[PieceListing]]] = [[[]]]
         for line in cls.lines_of(path):
             if not line.startswith(CHAR_SPACE):
-                id_, is_in_str, description = cls.tokify(line, 3)
-                assert is_in_str in {CHAR_IN, CHAR_OUT, CHAR_INACTIVE}
-                is_in = (None if is_in_str == CHAR_INACTIVE
-                         else is_in_str == CHAR_IN)
+                id_, metadata = cls.tokify(line, 2)
+                assert metadata
+                assert metadata[0] in {CHAR_IN, CHAR_OUT, CHAR_INACTIVE}
+                is_in = (None if metadata[0] == CHAR_INACTIVE
+                         else metadata[0] == CHAR_IN)
                 i_listings = [[[]]]
-                collected[id_] = is_in, description, i_listings
+                collected[id_] = is_in, metadata[1:], i_listings
             elif line[1:2] == CHAR_SEPARATOR_COLUMN:
                 i_listings[-1] += [[]]
             elif line[1:2] == CHAR_SEPARATOR_PAGE:
@@ -245,7 +246,7 @@ class Collection(Textfiled):
             ) -> str:
         is_in_str = (CHAR_INACTIVE if self.is_in is None
                      else (CHAR_IN if self.is_in else CHAR_OUT))
-        return (f'\n{self.id_} {is_in_str} {self.description}\n'
+        return (f'\n{self.id_} {is_in_str}{self.description}\n'
                 + self._format_paginated(lambda count, p_id, comment:
                                          f' {count:2} {p_id:>7} {comment}'))