RFR: JDK-8298405: Support Markdown in the standard doclet

Jonathan Gibbons jjg at openjdk.org
Sat Jan 7 00:55:57 UTC 2023


On Tue, 3 Jan 2023 20:09:27 GMT, Pavel Rappo <prappo at openjdk.org> wrote:

>> Support for Markdown comments in the standard doclet.
>> 
>> To enable Markdown in a comment, start the comment with `/**md` followed by whitespace.  The syntax is as defined for CommonMark.
>> 
>> The work is in 3 parts:
>> 
>> 1. Update the Compiler Tree API to support Markdown tree nodes, containing strings of (uninterpreted) Markdown source code.
>> 2. Import commonmark-java into the `jdk.javadoc` module, to be able to convert Markdown strings to HTML.
>> 3. Update the standard doclet, to leverage the preceding two parts, to translate Markdown in documentation comments to `Content` nodes.
>> 
>> There are new tests both for the low level work in the Compiler Tree API, and for the overall high-level work in the doclet.
>
> src/jdk.compiler/share/classes/com/sun/source/doctree/MarkdownTree.java line 2:
> 
>> 1: /*
>> 2:  * Copyright (c) 2011, 2021, Oracle and/or its affiliates. All rights reserved.
> 
> 2011?

fixed, 2022, 2023

> src/jdk.compiler/share/classes/com/sun/source/doctree/package-info.java line 30:
> 
>> 28:  * trees (AST).
>> 29:  *
>> 30:  * <h2>Markdown</h2>
> 
> Consider updating the copyright years in this file.

done

> src/jdk.javadoc/share/classes/jdk/internal/org/commonmark/internal/util/Html5Entities.java line 15:
> 
>> 13: 
>> 14:     private static final Map<String, String> NAMED_CHARACTER_REFERENCES = readEntities();
>> 15:     private static final String ENTITY_PATH = "/org/commonmark/internal/util/entities.properties";
> 
> This properties file is missing from this PR. If you add a test with an md- doc comment that has entities (e.g. `&amp`), the test will crash.

fixed. 

Actually, the `.properties` file is not a Properties file as defined in `java.util.Properties` and is read line-at-a-time with custom code.  To avoid automated compilation of the file by the JDK build system, the file needs to avoid the `.properties` extension.  Currently, using plain old `.txt`.

> src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java line 1248:
> 
>> 1246:     }
>> 1247: 
>> 1248:     private class MarkdownHandler {
> 
> Changes in this file seem to be the meat of the mechanism whereby Markdown-JavaDoc-HTML soup is handled. The mechanics looks good.

Thanks for checking.

-------------

PR: https://git.openjdk.org/jdk/pull/11701


More information about the javadoc-dev mailing list