mirror of
https://github.com/twigphp/Twig.git
synced 2026-08-24 10:36:26 +00:00
3cdf26fe76
This PR was merged into the 3.x branch.
Discussion
----------
Added configuration for commonmark use in twig-extra-bundle.
Following this tweet: https://twitter.com/ramsey/status/1561894460560138241, this PR adds the configuration options for `commonmark` to the `twig-extra-bundle`.
The configuration is added to the `LeagueCommonMarkConverterFactory` and in turn injected in the `CommonMarkConverter`. This way a user can provide the configuration for usage inside twig.
I'm not sure if adding the configuration inside the extension is the way to go.
Hope this helps out at least `@ramsey` :-)
Added `ignoreExtraKeys` to be somewhat future proof in case extra configuration is added later on, and also to be able to provide de configuration for extensions.
Commits
-------
6f20629622 Added configuration for commonmark use in twig-extra-bundle.
96 lines
3.9 KiB
PHP
96 lines
3.9 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of Twig.
|
|
*
|
|
* (c) Fabien Potencier
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Twig\Extra\TwigExtraBundle\DependencyInjection;
|
|
|
|
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
|
|
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
|
|
use Symfony\Component\Config\Definition\ConfigurationInterface;
|
|
use Twig\Extra\TwigExtraBundle\Extensions;
|
|
|
|
class Configuration implements ConfigurationInterface
|
|
{
|
|
public function getConfigTreeBuilder(): TreeBuilder
|
|
{
|
|
$treeBuilder = new TreeBuilder('twig_extra');
|
|
$rootNode = $treeBuilder->getRootNode();
|
|
|
|
foreach (Extensions::getClasses() as $name => $class) {
|
|
$rootNode
|
|
->children()
|
|
->arrayNode($name)
|
|
->{class_exists($class) ? 'canBeDisabled' : 'canBeEnabled'}()
|
|
->end()
|
|
->end()
|
|
;
|
|
}
|
|
|
|
$this->addCommonMarkConfiguration($rootNode);
|
|
|
|
return $treeBuilder;
|
|
}
|
|
|
|
/**
|
|
* Full configuration from {@link https://commonmark.thephpleague.com/2.3/configuration}.
|
|
*/
|
|
private function addCommonMarkConfiguration(ArrayNodeDefinition $rootNode): void
|
|
{
|
|
$rootNode
|
|
->children()
|
|
->arrayNode('commonmark')
|
|
->ignoreExtraKeys()
|
|
->children()
|
|
->arrayNode('renderer')
|
|
->info('Array of options for rendering HTML.')
|
|
->children()
|
|
->scalarNode('block_separator')->end()
|
|
->scalarNode('inner_separator')->end()
|
|
->scalarNode('soft_break')->end()
|
|
->end()
|
|
->end()
|
|
->enumNode('html_input')
|
|
->info('How to handle HTML input.')
|
|
->values(['strip','allow','escape'])
|
|
->end()
|
|
->booleanNode('allow_unsafe_links')
|
|
->info('Remove risky link and image URLs by setting this to false.')
|
|
->defaultTrue()
|
|
->end()
|
|
->integerNode('max_nesting_level')
|
|
->info('The maximum nesting level for blocks.')
|
|
->defaultValue(PHP_INT_MAX)
|
|
->end()
|
|
->arrayNode('slug_normalizer')
|
|
->info('Array of options for configuring how URL-safe slugs are created.')
|
|
->children()
|
|
->variableNode('instance')->end()
|
|
->integerNode('max_length')->defaultValue(255)->end()
|
|
->variableNode('unique')->end()
|
|
->end()
|
|
->end()
|
|
->arrayNode('commonmark')
|
|
->info('Array of options for configuring the CommonMark core extension.')
|
|
->children()
|
|
->booleanNode('enable_em')->defaultTrue()->end()
|
|
->booleanNode('enable_strong')->defaultTrue()->end()
|
|
->booleanNode('use_asterisk')->defaultTrue()->end()
|
|
->booleanNode('use_underscore')->defaultTrue()->end()
|
|
->arrayNode('unordered_list_markers')
|
|
->scalarPrototype()->end()
|
|
->defaultValue([['-', '*', '+']])->end()
|
|
->end()
|
|
->end()
|
|
->end()
|
|
->end()
|
|
->end();
|
|
}
|
|
}
|