From 01802d3af2703f4b10879dc9076496d54fc5d2e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Egyed?= Date: Sat, 16 Feb 2013 23:02:39 +0100 Subject: [PATCH 1/3] [Config] tweaked dumper to indent multi-line info --- src/Symfony/Component/Config/Definition/ReferenceDumper.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Symfony/Component/Config/Definition/ReferenceDumper.php b/src/Symfony/Component/Config/Definition/ReferenceDumper.php index 3230c019311c2..95d548eef25ca 100644 --- a/src/Symfony/Component/Config/Definition/ReferenceDumper.php +++ b/src/Symfony/Component/Config/Definition/ReferenceDumper.php @@ -119,6 +119,8 @@ private function writeNode(NodeInterface $node, $depth = 0) if ($info = $node->getInfo()) { $this->writeLine(''); + // indenting multi-line info + $info = str_replace("\n", sprintf("\n%" . $depth * 4 . "s# ", ' '), $info); $this->writeLine('# '.$info, $depth * 4); } From 1fc0d411b7ea53571caa5860a208be9c1a93c676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Egyed?= Date: Sun, 17 Feb 2013 05:58:48 +0100 Subject: [PATCH 2/3] [Config] added reference dumper test --- .../Tests/Definition/ReferenceDumperTest.php | 62 +++++++++++++++++ .../Configuration/ExampleConfiguration.php | 67 +++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 src/Symfony/Component/Config/Tests/Definition/ReferenceDumperTest.php create mode 100644 src/Symfony/Component/Config/Tests/Fixtures/Configuration/ExampleConfiguration.php diff --git a/src/Symfony/Component/Config/Tests/Definition/ReferenceDumperTest.php b/src/Symfony/Component/Config/Tests/Definition/ReferenceDumperTest.php new file mode 100644 index 0000000000000..137caf8cbc37b --- /dev/null +++ b/src/Symfony/Component/Config/Tests/Definition/ReferenceDumperTest.php @@ -0,0 +1,62 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Config\Tests\Definition; + +use Symfony\Component\Config\Definition\ReferenceDumper; +use Symfony\Component\Config\Tests\Fixtures\Configuration\ExampleConfiguration; + +class ReferenceDumperTest extends \PHPUnit_Framework_TestCase +{ + public function testDumper() + { + $configuration = new ExampleConfiguration(); + + $dumper = new ReferenceDumper(); + $this->assertEquals($this->getConfigurationAsString(), $dumper->dump($configuration)); + } + + private function getConfigurationAsString() + { + return << + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Config\Tests\Fixtures\Configuration; + +use Symfony\Component\Config\Definition\Builder\TreeBuilder; +use Symfony\Component\Config\Definition\ConfigurationInterface; + +class ExampleConfiguration implements ConfigurationInterface +{ + public function getConfigTreeBuilder() + { + $treeBuilder = new TreeBuilder(); + $rootNode = $treeBuilder->root('root'); + + $rootNode + ->children() + ->booleanNode('boolean')->defaultTrue()->end() + ->scalarNode('scalar_empty')->end() + ->scalarNode('scalar_null')->defaultNull()->end() + ->scalarNode('scalar_true')->defaultTrue()->end() + ->scalarNode('scalar_false')->defaultFalse()->end() + ->scalarNode('scalar_default')->defaultValue('default')->end() + ->scalarNode('scalar_array_empty')->defaultValue(array())->end() + ->scalarNode('scalar_array_defaults')->defaultValue(array('elem1', 'elem2'))->end() + ->arrayNode('array') + ->info('some info') + ->canBeUnset() + ->children() + ->scalarNode('child1')->end() + ->scalarNode('child2')->end() + ->scalarNode('child3') + ->info( + "this is a long\n". + "multi-line info text\n". + "which should be indented" + ) + ->example('example setting') + ->end() + ->end() + ->end() + ->arrayNode('array_prototype') + ->children() + ->arrayNode('parameters') + ->useAttributeAsKey('name') + ->prototype('array') + ->children() + ->scalarNode('value')->isRequired()->end() + ->end() + ->end() + ->end() + ->end() + ->end() + ->end() + ; + + return $treeBuilder; + } +} From 8e79c0ba5728a07ea616d931afc20ee902170151 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Egyed?= Date: Sun, 17 Feb 2013 06:32:21 +0100 Subject: [PATCH 3/3] [Config] remove EOL spaces from dumped config --- src/Symfony/Component/Config/Definition/ReferenceDumper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Config/Definition/ReferenceDumper.php b/src/Symfony/Component/Config/Definition/ReferenceDumper.php index 95d548eef25ca..ef2b05d10f38c 100644 --- a/src/Symfony/Component/Config/Definition/ReferenceDumper.php +++ b/src/Symfony/Component/Config/Definition/ReferenceDumper.php @@ -115,7 +115,7 @@ private function writeNode(NodeInterface $node, $depth = 0) $default = (string) $default != '' ? ' '.$default : ''; $comments = count($comments) ? '# '.implode(', ', $comments) : ''; - $text = sprintf('%-20s %s %s', $node->getName().':', $default, $comments); + $text = rtrim(sprintf('%-20s %s %s', $node->getName() . ':', $default, $comments), ' '); if ($info = $node->getInfo()) { $this->writeLine('');