Yaffs site version 1.1
[yaffs-website] / vendor / symfony / console / Descriptor / Descriptor.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\Console\Descriptor;
13
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;
21
22 /**
23  * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
24  *
25  * @internal
26  */
27 abstract class Descriptor implements DescriptorInterface
28 {
29     /**
30      * @var OutputInterface
31      */
32     private $output;
33
34     /**
35      * {@inheritdoc}
36      */
37     public function describe(OutputInterface $output, $object, array $options = array())
38     {
39         $this->output = $output;
40
41         switch (true) {
42             case $object instanceof InputArgument:
43                 $this->describeInputArgument($object, $options);
44                 break;
45             case $object instanceof InputOption:
46                 $this->describeInputOption($object, $options);
47                 break;
48             case $object instanceof InputDefinition:
49                 $this->describeInputDefinition($object, $options);
50                 break;
51             case $object instanceof Command:
52                 $this->describeCommand($object, $options);
53                 break;
54             case $object instanceof Application:
55                 $this->describeApplication($object, $options);
56                 break;
57             default:
58                 throw new InvalidArgumentException(sprintf('Object of type "%s" is not describable.', get_class($object)));
59         }
60     }
61
62     /**
63      * Writes content to output.
64      *
65      * @param string $content
66      * @param bool   $decorated
67      */
68     protected function write($content, $decorated = false)
69     {
70         $this->output->write($content, false, $decorated ? OutputInterface::OUTPUT_NORMAL : OutputInterface::OUTPUT_RAW);
71     }
72
73     /**
74      * Describes an InputArgument instance.
75      *
76      * @param InputArgument $argument
77      * @param array         $options
78      *
79      * @return string|mixed
80      */
81     abstract protected function describeInputArgument(InputArgument $argument, array $options = array());
82
83     /**
84      * Describes an InputOption instance.
85      *
86      * @param InputOption $option
87      * @param array       $options
88      *
89      * @return string|mixed
90      */
91     abstract protected function describeInputOption(InputOption $option, array $options = array());
92
93     /**
94      * Describes an InputDefinition instance.
95      *
96      * @param InputDefinition $definition
97      * @param array           $options
98      *
99      * @return string|mixed
100      */
101     abstract protected function describeInputDefinition(InputDefinition $definition, array $options = array());
102
103     /**
104      * Describes a Command instance.
105      *
106      * @param Command $command
107      * @param array   $options
108      *
109      * @return string|mixed
110      */
111     abstract protected function describeCommand(Command $command, array $options = array());
112
113     /**
114      * Describes an Application instance.
115      *
116      * @param Application $application
117      * @param array       $options
118      *
119      * @return string|mixed
120      */
121     abstract protected function describeApplication(Application $application, array $options = array());
122 }