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(); } }