1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
<?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();
}
}
|