From 4a2054101d42b1acaa92002db6aede36f61b8927 Mon Sep 17 00:00:00 2001
From: Miguel Angel Reina Ortega <miguelangel.reinaortega@etsi.org>
Date: Thu, 17 Aug 2023 16:08:04 +0200
Subject: [PATCH] Correction of the modified lines + removing some spare
 escapes

---
 generateChangemarks/changemarks.py | 93 +++++++++++++++++-------------
 1 file changed, 53 insertions(+), 40 deletions(-)

diff --git a/generateChangemarks/changemarks.py b/generateChangemarks/changemarks.py
index c68f5f2..bcc8ff5 100644
--- a/generateChangemarks/changemarks.py
+++ b/generateChangemarks/changemarks.py
@@ -235,51 +235,64 @@ https://forge.etsi.org/rep/cdm/pipeline-scripts/-/blob/main/common/Dockerfile.st
     else:
         clauseMDlines = readMDFile(progress, outDirectory + '/' + changed_clause.clause_nr +'.md')
 
-    j = change.target_start - changed_clause.from_id # index gap
-    for line in change:
-        #if (not (line.value.strip() == '') and (line.is_added)):
-        if line.is_added:
-            if line.value.strip().startswith("|"): # It is a table
-                tableElements = line.value.strip().split("|")
-                modifiedElements:list[str] = []
-                for element in tableElements:
-                    if not element.strip() == '':
-                        modifiedElements.append("<span class=\"underline\">" + element.strip() + "</span>")
-                #modifiedRow = "|" + "|".join(modifiedElements) + "|" + "\n"
-                    else:
-                        modifiedElements.append(element)
-                modifiedRow = "|".join(modifiedElements) + "\n"
-                clauseMDlines.insert(j,modifiedRow)
-                clauseMDlines.pop(j + 1) # Todo Check what happens when modifying last row of a table
-            else:
-                clauseMDlines.insert(j, "<span class=\"underline\">" + line.value + "</span>\n\n")
-                #clauseMDlines.insert(j, "<mark>" + line.value.strip("\n") + "</mark>\n\n")
-                if (j + 1) <= len(clauseMDlines):
-                    clauseMDlines.pop(j+1)
-        #elif (not (line.value.strip() == '') and (line.is_removed)):
-        elif line.is_removed:
-            if line.value.strip().startswith("|"):  # It is a table
-                tableElements = line.value.strip().split("|")
-                modifiedElements: list[str] = []
-                for element in tableElements:
-                    if not element.strip() == '':
-                        modifiedElements.append("~~" + element.strip() + "~~")
-                #modifiedRow = "|" + "|".join(modifiedElements) + "|" + "\n"
-                    else:
-                        modifiedElements.append(element)
-                modifiedRow = "|".join(modifiedElements) + "\n"
-                clauseMDlines.insert(j, modifiedRow)
-            else:
-                clauseMDlines.insert(j, "~~" + line.value.strip() + "~~")
-            
-        j = j + 1
+    if change.source_start >= changed_clause.from_id:
+        index_gap = change.target_start - change.source_start
+    elif change.source_start < changed_clause.from_id:
+        index_gap = change.source_start - change.target_start
 
-    clauseMDlines.insert(j, "\n\n<br />")
+    j = change.target_start - changed_clause.from_id + index_gap
+    for line in change:
+        if line.source_line_no != None and line.source_line_no < changed_clause.from_id:
+            j = 0
+            continue
+        else:
+            #if (not (line.value.strip() == '') and (line.is_added)):
+            #print(vars(line))
+            if line.is_added:
+                if line.value.strip().startswith("|"): # It is a table
+                    tableElements = line.value.strip().split("|")
+                    modifiedElements:list[str] = []
+                    for element in tableElements:
+                        if not element.strip() == '':
+                            modifiedElements.append("<span class=\"underline\">" + element.strip() + "</span>")
+                    #modifiedRow = "|" + "|".join(modifiedElements) + "|" + "\n"
+                        else:
+                            modifiedElements.append(element)
+                    modifiedRow = "|".join(modifiedElements) + "\n"
+                    clauseMDlines.insert(j,modifiedRow)
+                    clauseMDlines.pop(j + 1) # Todo Check what happens when modifying last row of a table
+                else:
+                    if not line.value.strip() == '':
+                        clauseMDlines.insert(j, "<span class=\"underline\">" + line.value.strip() + "</span>\n\n")
+                        #clauseMDlines.insert(j, "<mark>" + line.value.strip("\n") + "</mark>\n\n")
+                        #if (j + 1) <= len(clauseMDlines):
+                        #    clauseMDlines.pop(j+1)
+            #elif (not (line.value.strip() == '') and (line.is_removed)):
+            elif line.is_removed:
+                if line.value.strip().startswith("|"):  # It is a table
+                    tableElements = line.value.strip().split("|")
+                    modifiedElements: list[str] = []
+                    for element in tableElements:
+                        if not element.strip() == '':
+                            modifiedElements.append("~~" + element.strip() + "~~")
+                    #modifiedRow = "|" + "|".join(modifiedElements) + "|" + "\n"
+                        else:
+                            modifiedElements.append(element)
+                    modifiedRow = "|".join(modifiedElements) + "\n"
+                    clauseMDlines.insert(j, modifiedRow)
+                else:
+                    if not line.value.strip() == '':
+                        clauseMDlines.insert(j, "~~" + line.value.strip() + "~~\n")
+                        if (j + 1) <= len(clauseMDlines):
+                            clauseMDlines.pop(j+1)
+            j = j + 1
+
+    #clauseMDlines.insert(j, "\n\n<br />")
     writeMDFile(progress, clauseMDlines, changed_clause.clause_nr.replace(" ","") + '.md', outDirectory)
 
 def process(document:str, outDirectory:str, mr:MR) -> None:
     with Progress(TextColumn('{task.description}'),  TimeElapsedColumn()) as progress:
-                sourceText = mr.retrieve_text(mr.source_branch, document)
+                sourceText = mr.retrieve_text(mr.target_branch, document)
                 sourceMdLines = sourceText.splitlines(keepends=False)
                 clauses = find_all_clauses(progress, sourceMdLines)
                 changed_clauses = find_changed_clauses(progress, sourceMdLines, clauses, mr, outDirectory)
-- 
GitLab