<?php /* * © 2016 IRSTEA * Guillaume Perréal <guillaume.perreal@irstea.fr> * Tous droits réservés. */ namespace Irstea\PlantUmlBundle\DependencyInjection; use Symfony\Component\Config\Definition\Builder\TreeBuilder; use Symfony\Component\Config\Definition\ConfigurationInterface; /** * Description of Configuration * * @author Guillaume Perréal <guillaume.perreal@irstea.fr> */ class Configuration implements ConfigurationInterface { public function getConfigTreeBuilder() { $treeBuilder = new TreeBuilder(); $treeBuilder->root('irstea_plant_uml') ->children() ->arrayNode('binaries') ->addDefaultsIfNotSet() ->children() ->scalarNode('java') ->defaultValue("java") ->end() ->scalarNode('plamtuml_jar') ->defaultValue("plantuml.jar") ->end() ->scalarNode('dot') ->defaultValue("dot") ->end() ->end() ->end() ->append($this->buildGraphNode()) ->end(); return $treeBuilder; } protected function buildGraphNode() { $node = (new TreeBuilder())->root('graphs'); $node ->useAttributeAsKey('name') ->prototype('array') ->children() ->arrayNode('sources') ->addDefaultsIfNotSet() ->children() ->enumNode('type') ->defaultValue('classes') ->values(['classes', 'entities']) ->end() ->scalarNode('entity_manager') ->defaultValue('default') ->end() ->arrayNode('directories') ->defaultValue(['%kernel.root_dir%/../src']) ->prototype('scalar')->end() ->end() ->append($this->buildFilterNode('include')) ->append($this->buildFilterNode('exclude')) ->end() ->end() ->arrayNode('layout') ->addDefaultsIfNotSet() ->children() ->enumNode('namespaces') ->defaultValue('php') ->values(['bundles', 'php', 'flat', 'entities']) ->end() ->append($this->buildFilterNode('include')) ->append($this->buildFilterNode('exclude')) ->end() ->end() ->arrayNode('decoration') ->addDefaultsIfNotSet() ->children() ->arrayNode('decorators') ->defaultValue(['inheritance', 'entity', 'associations', 'properties', 'methods']) ->prototype('enum') ->values(['inheritance', 'entity', 'associations', 'properties', 'methods']) ->end() ->end() ->append($this->buildFilterNode('include')) ->append($this->buildFilterNode('exclude')) ->end() ->end() ->end() ->end(); return $node; } protected function buildFilterNode($nodeName) { $node = (new TreeBuilder())->root($nodeName); $node ->children() ->arrayNode('directories') ->prototype('scalar')->end() ->end() ->arrayNode('namespaces') ->prototype('scalar')->end() ->end() ->end(); return $node; } }