Loading src/coliverter/toc/Node.py +0 −17 Original line number Diff line number Diff line Loading @@ -12,8 +12,6 @@ class Node[T]: parent: Node[T] | None = field(repr=False) children: list[Node[T]] = field(default_factory=list) _prime_possible_parent: Node[T] | None = field(default=None, init=False) def can_nurse_at(self, level: int) -> bool: """Return if the given level is greater than one's own level, i.e., if content with this level could be a child of this node. Loading @@ -31,21 +29,6 @@ class Node[T]: self.children.append(node) return node def append(self, level: int | float, content: T) -> None: while True: if not self._prime_possible_parent: # Take care of the node myself, and note it down as next prime possible parent self._prime_possible_parent = self._nurse(level, content) return elif self._prime_possible_parent.can_nurse_at(level): # If the prime possible parent can nurse at this level, let it nurse the node, # and make the newly inserted node the next prime possible parent self._prime_possible_parent = self._prime_possible_parent._nurse(level, content) return else: # Go up once self._prime_possible_parent = self._prime_possible_parent.parent @classmethod def new_root(cls) -> Node[T]: return cls(-inf, None, None) src/coliverter/toc/make_toc.py 0 → 100644 +28 −0 Original line number Diff line number Diff line from collections.abc import Iterable from coliverter.toc.Node import Node type Level = int type Entry[T] = tuple[Level, T] def _append_entry[T](prime_possible_parent: Node[T], entry: Entry[T]) -> Node[T]: level, content = entry while True: if prime_possible_parent.can_nurse_at(level): # If the prime possible parent can nurse at this level, let it nurse the node, # and make the newly inserted node the next prime possible parent return prime_possible_parent._nurse(*entry) else: # Go up once prime_possible_parent = prime_possible_parent.parent def make_toc[T](entries: Iterable[Entry[T]]) -> Node[T]: root = Node.new_root() prime_possible_parent = root for entry in entries: prime_possible_parent = _append_entry(prime_possible_parent, entry) return root Loading
src/coliverter/toc/Node.py +0 −17 Original line number Diff line number Diff line Loading @@ -12,8 +12,6 @@ class Node[T]: parent: Node[T] | None = field(repr=False) children: list[Node[T]] = field(default_factory=list) _prime_possible_parent: Node[T] | None = field(default=None, init=False) def can_nurse_at(self, level: int) -> bool: """Return if the given level is greater than one's own level, i.e., if content with this level could be a child of this node. Loading @@ -31,21 +29,6 @@ class Node[T]: self.children.append(node) return node def append(self, level: int | float, content: T) -> None: while True: if not self._prime_possible_parent: # Take care of the node myself, and note it down as next prime possible parent self._prime_possible_parent = self._nurse(level, content) return elif self._prime_possible_parent.can_nurse_at(level): # If the prime possible parent can nurse at this level, let it nurse the node, # and make the newly inserted node the next prime possible parent self._prime_possible_parent = self._prime_possible_parent._nurse(level, content) return else: # Go up once self._prime_possible_parent = self._prime_possible_parent.parent @classmethod def new_root(cls) -> Node[T]: return cls(-inf, None, None)
src/coliverter/toc/make_toc.py 0 → 100644 +28 −0 Original line number Diff line number Diff line from collections.abc import Iterable from coliverter.toc.Node import Node type Level = int type Entry[T] = tuple[Level, T] def _append_entry[T](prime_possible_parent: Node[T], entry: Entry[T]) -> Node[T]: level, content = entry while True: if prime_possible_parent.can_nurse_at(level): # If the prime possible parent can nurse at this level, let it nurse the node, # and make the newly inserted node the next prime possible parent return prime_possible_parent._nurse(*entry) else: # Go up once prime_possible_parent = prime_possible_parent.parent def make_toc[T](entries: Iterable[Entry[T]]) -> Node[T]: root = Node.new_root() prime_possible_parent = root for entry in entries: prime_possible_parent = _append_entry(prime_possible_parent, entry) return root