From 9d0d73092a5ce2331e9ee510ae418efb2cfba6c5 Mon Sep 17 00:00:00 2001
From: Dara Silvera <dara.silvera@fing.edu.uy>
Date: Tue, 22 Nov 2022 01:29:10 -0300
Subject: [PATCH] Se soluciono problema del parser del code mirror

---
 .../src/app/shared/services/ghci.service.ts   | 25 +++++++++++++------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/Frontend Angular 4/src/app/shared/services/ghci.service.ts b/Frontend Angular 4/src/app/shared/services/ghci.service.ts
index ea3a9d9..89665a7 100755
--- a/Frontend Angular 4/src/app/shared/services/ghci.service.ts	
+++ b/Frontend Angular 4/src/app/shared/services/ghci.service.ts	
@@ -162,6 +162,7 @@ export class GHCIService {
 
   hayError(text: string) {
     // Si se está esperando por la descripción del error
+
     if (this.waitingForError) {
       // WA para manejar el tema de las traducciones asincronicas. Dado que no,
       // hay una buena forma de manejar las traducciones asincronicas con los
@@ -172,12 +173,15 @@ export class GHCIService {
       const language = this.authService.getLanguage();
       const traduccionColumna = language == "es" ? "columna" : "column";
       const traduccionEnColumna = language == "es" ? "En columna" : "In column";
-
       var columna = this.errorText
         .split(`${traduccionColumna}:`)[1]
         .split("}")[0];
+      const parsedText = JSON.parse(text).resultado;
 
-      var errorTextToShow = JSON.parse(text).resultado.split("OUT")[1].trim();
+      if (!parsedText) {
+        return;
+      }
+      var errorTextToShow = parsedText.split("OUT")[1].trim();
 
       var errorFinalText =
         traduccionEnColumna + columna + ": " + errorTextToShow;
@@ -213,9 +217,9 @@ export class GHCIService {
           "breakpoints",
           makeMarker()
         );
-        this.waitingForError = false;
         this.lastErrorLineNumber = -1;
       }
+      this.waitingForError = false;
     } else {
       try {
         const message: { tipo: string; resultado: string } = JSON.parse(text);
@@ -246,12 +250,17 @@ export class GHCIService {
           this.translateService
             .get("i18n.codemirror.command.line")
             .subscribe((line) => {
-              const lineNumber =
-                Number(fileNameAndMore.split(` ${line}: `)[1].split(" ")[0]) -
-                1;
+              const lineNumberNotParsed = fileNameAndMore.split(
+                ` ${line}: `
+              )[1];
+
+              if (lineNumberNotParsed) {
+                const lineNumber =
+                  Number(lineNumberNotParsed.split(" ")[0]) - 1;
 
-              this.lastErrorLineNumber = lineNumber;
-              this.lastErrorFile = fileName;
+                this.lastErrorLineNumber = lineNumber;
+                this.lastErrorFile = fileName;
+              }
               this.errorText = fileNameAndMore.trim();
             });
         });
-- 
GitLab