Skip to content
Markdown support for Twig
PHP
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src tweaked default configuration for HTML to Markdown Feb 25, 2019
test strip tags by default in html_to_markdown Feb 25, 2019
.gitignore added initial version Feb 24, 2019
.php_cs.dist added initial version Feb 24, 2019
CHANGELOG.md added initial version Feb 24, 2019
LICENSE added initial version Feb 24, 2019
README.md added a note about the runtime Jun 2, 2019
composer.json minor #4 Fix league/commonmark constraint (colinodell) Feb 25, 2019
phpunit.xml.dist

README.md

Twig Markdown Extension

This package provides a Markdown to HTML filter (markdown) and an HTML to Markdown filter (html_to_markdown) for Twig and a Symfony bundle.

If you are not using Symfony, register the extension on Twig's Environment manually:

use Twig\Markdown\MarkdownExtension;
use Twig\Environment;

$twig = new Environment(...);
$twig->addExtension(new MarkdownExtension());

You must also register the extension runtime (skip this step if you are using Symfony or a framework with a Twig integration):

use Twig\Markdown\DefaultMarkdown;
use Twig\Markdown\MarkdownRuntime;
use Twig\RuntimeLoader\RuntimeLoaderInterface;

$twig->addRuntimeLoader(new class implements RuntimeLoaderInterface {
    public function load($class) {
        if (MarkdownRuntime::class === $class) {
            return new MarkdownRuntime(new DefaultMarkdown());
        }
    }
});

Use the markdown and html_to_markdown filters from a Twig template:

{% filter markdown %}
Title
======

Hello!
{% endfilter %}

{% filter html_to_markdown %}
    <html>
        <h1>Hello!</h1>
    </html>
{% endfilter %}

Note that you can indent the Markdown content as leading whitespaces will be removed consistently before conversion:

{% filter markdown %}
    Title
    ======

    Hello!
{% endfilter %}

You can also add some options by passing them as an argument to the filter:

{% filter html_to_markdown({hard_break: false}) %}
    <html>
        <h1>Hello!</h1>
    </html>
{% endfilter %}

You can also use the filters on an included file:

{{ include('some_template.html.twig')|html_to_markdown }}

{{ include('some_template.markdown.twig')|markdown }}
You can’t perform that action at this time.