Loading toMkdocs/gridTableTools.py +14 −19 Original line number Diff line number Diff line Loading @@ -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})' Loading Loading @@ -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(':'): 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]}') Loading Loading
toMkdocs/gridTableTools.py +14 −19 Original line number Diff line number Diff line Loading @@ -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})' Loading Loading @@ -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(':'): 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]}') Loading