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