Skip to content
Snippets Groups Projects
Commit 2bf10c26 authored by Miguel Angel Reina Ortega's avatar Miguel Angel Reina Ortega
Browse files

Some fixes for tables without header

parent 5b50a6f7
No related branches found
No related tags found
1 merge request!1Restructuring and cleaning scripts for Mkdocs
......@@ -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(':'):
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]}')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment