Skip to content

Commit

Permalink
Add support for MD strikethrough and tables
Browse files Browse the repository at this point in the history
  • Loading branch information
DanClowry committed Nov 30, 2019
1 parent 7e41aa8 commit 28e6367
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@
import com.danclowry.noteapp.models.Note;
import com.danclowry.noteapp.util.AlertBuilder;
import com.danclowry.noteapp.util.LoadFXML;
import com.vladsch.flexmark.ext.gfm.strikethrough.StrikethroughExtension;
import com.vladsch.flexmark.ext.tables.TablesExtension;
import com.vladsch.flexmark.parser.Parser;
import com.vladsch.flexmark.util.data.DataSet;
import com.vladsch.flexmark.util.data.MutableDataSet;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
Expand All @@ -20,6 +25,7 @@

import java.io.IOException;
import java.sql.SQLException;
import java.util.Arrays;

public class EditorController {
@FXML
Expand Down Expand Up @@ -48,7 +54,9 @@ public class EditorController {
private int currentIndex;

public void initialize() {
MarkdownParser mdParser = new MarkdownParser();
DataSet parseOptions = new MutableDataSet().set(Parser.EXTENSIONS,
Arrays.asList(StrikethroughExtension.create(), TablesExtension.create()));
MarkdownParser mdParser = new MarkdownParser(parseOptions);

markdownViewer.getEngine().setUserStyleSheetLocation(getClass().getResource("/css/md-viewer.css").toString());

Expand Down
19 changes: 16 additions & 3 deletions src/main/java/com/danclowry/noteapp/markdown/MarkdownParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,27 @@

import com.vladsch.flexmark.html.HtmlRenderer;
import com.vladsch.flexmark.parser.Parser;
import com.vladsch.flexmark.util.ast.Node;
import com.vladsch.flexmark.util.data.DataHolder;
import com.vladsch.flexmark.util.data.MutableDataHolder;
import com.vladsch.flexmark.util.data.MutableDataSet;

public class MarkdownParser {

private Parser parser = Parser.builder().build();
private HtmlRenderer renderer = HtmlRenderer.builder().build();
private final MutableDataHolder options = new MutableDataSet();
private Parser parser;
private HtmlRenderer renderer;
private String htmlTemplate = "<!DOCTYPE html><body>PLACEHOLDER</body>";

public MarkdownParser() {
this(new MutableDataSet());
}

public MarkdownParser(DataHolder parserOptions) {
options.setAll(parserOptions);
parser = Parser.builder(options).build();
renderer = HtmlRenderer.builder(options).build();
}

public String parseToHTML(String input) {
String mdHTML = renderer.render(parser.parse(input));
return htmlTemplate.replace("PLACEHOLDER", mdHTML);
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/module-info.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
requires flexmark;
requires flexmark.util;
requires java.desktop;
requires flexmark.ext.gfm.strikethrough;
requires flexmark.ext.tables;

opens com.danclowry.noteapp to javafx.fxml;
opens com.danclowry.noteapp.controllers to javafx.fxml;
Expand Down

0 comments on commit 28e6367

Please sign in to comment.