You are here

private function DocParser::Arrayx in Drupal 10

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Component/Annotation/Doctrine/DocParser.php \Drupal\Component\Annotation\Doctrine\DocParser::Arrayx()
  2. 9 core/lib/Drupal/Component/Annotation/Doctrine/DocParser.php \Drupal\Component\Annotation\Doctrine\DocParser::Arrayx()

Array ::= "{" ArrayEntry {"," ArrayEntry}* [","] "}"

Return value

array

1 call to DocParser::Arrayx()
DocParser::PlainValue in core/lib/Drupal/Component/Annotation/Doctrine/DocParser.php
PlainValue ::= integer | string | float | boolean | Array | Annotation

File

core/lib/Drupal/Component/Annotation/Doctrine/DocParser.php, line 1073
This class is a near-copy of Doctrine\Common\Annotations\DocParser, which is part of the Doctrine project: <http://www.doctrine-project.org>. It was copied from version 1.2.7.

Class

DocParser
A parser for docblock annotations.

Namespace

Drupal\Component\Annotation\Doctrine

Code

private function Arrayx() {
  $array = $values = array();
  $this
    ->match(DocLexer::T_OPEN_CURLY_BRACES);

  // If the array is empty, stop parsing and return.
  if ($this->lexer
    ->isNextToken(DocLexer::T_CLOSE_CURLY_BRACES)) {
    $this
      ->match(DocLexer::T_CLOSE_CURLY_BRACES);
    return $array;
  }
  $values[] = $this
    ->ArrayEntry();
  while ($this->lexer
    ->isNextToken(DocLexer::T_COMMA)) {
    $this
      ->match(DocLexer::T_COMMA);

    // optional trailing comma
    if ($this->lexer
      ->isNextToken(DocLexer::T_CLOSE_CURLY_BRACES)) {
      break;
    }
    $values[] = $this
      ->ArrayEntry();
  }
  $this
    ->match(DocLexer::T_CLOSE_CURLY_BRACES);
  foreach ($values as $value) {
    [
      $key,
      $val,
    ] = $value;
    if ($key !== null) {
      $array[$key] = $val;
    }
    else {
      $array[] = $val;
    }
  }
  return $array;
}