Source code for intxeger.core.concatenate

from typing import Sequence

from intxeger.core import Node


[docs]class Concatenate(Node): def __init__(self, nodes: Sequence[Node]): self.nodes = nodes self.length = 1 for choice in self.nodes: self.length *= choice.length
[docs] def get(self, idx: int) -> str: sub_indices = [] for choice in reversed(self.nodes): sub_idx = idx % choice.length idx = idx // choice.length sub_indices.append(sub_idx) values = [] for choice, sub_idx in zip(self.nodes, reversed(sub_indices)): values.append(choice.get(sub_idx)) return "".join(values)
def __str__(self): return ( "Concatenate(\n " + "\n".join(str(c) for c in self.nodes).replace("\n", "\n ") + "\n)" )