Add parameter descriptors

This commit is contained in:
Inal DJAFAR 2014-03-03 23:11:16 +01:00 committed by Fabien Potencier
parent 4a06daf2c3
commit 6aa1050793
11 changed files with 97 additions and 11 deletions

View File

@ -114,17 +114,6 @@ abstract class Descriptor implements DescriptorInterface
*/
abstract protected function describeRoute(Route $route, array $options = array());
/**
* Describes a specific container parameter.
*
* @param mixed $parameterValue
* @param array $options
*/
protected function describeContainerParameter($parameterValue, array $options = array())
{
$this->write($this->formatParameter($parameterValue));
}
/**
* Describes container parameters.
*
@ -179,6 +168,14 @@ abstract class Descriptor implements DescriptorInterface
*/
abstract protected function describeContainerAlias(Alias $alias, array $options = array());
/**
* Describes a container parameter.
*
* @param parameter
* @param array $options
*/
abstract protected function describeContainerParameter($parameter, array $options = array());
/**
* Formats a value as string.
*

View File

@ -134,6 +134,16 @@ class JsonDescriptor extends Descriptor
$this->writeData($this->getContainerAliasData($alias), $options);
}
/**
* {@inheritdoc}
*/
protected function describeContainerParameter($parameter, array $options = array())
{
$key = isset($options['parameter']) ? $options['parameter'] : '';
$this->writeData(array($key => $this->formatParameter($parameter)), $options);
}
/**
* Writes data as json.
*

View File

@ -207,6 +207,14 @@ class MarkdownDescriptor extends Descriptor
$this->write(isset($options['id']) ? sprintf("%s\n%s\n\n%s\n", $options['id'], str_repeat('~', strlen($options['id'])), $output) : $output);
}
/**
* {@inheritdoc}
*/
protected function describeContainerParameter($parameter, array $options = array())
{
$this->write(isset($options['parameter']) ? sprintf("%s\n%s\n\n%s", $options['parameter'], str_repeat('=', strlen($options['parameter'])), $this->formatParameter($parameter)): $parameter);
}
private function formatRouterConfig(array $array)
{
if (!count($array)) {

View File

@ -276,6 +276,14 @@ class TextDescriptor extends Descriptor
$this->writeText(sprintf('This service is an alias for the service <info>%s</info>', (string) $alias), $options);
}
/**
* {@inheritdoc}
*/
protected function describeContainerParameter($parameter, array $options = array())
{
$this->writeText($this->formatParameter($parameter), $options);
}
/**
* @param array $array
*

View File

@ -91,6 +91,14 @@ class XmlDescriptor extends Descriptor
$this->writeDocument($this->getContainerAliasDocument($alias, isset($options['id']) ? $options['id'] : null));
}
/**
* {@inheritdoc}
*/
protected function describeContainerParameter($parameter, array $options = array())
{
$this->writeDocument($this->getContainerParameterDocument($parameter, $options));
}
/**
* Writes DOM document.
*
@ -365,4 +373,24 @@ class XmlDescriptor extends Descriptor
return $dom;
}
/**
* @param $parameter
* @param array $options
*
* @return \DOMDocument
*/
private function getContainerParameterDocument($parameter, $options = array())
{
$dom = new \DOMDocument('1.0', 'UTF-8');
$dom->appendChild($parameterXML = $dom->createElement('parameter'));
if (isset($options['parameter'])) {
$parameterXML->setAttribute('key', $options['parameter']);
}
$parameterXML->appendChild(new \DOMText($this->formatParameter($parameter)));
return $dom;
}
}

View File

@ -87,6 +87,21 @@ abstract class AbstractDescriptorTest extends \PHPUnit_Framework_TestCase
return $this->getDescriptionTestData(ObjectsProvider::getContainerAliases());
}
/** @dataProvider getDescribeContainerParameterTestData */
public function testDescribeContainerParameter($parameter, $expectedDescription, array $options)
{
$this->assertDescription($expectedDescription, $parameter, $options);
}
public function getDescribeContainerParameterTestData()
{
$data = $this->getDescriptionTestData(ObjectsProvider::getContainerParameter());
array_push($data[0], array('parameter' => 'database_name'));
return $data;
}
abstract protected function getDescriptor();
abstract protected function getFormat();

View File

@ -66,6 +66,16 @@ class ObjectsProvider
);
}
public static function getContainerParameter()
{
$builder = new ContainerBuilder();
$builder->setParameter('database_name', 'symfony');
return array(
'parameter' => $builder
);
}
public static function getContainerBuilders()
{
$builder1 = new ContainerBuilder();

View File

@ -0,0 +1,3 @@
{
"database_name": "symfony"
}

View File

@ -0,0 +1,4 @@
database_name
=============
symfony

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<parameter key="database_name">symfony</parameter>