markedj build Maven Central License
JVM port of graceful markdown processor marked.js.
First, add following dependency into your pom.xml:
<dependencies> <dependency> <groupId>io.github.gitbucket</groupId> <artifactId>markedj</artifactId> <version>1.0.20</version> </dependency> </dependencies>
You can easily use markedj via io.github.gitbucket.markedj.Marked:
import io.github.gitbucket.markedj.*; String markdown = ... // With default options String html1 = Marked.marked(markdown); // Specify options Options options = new Options(); options.setSanitize(true); String html2 = Marked.marked(markdown, options);
io.github.gitbucket.markedj.Options has following properties to control Markdown conversion:
| Name | Default | Description |
|---|---|---|
| gfm | true | Enable GitHub Flavored Markdown. |
| tables | true | Enable GFM tables. This option requires the gfm option to be true. |
| breaks | false | Enable GFM line breaks. This option requires the gfm option to be true. |
| sanitize | false | Ignore any HTML that has been input. |
| langPrefix | "lang-" | Prefix of class attribute of code block |
| headerPrefix | "" | Prefix of id attribute of header |
| safelist | See Options.java | Safelist of HTML tags. |
| extensions | empty | Extensions. See Extensions section |
By default, markedj uses Jsoup's safelist mechanism for HTML rendering. It restricts renderable tags, attributes and even protocols of attribute values. For example, the image url must be http:// or https:// by default. You can remove this restriction by customizing the safelist as follows:
String html1 = Marked.marked(""); // => <p><img alt=\"alt text\" title=\"title\"></p> Options options = new Options(); options.getSafelist().removeProtocols("img", "src", "http", "https"); String html2 = Marked.marked("", options); // => <p><img src="/img/some-image.png" alt="alt text" title="title"></p>
Markedj can be extended by implementing custom extensions. Extensions can be used by adding them to the options.
Options options = new Options(); options.addExtension(new GFMAlertExtension()); String html = Marked.marked("> [!NOTE]\n> This is a note!", options);
Support for github like alerts.
For styling, some project-specific CSS is required.
Options options = new Options(); // Override default title for note alert GFMAlertOptions alertOptions = new GFMAlertOptions(); alertOptions.setTitle(GFMAlerts.Alert.WARNING, "Attention!!!"); GFMAlertExtension gfmAlerts = new GFMAlertExtension(alertOptions); options.addExtension(gfmAlerts); String html = Marked.marked("> [!NOTE]\n> This is a note!", options);
Supported alert types are NOTE, TOP, IMPORTANT, WARNING, and CAUTION. Here is a Markdown example:
> [!NOTE] > Useful information that users should know, even when skimming content.
This is translated to the following HTML:
<div class="markdown-alert markdown-alert-note"> <p class="markdown-alert-title">Note</p> <p>Useful information that users should know, even when skimming content.</p> </div>
Generated HTML can be customized by implementing your own renderer. DefaultGFMAlertRenderer is used by default.
Run the following command to upload artifacts to sonatype:
mvn clean deploy -DperformRelease=true
Then, go to https://oss.sonatype.org/, close and release the staging repository.