- return {id_: cls(id_, tuple(order.split(CHAR_COMMA)))
- for id_, order in [cls.tokify(line, 2)
- for line in cls.lines_of(path)]}
+ 'Parse from "box:"-prefixed entries in collections.'
+ collected = {}
+ for coll in [c for c in collections.values()
+ if c.id_.startswith(BOX_PREFIX)]:
+ box_id = coll.id_[len(BOX_PREFIX):]
+ assert box_id
+ boxed_designs: list[str] = []
+ for piece_id in [t[1] for t in coll.piece_listings_flat()]:
+ design = Design.possibly_by_alt(pieces[piece_id].design_id,
+ designs)
+ assert design
+ if [design.id_] != boxed_designs[-1:]:
+ boxed_designs += [design.id_]
+ collected[box_id] = cls(box_id, tuple(boxed_designs))
+ return collected