diff --git a/src/main/java/app/model/languages/Java.java b/src/main/java/app/model/languages/Java.java index 9d269ca..5d4bb93 100644 --- a/src/main/java/app/model/languages/Java.java +++ b/src/main/java/app/model/languages/Java.java @@ -7,6 +7,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.regex.Pattern; import java.util.stream.Collectors; +import java.util.stream.Stream; import app.model.ProgrammingLanguage; @@ -106,8 +107,21 @@ public class Java implements ProgrammingLanguage { } public boolean isCommentedSelection(String selection) { - // TODO: Fix - return selection.startsWith("/*"); + var lines = selection.split("\n"); + + boolean midPartStartsWithStar = + lines.length < 2 || + Arrays.asList(Arrays.copyOfRange(lines, 1, lines.length - 1)) + .stream() + .map(l -> l.startsWith(" * ")) + .allMatch(b -> b); + + return + Stream.of( + selection.startsWith("/*"), + midPartStartsWithStar, + selection.endsWith(" */") + ).allMatch(b -> b); } } diff --git a/src/main/java/app/model/languages/Markdown.java b/src/main/java/app/model/languages/Markdown.java index ff13847..e71c533 100644 --- a/src/main/java/app/model/languages/Markdown.java +++ b/src/main/java/app/model/languages/Markdown.java @@ -60,46 +60,49 @@ public class Markdown implements ProgrammingLanguage { // ---------------------------------------------------------------- - // TODO: fix spacing of arrows + String cStart = ""; + String cStartRegex = "\\s{0,}"; public String commentLine(String line) { - return ""; + return cStart + line + cEnd; } public String unCommentLine(String line) { return line - .replaceFirst("\\s+?", ""); + .replaceFirst(cStartRegex, "") + .replaceAll(cEndRegex, ""); } public boolean isCommentedLine(String line) { - return line.startsWith(""); + return line.startsWith(cStart) && line.endsWith(cEnd); } public String commentSelection(String selection) { return - ""; + cStart + selection + cEnd; } public String unCommentSelection(String selection) { - var lines = selection.split("\n"); - var firstLine = lines[0]; - var lastLine = lines[lines.length - 1]; - var midlines = Arrays.copyOfRange(lines, 1, lines.length - 1); + String[] lines = selection.split("\n"); + String firstLine = lines[0]; + String lastLine = lines[lines.length - 1]; + + String midLineString = + lines.length < 3 ? + "" : + String.join("\n", Arrays.copyOfRange(lines, 1, lines.length - 1)) + "\n"; return - firstLine.replaceFirst("\\s+?", ""); + firstLine.replaceFirst(cStartRegex, "") + "\n" + + midLineString + + lastLine.replaceAll(cEndRegex, ""); } public boolean isCommentedSelection(String selection) { - return selection.startsWith(""); + return selection.startsWith(cStart) && selection.endsWith(cEnd); } }