Fork me on GitHub

FreeMarkerDown

This library is simply a combination of Freemarker and PegDown. The use case is: You want to render Markdown but you also want to have the features from a template engine. Yes, you can combine such two libraries to do that. Or you can save time because I’ve done that for you: Here is FreeMarkerDown.

With FreeMarkerDown you can render an string as a FrreMarker template and after that it will be converted to Markdown. Additionaly you can process the template string before the rendering with pre processors.

Example

        final FreeMarkerDown fmd = FreeMarkerDown.create();
        final Fragment template = fmd.createFragemnt(
                "# A Title\n"
                + "\n"
                + "<?fdm-keyvalue\n"
                + "    key1: value one\n"
                + "    key2: 42\n"
                + "?>\n"
                + "\n"
                + "Lorem ipsum dolor sit amet.\n"
                + "\n"
                + "## A List\n"
                + "\n"
                + "<#list sequence as item>\n"
                + "- ${item}\n"
                + "</#list>");
        template.assignVariable("sequence", Arrays.asList("foo", "bar", "baz"));
        final Map<String, String> keyValues = Maps.newHashMap();
        final PreProcessor processor = PreProcessors.createKeyValueProcessor(keyValues);
        fmd.register(processor);
        assertThat(fmd.render(template), is(
                "<h1>A Title</h1>"
                + "<p>Lorem ipsum dolor sit amet.</p>"
                + "<h2>A List</h2>\n"
                + "<ul>\n"
                + "  <li>foo</li>\n"
                + "  <li>bar</li>\n"
                + "  <li>baz</li>\n"
                + "</ul>"));
        assertThat(keyValues.size(), is(2));
        assertThat(keyValues, allOf(hasEntry("key1", "value one"), hasEntry("key2", "42")));

For more details how it works see the examples and architecture site.

Installation

Add this <dependency> to your Maven pom.xml:

<dependencies>

    <!-- ... -->

    <dependency>
        <groupId>de.weltraumschaf</groupId>
        <artifactId>freemarkerdown</artifactId>
        <version>1.0.0-beta</version>
    </dependency>

    <!-- ... -->

<dependencies>

For manual instalation clone this repository and run Maven. You need at least Maven 3.0.3 or above installed:

$> git clone https://github.com/Weltraumschaf/freemarkerdown.git
$> cd freemarkerdown
$> mvn clean install

Or you can download the jar-file directly from the Maven Central Repository.

Links

The examples in this project site is included with some Velocity macros.