original_string: public static function buildFromArray($spec, $defaultOptions = true)
      {
          $parser = new static($spec['command'], $defaultOptions);
          if (!empty($spec['arguments'])) {
              $parser->addArguments($spec['arguments']);
          }
          if (!empty($spec['options'])) {
              $parser->addOptions($spec['options']);
          }
          if (!empty($spec['subcommands'])) {
              $parser->addSubcommands($spec['subcommands']);
          }
          if (!empty($spec['description'])) {
              $parser->setDescription($spec['description']);
          }
          if (!empty($spec['epilog'])) {
              $parser->setEpilog($spec['epilog']);
          }
  
          return $parser;
      }
code: public static function buildFromArray($spec, $defaultOptions = true)
      {
          $parser = new static($spec['command'], $defaultOptions);
          if (!empty($spec['arguments'])) {
              $parser->addArguments($spec['arguments']);
          }
          if (!empty($spec['options'])) {
              $parser->addOptions($spec['options']);
          }
          if (!empty($spec['subcommands'])) {
              $parser->addSubcommands($spec['subcommands']);
          }
          if (!empty($spec['description'])) {
              $parser->setDescription($spec['description']);
          }
          if (!empty($spec['epilog'])) {
              $parser->setEpilog($spec['epilog']);
          }
  
          return $parser;
      }
code_tokens: public static function buildFromArray ( $ spec , $ defaultOptions = true ) { $ parser = new static ( $ spec [ 'command' ] , $ defaultOptions ) ; if ( ! empty ( $ spec [ 'arguments' ] ) ) { $ parser -> addArguments ( $ spec [ 'arguments' ] ) ; } if ( ! empty ( $ spec [ 'options' ] ) ) { $ parser -> addOptions ( $ spec [ 'options' ] ) ; } if ( ! empty ( $ spec [ 'subcommands' ] ) ) { $ parser -> addSubcommands ( $ spec [ 'subcommands' ] ) ; } if ( ! empty ( $ spec [ 'description' ] ) ) { $ parser -> setDescription ( $ spec [ 'description' ] ) ; } if ( ! empty ( $ spec [ 'epilog' ] ) ) { $ parser -> setEpilog ( $ spec [ 'epilog' ] ) ; } return $ parser ; }
docstring: Build a parser from an array. Uses an array like
  
  ```
  $spec = [
  'description' => 'text',
  'epilog' => 'text',
  'arguments' => [
  // list of arguments compatible with addArguments.
  ],
  'options' => [
  // list of options compatible with addOptions
  ],
  'subcommands' => [
  // list of subcommands to add.
  ]
  ];
  ```
  
  @param array $spec The spec to build the OptionParser with.
  @param bool $defaultOptions Whether you want the verbose and quiet options set.
  @return static
docstring_tokens: Build a parser from an array . Uses an array like