diff --git a/toMkdocs/gridTableTools.py b/toMkdocs/gridTableTools.py index 487ae317c2078d897a82d1ceb30392a512f9466f..2dd122a4fb3999123350e6e770aed15ee4999e4d 100644 --- a/toMkdocs/gridTableTools.py +++ b/toMkdocs/gridTableTools.py @@ -39,6 +39,7 @@ class GridCell: self.colspan:int = 0 self.colspanAdjusted:bool = False self.alignment:str = 'align="center"' + self.positionStart:Optional[int] = None self.position:Optional[int] = None self.listFlag:bool = False self.auxiliarIndex:int = 0 @@ -57,19 +58,15 @@ class GridCell: defaultAlignments: The default alignments. hasHeader: True if the table has a header, False otherwise. """ - if self.position is None: + if self.position is None or self.positionStart is None: raise ValueError('Cell position must be set before calculating alignment.') if hasHeader: headerDelimiterIndex = 0 - while headerDelimiterIndex < len(defaultAlignments) and self.position > headerDelimiterPositions[headerDelimiterIndex]: + while headerDelimiterIndex < len(defaultAlignments) and self.positionStart > headerDelimiterPositions[headerDelimiterIndex]: headerDelimiterIndex += 1 if headerDelimiterIndex < len(defaultAlignments): - if self.position < headerDelimiterPositions[headerDelimiterIndex]: - self.alignment = defaultAlignments[headerDelimiterIndex] - elif self.position == headerDelimiterPositions[headerDelimiterIndex]: - self.alignment = defaultAlignments[headerDelimiterIndex] - headerDelimiterIndex += 1 + self.alignment = defaultAlignments[headerDelimiterIndex] else: raise ValueError('Invalid table formatting') @@ -364,6 +361,7 @@ def parseGridTableWithSpans(gridTable:str) -> tuple[GridTableRowList, GridTableR cell = rows[-1][columnIndex] # Set position + cell.positionStart = delimiterIndex - len(parts[rowIndex]) cell.position = delimiterIndex # Position of cell delimiter + # Set alignment as defined by header separator line @@ -390,6 +388,7 @@ def parseGridTableWithSpans(gridTable:str) -> tuple[GridTableRowList, GridTableR if auxiliarCellIndex < numberOfColumns: auxDelimiterIndex += len(content) + 1 cell = rows[-1][auxiliarCellIndex] + cell.positionStart = auxDelimiterIndex - len(content) # Position of cell delimiter + cell.position = auxDelimiterIndex # Position of cell delimiter + cell.calculateAndSetAlignment(headerDelimiterPositions, delimiterPositions, defaultAlignments, hasHeader) while auxDelimiterIndex > delimiterPositions[auxiliarCellIndex]: