knplabs/knp-markdown-bundle

This package is abandoned and no longer maintained. The author suggests using the twig/markdown-extra package instead.

Knplabs markdown bundle transforms markdown into html

Maintainers

👁 KnpLabs

Package info

github.com/KnpLabs/KnpMarkdownBundle

Homepage

Type:symfony-bundle

pkg:composer/knplabs/knp-markdown-bundle

Statistics

Installs: 6 034 299

Dependents: 50

Suggesters: 2

Stars: 425

Open Issues: 10

1.10.0 2022-01-26 18:46 UTC

Requires

Requires (Dev)

Suggests

  • ext-sundown: to use optional support for php-sundown extension instead of php implementation
  • symfony/twig-bundle: to use the Twig markdown filter

Provides

None

Conflicts

None

Replaces

None

MIT dc113af8545522c7a57630c6b2fe6e51523f6deb

markdownknpknplabsbundle


README

WARNING: This bundle is abandoned in favor of markdown_to_html Twig filter. Please, consider using it instead. Migration should be easy because it also supports michelf/php-markdown Markdown parser that is used in this project under the hood.

Provide markdown conversion (based on Michel Fortin work) to your Symfony projects.

👁 Build Status

👁 ci.yml
👁 php.yml

INSTALLATION

Add KnpMarkdownBundle to your project via Composer:

composer require knplabs/knp-markdown-bundle

If you're not using Symfony Flex, you will also need to enable the bundle in your app/AppKernel.php file (new Knp\Bundle\MarkdownBundle\KnpMarkdownBundle()).

That's it! Start using it!

USAGE

Once the bundle is installed, you can autowire a MarkdownParserInterface into any service or controller:

use Knp\Bundle\MarkdownBundle\MarkdownParserInterface;

// from inside a controller
public function index(MarkdownParserInterface $parser)
{
 $html = $parser->transformMarkdown($text);
}

// or from inside a service
private $parser;

public function __construct(MarkdownParserInterface $parser)
{
 $this->parser = $parser;
}

public function someMethod()
{
 $html = $this->parser->transformMarkdown($text);
}

There is also a public markdown.parser service you can use.

In Twig, you can use the markdown filter:

{# Use default parser #}
{{ my_data|markdown }}

{# If my_data is entered by a user, escape HTML tags before printing it #}
{{ my_data|escape|markdown }}
{# or strip HTML tags #}
{{ my_data|striptags|markdown }}

{# Or select specific parser #}
{{ my_data|markdown('parserName') }}

Change the parser implementation

Create a service implementing Knp\Bundle\MarkdownBundle\MarkdownParserInterface, then configure the bundle to use it:

# Symfony 3: app/config/config.yml
# Symfony 4: config/packages/knp_markdown.yaml (you'll need to create this)
knp_markdown:
 parser:
 service: my.markdown.parser

Alternatively if you are using the markdown.parser.sundown there are options for enabling sundown extensions and render flags, see the default Configuration with:

php bin/console config:dump-reference knp_markdown

This bundle comes with 5 parser services, 4 based on the same algorithm but providing different levels of compliance to the markdown specification, and one which is uses the php sundown extension:

- markdown.parser.max // fully compliant = slower (default implementation)
- markdown.parser.medium // expensive and uncommon features dropped
- markdown.parser.light // expensive features dropped
- markdown.parser.min // most features dropped = faster
- markdown.parser.sundown // faster and fully compliant (recommended)

markdown.parser.sundown requires the php sundown extension.

For more details, see the implementations in Parser/Preset.