Skip to content

Commit 62e5c7f

Browse files
FlorianKroissrubenporras
authored andcommitted
fix: Use Markdown renderer singleton in LSPEclipseUtils
1 parent fb7adfe commit 62e5c7f

3 files changed

Lines changed: 32 additions & 11 deletions

File tree

org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/edit/LSPEclipseUtilsTest.java

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,12 @@
1313
*******************************************************************************/
1414
package org.eclipse.lsp4e.test.edit;
1515

16-
import static org.junit.jupiter.api.Assertions.*;
17-
import static org.junit.jupiter.api.Assumptions.*;
16+
import static org.junit.jupiter.api.Assertions.assertEquals;
17+
import static org.junit.jupiter.api.Assertions.assertFalse;
18+
import static org.junit.jupiter.api.Assertions.assertNotEquals;
19+
import static org.junit.jupiter.api.Assertions.assertNotNull;
20+
import static org.junit.jupiter.api.Assertions.assertNull;
21+
import static org.junit.jupiter.api.Assertions.assertTrue;
1822

1923
import java.io.ByteArrayInputStream;
2024
import java.io.ByteArrayOutputStream;
@@ -31,6 +35,7 @@
3135
import java.util.List;
3236
import java.util.Random;
3337
import java.util.UUID;
38+
import java.util.stream.Stream;
3439

3540
import org.eclipse.core.filesystem.EFS;
3641
import org.eclipse.core.resources.IFile;
@@ -40,6 +45,7 @@
4045
import org.eclipse.core.runtime.CoreException;
4146
import org.eclipse.core.runtime.IPath;
4247
import org.eclipse.core.runtime.NullProgressMonitor;
48+
import org.eclipse.jdt.annotation.Nullable;
4349
import org.eclipse.jface.text.IDocument;
4450
import org.eclipse.jface.text.ITextViewer;
4551
import org.eclipse.lsp4e.LSPEclipseUtils;
@@ -50,6 +56,8 @@
5056
import org.eclipse.lsp4j.CompletionTriggerKind;
5157
import org.eclipse.lsp4j.CreateFile;
5258
import org.eclipse.lsp4j.Location;
59+
import org.eclipse.lsp4j.MarkupContent;
60+
import org.eclipse.lsp4j.MarkupKind;
5361
import org.eclipse.lsp4j.Position;
5462
import org.eclipse.lsp4j.Range;
5563
import org.eclipse.lsp4j.RenameFile;
@@ -71,6 +79,9 @@
7179
import org.junit.jupiter.api.condition.OS;
7280
import org.junit.jupiter.api.extension.RegisterExtension;
7381
import org.junit.jupiter.api.io.TempDir;
82+
import org.junit.jupiter.params.ParameterizedTest;
83+
import org.junit.jupiter.params.provider.Arguments;
84+
import org.junit.jupiter.params.provider.MethodSource;
7485

7586
public class LSPEclipseUtilsTest extends AbstractTestWithProject {
7687

@@ -612,4 +623,19 @@ public void parseRange_shouldReturnNullRange_NoFragment() {
612623
Range actual = LSPEclipseUtils.parseRange("file:///a/b");
613624
assertNull(actual);
614625
}
626+
627+
public static Stream<Arguments> getHtmlDocString() {
628+
return Stream.of( //
629+
Arguments.of(Either.forLeft(null), null), //
630+
Arguments.of(Either.forLeft("test"), "<p>test</p>"), //
631+
Arguments.of(Either.forRight(new MarkupContent(MarkupKind.MARKDOWN, "# hi!")), "<h1>hi!</h1>\n") //
632+
);
633+
}
634+
635+
@ParameterizedTest
636+
@MethodSource
637+
void getHtmlDocString(Either<@Nullable String, MarkupContent> arg, String expected) throws Exception {
638+
assertEquals(expected, LSPEclipseUtils.getHtmlDocString(arg));
639+
}
640+
615641
}

org.eclipse.lsp4e/src/org/eclipse/lsp4e/LSPEclipseUtils.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
*******************************************************************************/
2222
package org.eclipse.lsp4e;
2323

24-
import static org.eclipse.lsp4e.internal.NullSafetyHelper.*;
24+
import static org.eclipse.lsp4e.internal.NullSafetyHelper.castNonNull;
2525

2626
import java.io.ByteArrayInputStream;
2727
import java.io.ByteArrayOutputStream;
@@ -48,9 +48,6 @@
4848
import java.util.regex.Pattern;
4949
import java.util.stream.Collectors;
5050

51-
import org.commonmark.node.Node;
52-
import org.commonmark.parser.Parser;
53-
import org.commonmark.renderer.html.HtmlRenderer;
5451
import org.eclipse.core.filebuffers.FileBuffers;
5552
import org.eclipse.core.filebuffers.IFileBuffer;
5653
import org.eclipse.core.filebuffers.ITextFileBuffer;
@@ -92,6 +89,7 @@
9289
import org.eclipse.jface.viewers.ISelectionProvider;
9390
import org.eclipse.lsp4e.internal.ArrayUtil;
9491
import org.eclipse.lsp4e.internal.DocumentInputStream;
92+
import org.eclipse.lsp4e.internal.MarkdownUtil;
9593
import org.eclipse.lsp4e.internal.ResourceForUriCache;
9694
import org.eclipse.lsp4e.refactoring.CreateFileChange;
9795
import org.eclipse.lsp4e.refactoring.DeleteExternalFile;
@@ -1493,10 +1491,7 @@ public static List<IContentType> getDocumentContentTypes(IDocument document) {
14931491
String kind = markupContent.getKind();
14941492
if (MARKDOWN.equalsIgnoreCase(kind) || MD.equalsIgnoreCase(kind)) {
14951493
try {
1496-
Parser parser = Parser.builder().build();
1497-
Node document = parser.parse(text);
1498-
HtmlRenderer renderer = HtmlRenderer.builder().build();
1499-
return renderer.render(document);
1494+
return MarkdownUtil.renderToHtml(text);
15001495
} catch (Exception e) {
15011496
LanguageServerPlugin.logError(e);
15021497
return htmlParagraph(text);

org.eclipse.lsp4e/src/org/eclipse/lsp4e/internal/MarkdownUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public class MarkdownUtil {
2727
private static final List<Extension> EXTENSIONS = List.of(TablesExtension.create());
2828

2929
/**
30-
* Singleton instance, as both classes are thread-safe, see
30+
* Singleton instances, as both classes are thread-safe, see
3131
* https://github.com/commonmark/commonmark-java?tab=readme-ov-file#thread-safety
3232
*/
3333
private static final Parser PARSER = Parser.builder().extensions(EXTENSIONS).build();

0 commit comments

Comments
 (0)