A Symfony 5+ bundle to integrate league/commonmark v2, allowing you to set multiple Commonmark converters.
This bundle requires PHP 8+ and Symfony 5+.
composer require yivoff/commonmark-bundleIf for some reason you are running without Symfony Flex, enable the bundle as
usual adding Yivoff\CommonmarkBundle\YivoffCommonmarkBundle to the bundle's array.
You'll need to enable at least one converter to use the bundle.
Create a YAML configuration file at path config/packages/aymdev_commonmark.yaml.
Here is an example configuration declaring 2 converters:
yivoff_commonmark:
converters:
commonmark:
options:
commonmark:
enable_em: false
github:
type: github
my_custom:
type: custom
extensions:
- League\CommonMark\Extension\Autolink\AutolinkExtension
- League\CommonMark\Extension\InlinesOnly\InlinesOnlyExtension
Setting up at least one converter is mandatory, but all settings are optional. By default,
a converter without setting a type will be created as a CommonMark converter.
The type key can be used to choose between a CommonMark, a GitHub Flavoured or a Custom converter.
By default, if not type is chosen, CommonMark will be chosen.
You can use the options key holds the configuration passed to the converter, as an array.
Check the CommonMark documentation to learn more about the available options.
The CommonMark and Github Flavoured have a predefined set of extensions installed, which cannot be changed.
But custom starts with no extensions, and you pick and choose
which extensions you want to enable using the
extensions key.
This key has no effect on github or commonmark type converters.
Each of the defined converters is available as a service within the container.
The id is generated with the following format: yivoff_commonmark.converters.converter_name.
For the converters in the configuration example three services would be generated:
yivoff_commonmark.converters.commonmarkyivoff_commonmark.converters.githubyivoff_commonmark.converters.my_custom
Additionally, the bundle registers an alias for each service, so one can use the service directly for autowiring.
Again, for the above example the registered aliases would be:
League\CommonMark\ConverterInterface $commonmarkLeague\CommonMark\ConverterInterface $githubLeague\CommonMark\ConverterInterface $myCustom
The bundle defines a Twig filter: commonmark.
If you have defined multiple converters, you need to pass the name of the converter you want to use:
{{ some_markdown_content|commonmark('github') }}But If you have only one converter defined, the parameter can be omitted.
{{ some_markdown_content|commonmark }}