From 2bf10c2644bdcf9749d00dc2cc7db0129bd25250 Mon Sep 17 00:00:00 2001 From: Miguel Angel Reina Ortega <miguelangel.reinaortega@etsi.org> Date: Wed, 26 Feb 2025 10:47:16 +0100 Subject: [PATCH] Some fixes for tables without header --- toMkdocs/gridTableTools.py | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/toMkdocs/gridTableTools.py b/toMkdocs/gridTableTools.py index 3738dd5..487ae31 100644 --- a/toMkdocs/gridTableTools.py +++ b/toMkdocs/gridTableTools.py @@ -72,19 +72,6 @@ class GridCell: headerDelimiterIndex += 1 else: raise ValueError('Invalid table formatting') - else: - bodyDelimiterIndex = 0 - while bodyDelimiterIndex < len(defaultAlignments) and self.position > delimiterPositions[bodyDelimiterIndex]: - bodyDelimiterIndex += 1 - if bodyDelimiterIndex < len(defaultAlignments): - if self.position < delimiterPositions[bodyDelimiterIndex]: - self.alignment = defaultAlignments[bodyDelimiterIndex] - elif self.position == delimiterPositions[bodyDelimiterIndex]: - self.alignment = defaultAlignments[bodyDelimiterIndex] - bodyDelimiterIndex += 1 - else: - raise ValueError('Invalid table formatting') - def __str__(self): return f'(Content: {self.content}, Rowspan: {self.rowspan}, Colspan: {self.colspan}, Alignment: {self.alignment}, Position: {self.position}, ListFlag: {self.listFlag}, AuxiliarIndex: {self.auxiliarIndex})' @@ -322,20 +309,28 @@ def parseGridTableWithSpans(gridTable:str) -> tuple[GridTableRowList, GridTableR headerDelimiterPositions.append(min(delPositions) if delPositions else -1) if not hasHeader: - #Set default alignments from the first separator + # Set default alignments from the first separator which takes the role of header + hasHeader = True + headerSeparatorIndex = 0 parts = re.split(r'\+', lines[0].strip('+')) - defaultAlignments = [] - # Calculate default alignments and positions of delimiters - for part_index in range(len(parts)): - if parts[part_index].startswith(':') and not parts[part_index].endswith(':'): + + # Calculate default alignments and positions of delimiters + for partIndex in range(len(parts)): + if parts[partIndex].startswith(':') and not parts[partIndex].endswith(':'): defaultAlignments.append(_alignLeft) - elif not parts[part_index].startswith(':') and parts[part_index].endswith(':'): + elif not parts[partIndex].startswith(':') and parts[partIndex].endswith(':'): defaultAlignments.append(_alignRight) else: defaultAlignments.append(_alignCenter) + # Delimiter position + delimiterPositionsStart = delimiterPositions[partIndex - 1] if partIndex != 0 else 0 + delPositions = [lines[index].find(delimiter, delimiterPositionsStart + 1) + for delimiter in '+' if delimiter in lines[index][delimiterPositionsStart + 1:]] + headerDelimiterPositions.append(min(delPositions) if delPositions else -1) + #Check end table delimiter alignment (not checked during the lines processing) if not checkDelimiterAlignment(lines[-1], delimiterPositions): raise ValueError(f'Misaligned delimiters in end table separator: {lines[-1]}') -- GitLab