[ Index ]

PHP Cross Reference of phpBB-3.3.14-deutsch

title

Body

[close]

/vendor/symfony/console/Descriptor/ -> JsonDescriptor.php (source)

   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  
  20  /**
  21   * JSON descriptor.
  22   *
  23   * @author Jean-François Simon <contact@jfsimon.fr>
  24   *
  25   * @internal
  26   */
  27  class JsonDescriptor extends Descriptor
  28  {
  29      /**
  30       * {@inheritdoc}
  31       */
  32      protected function describeInputArgument(InputArgument $argument, array $options = [])
  33      {
  34          $this->writeData($this->getInputArgumentData($argument), $options);
  35      }
  36  
  37      /**
  38       * {@inheritdoc}
  39       */
  40      protected function describeInputOption(InputOption $option, array $options = [])
  41      {
  42          $this->writeData($this->getInputOptionData($option), $options);
  43      }
  44  
  45      /**
  46       * {@inheritdoc}
  47       */
  48      protected function describeInputDefinition(InputDefinition $definition, array $options = [])
  49      {
  50          $this->writeData($this->getInputDefinitionData($definition), $options);
  51      }
  52  
  53      /**
  54       * {@inheritdoc}
  55       */
  56      protected function describeCommand(Command $command, array $options = [])
  57      {
  58          $this->writeData($this->getCommandData($command), $options);
  59      }
  60  
  61      /**
  62       * {@inheritdoc}
  63       */
  64      protected function describeApplication(Application $application, array $options = [])
  65      {
  66          $describedNamespace = isset($options['namespace']) ? $options['namespace'] : null;
  67          $description = new ApplicationDescription($application, $describedNamespace, true);
  68          $commands = [];
  69  
  70          foreach ($description->getCommands() as $command) {
  71              $commands[] = $this->getCommandData($command);
  72          }
  73  
  74          $data = [];
  75          if ('UNKNOWN' !== $application->getName()) {
  76              $data['application']['name'] = $application->getName();
  77              if ('UNKNOWN' !== $application->getVersion()) {
  78                  $data['application']['version'] = $application->getVersion();
  79              }
  80          }
  81  
  82          $data['commands'] = $commands;
  83  
  84          if ($describedNamespace) {
  85              $data['namespace'] = $describedNamespace;
  86          } else {
  87              $data['namespaces'] = array_values($description->getNamespaces());
  88          }
  89  
  90          $this->writeData($data, $options);
  91      }
  92  
  93      /**
  94       * Writes data as json.
  95       */
  96      private function writeData(array $data, array $options)
  97      {
  98          $flags = isset($options['json_encoding']) ? $options['json_encoding'] : 0;
  99  
 100          $this->write(json_encode($data, $flags));
 101      }
 102  
 103      /**
 104       * @return array
 105       */
 106      private function getInputArgumentData(InputArgument $argument)
 107      {
 108          return [
 109              'name' => $argument->getName(),
 110              'is_required' => $argument->isRequired(),
 111              'is_array' => $argument->isArray(),
 112              'description' => preg_replace('/\s*[\r\n]\s*/', ' ', $argument->getDescription()),
 113              'default' => \INF === $argument->getDefault() ? 'INF' : $argument->getDefault(),
 114          ];
 115      }
 116  
 117      /**
 118       * @return array
 119       */
 120      private function getInputOptionData(InputOption $option)
 121      {
 122          return [
 123              'name' => '--'.$option->getName(),
 124              'shortcut' => $option->getShortcut() ? '-'.str_replace('|', '|-', $option->getShortcut()) : '',
 125              'accept_value' => $option->acceptValue(),
 126              'is_value_required' => $option->isValueRequired(),
 127              'is_multiple' => $option->isArray(),
 128              'description' => preg_replace('/\s*[\r\n]\s*/', ' ', $option->getDescription()),
 129              'default' => \INF === $option->getDefault() ? 'INF' : $option->getDefault(),
 130          ];
 131      }
 132  
 133      /**
 134       * @return array
 135       */
 136      private function getInputDefinitionData(InputDefinition $definition)
 137      {
 138          $inputArguments = [];
 139          foreach ($definition->getArguments() as $name => $argument) {
 140              $inputArguments[$name] = $this->getInputArgumentData($argument);
 141          }
 142  
 143          $inputOptions = [];
 144          foreach ($definition->getOptions() as $name => $option) {
 145              $inputOptions[$name] = $this->getInputOptionData($option);
 146          }
 147  
 148          return ['arguments' => $inputArguments, 'options' => $inputOptions];
 149      }
 150  
 151      /**
 152       * @return array
 153       */
 154      private function getCommandData(Command $command)
 155      {
 156          $command->getSynopsis();
 157          $command->mergeApplicationDefinition(false);
 158  
 159          return [
 160              'name' => $command->getName(),
 161              'usage' => array_merge([$command->getSynopsis()], $command->getUsages(), $command->getAliases()),
 162              'description' => $command->getDescription(),
 163              'help' => $command->getProcessedHelp(),
 164              'definition' => $this->getInputDefinitionData($command->getNativeDefinition()),
 165              'hidden' => $command->isHidden(),
 166          ];
 167      }
 168  }


Generated: Mon Nov 25 19:05:08 2024 Cross-referenced by PHPXref 0.7.1