From: Plom Heller Date: Wed, 19 Aug 2026 20:24:13 +0000 (+0200) Subject: Speed up _DatBlock.from_lines. X-Git-Url: https://plomlompom.com/repos/%22https:/validator.w3.org/%7B%7Bprefix%7D%7D/booking/process_descriptions?a=commitdiff_plain;p=ledgplom Speed up _DatBlock.from_lines. --- diff --git a/src/ledgplom/ledger.py b/src/ledgplom/ledger.py index f4cb8fe..07b0d31 100644 --- a/src/ledgplom/ledger.py +++ b/src/ledgplom/ledger.py @@ -456,10 +456,14 @@ class _DatBlock(_LinesBlock, _LedgerNode): def from_lines(cls, lines: tuple[str, ...]) -> tuple['_DatBlock', ...]: 'Sequence of DatBlocks parsed from lines.' i_block: _DatBlock = cls() + i_block_indented = False for dat_line in (_DatLine(line.rstrip()) for line in lines): - if (not dat_line.len_indent) and i_block.indented: + line_indented = bool(dat_line.len_indent) + if (not line_indented) and i_block_indented: i_block.next = _DatBlock() i_block = i_block.next + i_block_indented = False + i_block_indented = i_block_indented or line_indented i_block.add((dat_line, )) blocks = [i_block] while i_block.prev: @@ -467,11 +471,6 @@ class _DatBlock(_LinesBlock, _LedgerNode): blocks += [i_block] return tuple(reversed(blocks)) - @property - def indented(self) -> bool: - 'Does the block contain any indented lines?' - return bool([line for line in self.lines if line.len_indent]) - @property @_LinesBlock._cache('gap_lines') def gap_lines(self) -> tuple[_DatLine, ...]: