mirror of
https://github.com/twigphp/Twig.git
synced 2026-08-20 07:43:05 +00:00
100 lines
4.1 KiB
PHP
100 lines
4.1 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.7/configuration}.
|
|
*/
|
|
private function addCommonMarkConfiguration(ArrayNodeDefinition $rootNode): void
|
|
{
|
|
$rootNode
|
|
->children()
|
|
->arrayNode('commonmark')
|
|
->ignoreExtraKeys(false)
|
|
->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()
|
|
->integerNode('max_delimiters_per_line')
|
|
->info('The maximum number of strong/emphasis delimiters per line.')
|
|
->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();
|
|
}
|
|
}
|