From b22376c5fb40c9f2cc9f9bbcada0f47241cf1055 Mon Sep 17 00:00:00 2001 From: Yanis HAMOUDI <yanis.hamoudi@etu.u-pec.fr> Date: Fri, 14 Mar 2025 20:30:33 +0100 Subject: [PATCH] =?UTF-8?q?Am=C3=A9lioration=20de=20la=20gestion=20des=20l?= =?UTF-8?q?ignes=20de=20continuation=20dans=20BakefileParser=20pour=20cons?= =?UTF-8?q?erver=20le=20contenu=20entier=20et=20ajuster=20l'ajout=20d'espa?= =?UTF-8?q?ces=20apr=C3=A8s=20certains=20op=C3=A9rateurs.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/fr/monlouyan/bakefile/BakefileParser.java | 51 +++++++++++-------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/src/fr/monlouyan/bakefile/BakefileParser.java b/src/fr/monlouyan/bakefile/BakefileParser.java index a6f5a54..b95728f 100644 --- a/src/fr/monlouyan/bakefile/BakefileParser.java +++ b/src/fr/monlouyan/bakefile/BakefileParser.java @@ -87,26 +87,37 @@ public class BakefileParser { * @return La ligne combinée */ private String handleContinuationLines(List<String> lines, int startIndex) { - StringBuilder combinedLine = new StringBuilder(); - int i = startIndex; - - while (i < lines.size()) { - String line = lines.get(i); - Matcher contMatcher = CONTINUATION_PATTERN.matcher(line); - - if (contMatcher.matches()) { - // Ajouter la ligne sans le backslash - combinedLine.append(contMatcher.group(1).trim()).append(" "); - i++; - } else { - // Ajouter la dernière ligne et sortir - combinedLine.append(line.trim()); - break; - } - } - - return combinedLine.toString(); - } + StringBuilder combinedLine = new StringBuilder(); + int i = startIndex; + + while (i < lines.size()) { + String line = lines.get(i); + Matcher contMatcher = CONTINUATION_PATTERN.matcher(line); + + if (contMatcher.matches()) { + // Ajouter la ligne sans le backslash mais conserver le contenu entier + // Ne pas ajouter d'espace après certains opérateurs comme && + String content = contMatcher.group(1); + combinedLine.append(content); + + // Si la ligne ne se termine pas déjà par un opérateur tel que &&, ajouter un espace + if (!content.trim().endsWith("&&") && !content.trim().endsWith("|") && + !content.trim().endsWith(";")) { + combinedLine.append(" "); + } else { + // Si elle se termine par &&, |, ou ;, ajouter juste un espace après + combinedLine.append(" "); + } + i++; + } else { + // Ajouter la dernière ligne et sortir + combinedLine.append(line.trim()); + break; + } + } + + return combinedLine.toString(); + } /** * Remplacer les variables dans une chaîne.