home
·
contact
·
privacy
projects
/
ledgplom
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
68d6217
)
Speed up _DatBlock.from_lines.
master
author
Plom Heller
<plom@plomlompom.com>
Wed, 19 Aug 2026 20:24:13 +0000
(22:24 +0200)
committer
Plom Heller
<plom@plomlompom.com>
Wed, 19 Aug 2026 20:24:13 +0000
(22:24 +0200)
src/ledgplom/ledger.py
patch
|
blob
|
history
diff --git
a/src/ledgplom/ledger.py
b/src/ledgplom/ledger.py
index f4cb8fe9c5a0b6dfb478227898ec08cd3c47a27c..07b0d310d0e220c1ed5f728f7c9a494a196d4b22 100644
(file)
--- 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()
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):
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.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:
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))
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, ...]:
@property
@_LinesBlock._cache('gap_lines')
def gap_lines(self) -> tuple[_DatLine, ...]: