| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | 
							- <?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\ExpressionLanguage\Node;
 
- use Symfony\Component\ExpressionLanguage\Compiler;
 
- /**
 
-  * @author Fabien Potencier <fabien@symfony.com>
 
-  *
 
-  * @internal
 
-  */
 
- class ArrayNode extends Node
 
- {
 
-     protected $index;
 
-     public function __construct()
 
-     {
 
-         $this->index = -1;
 
-     }
 
-     public function addElement(Node $value, ?Node $key = null)
 
-     {
 
-         if (null === $key) {
 
-             $key = new ConstantNode(++$this->index);
 
-         }
 
-         array_push($this->nodes, $key, $value);
 
-     }
 
-     /**
 
-      * Compiles the node to PHP.
 
-      */
 
-     public function compile(Compiler $compiler)
 
-     {
 
-         $compiler->raw('[');
 
-         $this->compileArguments($compiler);
 
-         $compiler->raw(']');
 
-     }
 
-     public function evaluate(array $functions, array $values)
 
-     {
 
-         $result = [];
 
-         foreach ($this->getKeyValuePairs() as $pair) {
 
-             $result[$pair['key']->evaluate($functions, $values)] = $pair['value']->evaluate($functions, $values);
 
-         }
 
-         return $result;
 
-     }
 
-     public function toArray()
 
-     {
 
-         $value = [];
 
-         foreach ($this->getKeyValuePairs() as $pair) {
 
-             $value[$pair['key']->attributes['value']] = $pair['value'];
 
-         }
 
-         $array = [];
 
-         if ($this->isHash($value)) {
 
-             foreach ($value as $k => $v) {
 
-                 $array[] = ', ';
 
-                 $array[] = new ConstantNode($k);
 
-                 $array[] = ': ';
 
-                 $array[] = $v;
 
-             }
 
-             $array[0] = '{';
 
-             $array[] = '}';
 
-         } else {
 
-             foreach ($value as $v) {
 
-                 $array[] = ', ';
 
-                 $array[] = $v;
 
-             }
 
-             $array[0] = '[';
 
-             $array[] = ']';
 
-         }
 
-         return $array;
 
-     }
 
-     protected function getKeyValuePairs()
 
-     {
 
-         $pairs = [];
 
-         foreach (array_chunk($this->nodes, 2) as $pair) {
 
-             $pairs[] = ['key' => $pair[0], 'value' => $pair[1]];
 
-         }
 
-         return $pairs;
 
-     }
 
-     protected function compileArguments(Compiler $compiler, bool $withKeys = true)
 
-     {
 
-         $first = true;
 
-         foreach ($this->getKeyValuePairs() as $pair) {
 
-             if (!$first) {
 
-                 $compiler->raw(', ');
 
-             }
 
-             $first = false;
 
-             if ($withKeys) {
 
-                 $compiler
 
-                     ->compile($pair['key'])
 
-                     ->raw(' => ')
 
-                 ;
 
-             }
 
-             $compiler->compile($pair['value']);
 
-         }
 
-     }
 
- }
 
 
  |