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.