<?php
namespace MailPoetVendor\Twig\Node\Expression;
if (!defined('ABSPATH')) exit;
use MailPoetVendor\Twig\Compiler;
class ArrayExpression extends AbstractExpression
{
 private $index;
 public function __construct(array $elements, int $lineno)
 {
 parent::__construct($elements, [], $lineno);
 $this->index = -1;
 foreach ($this->getKeyValuePairs() as $pair) {
 if ($pair['key'] instanceof ConstantExpression && \ctype_digit((string) $pair['key']->getAttribute('value')) && $pair['key']->getAttribute('value') > $this->index) {
 $this->index = $pair['key']->getAttribute('value');
 }
 }
 }
 public function getKeyValuePairs() : array
 {
 $pairs = [];
 foreach (\array_chunk($this->nodes, 2) as $pair) {
 $pairs[] = ['key' => $pair[0], 'value' => $pair[1]];
 }
 return $pairs;
 }
 public function hasElement(AbstractExpression $key) : bool
 {
 foreach ($this->getKeyValuePairs() as $pair) {
 // we compare the string representation of the keys
 // to avoid comparing the line numbers which are not relevant here.
 if ((string) $key === (string) $pair['key']) {
 return \true;
 }
 }
 return \false;
 }
 public function addElement(AbstractExpression $value, AbstractExpression $key = null) : void
 {
 if (null === $key) {
 $key = new ConstantExpression(++$this->index, $value->getTemplateLine());
 }
 \array_push($this->nodes, $key, $value);
 }
 public function compile(Compiler $compiler) : void
 {
 $compiler->raw('[');
 $first = \true;
 foreach ($this->getKeyValuePairs() as $pair) {
 if (!$first) {
 $compiler->raw(', ');
 }
 $first = \false;
 $compiler->subcompile($pair['key'])->raw(' => ')->subcompile($pair['value']);
 }
 $compiler->raw(']');
 }
}
