src/main/java/de/uapcore/lightpit/viewmodel/IssueDetailView.java

Sat, 05 Dec 2020 13:05:00 +0100

author
Mike Becker <universe@uap-core.de>
date
Sat, 05 Dec 2020 13:05:00 +0100
changeset 162
2adc8623dd89
parent 146
b0e83cab0bde
permissions
-rw-r--r--

enables markdown support in issue descriptions and comments - fixes #10

package de.uapcore.lightpit.viewmodel;

import com.vladsch.flexmark.ext.gfm.strikethrough.StrikethroughExtension;
import com.vladsch.flexmark.ext.tables.TablesExtension;
import com.vladsch.flexmark.html.HtmlRenderer;
import com.vladsch.flexmark.parser.Parser;
import com.vladsch.flexmark.util.data.MutableDataSet;
import de.uapcore.lightpit.entities.Issue;
import de.uapcore.lightpit.entities.IssueComment;

import java.util.Arrays;
import java.util.List;

public class IssueDetailView extends ProjectView {
    private Issue issue;

    private List<IssueComment> comments;

    public void setIssue(Issue issue) {
        this.issue = issue;
    }

    public Issue getIssue() {
        return issue;
    }

    public List<IssueComment> getComments() {
        return comments;
    }

    public void setComments(List<IssueComment> comments) {
        this.comments = comments;
    }

    public void processMarkdown() {
        final var options = new MutableDataSet()
                .set(Parser.EXTENSIONS, Arrays.asList(TablesExtension.create(), StrikethroughExtension.create()))
                .toImmutable();
        final var parser = Parser.builder(options).build();
        final var renderer = HtmlRenderer.builder(options).build();

        issue.setDescription(renderer.render(parser.parse(issue.getDescription())));
        for (var comment : comments) {
            comment.setComment(renderer.render(parser.parse(comment.getComment())));
        }
    }
}

mercurial