| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | <?php/* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */namespace Symfony\Component\Console\Descriptor;use Symfony\Component\Console\Application;use Symfony\Component\Console\Command\Command;use Symfony\Component\Console\Exception\InvalidArgumentException;use Symfony\Component\Console\Input\InputArgument;use Symfony\Component\Console\Input\InputDefinition;use Symfony\Component\Console\Input\InputOption;use Symfony\Component\Console\Output\OutputInterface;/** * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com> * * @internal */abstract class Descriptor implements DescriptorInterface{    /**     * @var OutputInterface     */    private $output;    /**     * {@inheritdoc}     */    public function describe(OutputInterface $output, $object, array $options = array())    {        $this->output = $output;        switch (true) {            case $object instanceof InputArgument:                $this->describeInputArgument($object, $options);                break;            case $object instanceof InputOption:                $this->describeInputOption($object, $options);                break;            case $object instanceof InputDefinition:                $this->describeInputDefinition($object, $options);                break;            case $object instanceof Command:                $this->describeCommand($object, $options);                break;            case $object instanceof Application:                $this->describeApplication($object, $options);                break;            default:                throw new InvalidArgumentException(sprintf('Object of type "%s" is not describable.', \get_class($object)));        }    }    /**     * Writes content to output.     *     * @param string $content     * @param bool   $decorated     */    protected function write($content, $decorated = false)    {        $this->output->write($content, false, $decorated ? OutputInterface::OUTPUT_NORMAL : OutputInterface::OUTPUT_RAW);    }    /**     * Describes an InputArgument instance.     *     * @return string|mixed     */    abstract protected function describeInputArgument(InputArgument $argument, array $options = array());    /**     * Describes an InputOption instance.     *     * @return string|mixed     */    abstract protected function describeInputOption(InputOption $option, array $options = array());    /**     * Describes an InputDefinition instance.     *     * @return string|mixed     */    abstract protected function describeInputDefinition(InputDefinition $definition, array $options = array());    /**     * Describes a Command instance.     *     * @return string|mixed     */    abstract protected function describeCommand(Command $command, array $options = array());    /**     * Describes an Application instance.     *     * @return string|mixed     */    abstract protected function describeApplication(Application $application, array $options = array());}
 |