4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\Console\Descriptor;
14 use Symfony\Component\Console\Application;
15 use Symfony\Component\Console\Command\Command;
16 use Symfony\Component\Console\Input\InputArgument;
17 use Symfony\Component\Console\Input\InputDefinition;
18 use Symfony\Component\Console\Input\InputOption;
19 use Symfony\Component\Console\Output\OutputInterface;
20 use Symfony\Component\Console\Exception\InvalidArgumentException;
23 * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
27 abstract class Descriptor implements DescriptorInterface
30 * @var OutputInterface
37 public function describe(OutputInterface $output, $object, array $options = array())
39 $this->output = $output;
42 case $object instanceof InputArgument:
43 $this->describeInputArgument($object, $options);
45 case $object instanceof InputOption:
46 $this->describeInputOption($object, $options);
48 case $object instanceof InputDefinition:
49 $this->describeInputDefinition($object, $options);
51 case $object instanceof Command:
52 $this->describeCommand($object, $options);
54 case $object instanceof Application:
55 $this->describeApplication($object, $options);
58 throw new InvalidArgumentException(sprintf('Object of type "%s" is not describable.', get_class($object)));
63 * Writes content to output.
65 * @param string $content
66 * @param bool $decorated
68 protected function write($content, $decorated = false)
70 $this->output->write($content, false, $decorated ? OutputInterface::OUTPUT_NORMAL : OutputInterface::OUTPUT_RAW);
74 * Describes an InputArgument instance.
76 * @return string|mixed
78 abstract protected function describeInputArgument(InputArgument $argument, array $options = array());
81 * Describes an InputOption instance.
83 * @return string|mixed
85 abstract protected function describeInputOption(InputOption $option, array $options = array());
88 * Describes an InputDefinition instance.
90 * @return string|mixed
92 abstract protected function describeInputDefinition(InputDefinition $definition, array $options = array());
95 * Describes a Command instance.
97 * @return string|mixed
99 abstract protected function describeCommand(Command $command, array $options = array());
102 * Describes an Application instance.
104 * @return string|mixed
106 abstract protected function describeApplication(Application $application, array $options = array());