Skip to content

Commit

Permalink
Make more tweaks
Browse files Browse the repository at this point in the history
  • Loading branch information
fabpot committed Feb 1, 2025
1 parent df5904e commit b9b198c
Show file tree
Hide file tree
Showing 43 changed files with 130 additions and 55 deletions.
9 changes: 2 additions & 7 deletions src/Operator/Binary/AbstractBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@ abstract class AbstractBinaryOperator extends AbstractOperator implements Binary
{
public function parse(ExpressionParser $parser, AbstractExpression $left, int $line): AbstractExpression
{
if (!$class = $this->getNodeClass()) {
throw new \LogicException(\sprintf('The "%s" %s operator must have a Node class.', $this->getOperator(), $this->getArity()->value));
}
$class = $this->getNodeClass();

$right = $parser->parseExpression(OperatorAssociativity::Left === $this->getAssociativity() ? $this->getPrecedence() + 1 : $this->getPrecedence());

Expand All @@ -43,8 +41,5 @@ public function getAssociativity(): OperatorAssociativity
/**
* @return class-string<AbstractExpression>
*/
protected function getNodeClass(): ?string
{
return null;
}
abstract protected function getNodeClass(): string;
}
2 changes: 1 addition & 1 deletion src/Operator/Binary/AddBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 30;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return AddBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/AndBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 15;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return AndBinary::class;
}
Expand Down
15 changes: 14 additions & 1 deletion src/Operator/Binary/ArrowBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,11 @@
use Twig\ExpressionParser;
use Twig\Node\Expression\AbstractExpression;
use Twig\Node\Expression\ArrowFunctionExpression;
use Twig\Operator\AbstractOperator;
use Twig\Operator\OperatorArity;
use Twig\Operator\OperatorAssociativity;

class ArrowBinaryOperator extends AbstractBinaryOperator
class ArrowBinaryOperator extends AbstractOperator implements BinaryOperatorInterface
{
public function parse(ExpressionParser $parser, AbstractExpression $expr, int $line): AbstractExpression
{
Expand All @@ -32,4 +35,14 @@ public function getPrecedence(): int
{
return 250;
}

public function getArity(): OperatorArity
{
return OperatorArity::Binary;
}

public function getAssociativity(): OperatorAssociativity
{
return OperatorAssociativity::Left;
}
}
2 changes: 1 addition & 1 deletion src/Operator/Binary/BitwiseAndBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 18;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return BitwiseAndBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/BitwiseOrBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 16;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return BitwiseOrBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/BitwiseXorBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 17;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return BitwiseXorBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/ConcatBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public function getPrecedenceChange(): ?OperatorPrecedenceChange
return new OperatorPrecedenceChange('twig/twig', '3.15', 27);
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return ConcatBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/DivBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 60;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return DivBinary::class;
}
Expand Down
15 changes: 14 additions & 1 deletion src/Operator/Binary/DotBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,13 @@
use Twig\Node\Expression\MacroReferenceExpression;
use Twig\Node\Expression\NameExpression;
use Twig\Node\Expression\Variable\TemplateVariable;
use Twig\Operator\AbstractOperator;
use Twig\Operator\OperatorArity;
use Twig\Operator\OperatorAssociativity;
use Twig\Template;
use Twig\Token;

class DotBinaryOperator extends AbstractBinaryOperator
class DotBinaryOperator extends AbstractOperator implements BinaryOperatorInterface
{
public function parse(ExpressionParser $parser, AbstractExpression $expr, int $line): AbstractExpression
{
Expand Down Expand Up @@ -77,4 +80,14 @@ public function getPrecedence(): int
{
return 300;
}

public function getArity(): OperatorArity
{
return OperatorArity::Binary;
}

public function getAssociativity(): OperatorAssociativity
{
return OperatorAssociativity::Left;
}
}
2 changes: 1 addition & 1 deletion src/Operator/Binary/ElvisBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public function getAliases(): array
return ['? :'];
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return ElvisBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/EndsWithBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 20;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return EndsWithBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/EqualBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 20;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return EqualBinary::class;
}
Expand Down
15 changes: 14 additions & 1 deletion src/Operator/Binary/FilterBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,12 @@
use Twig\Node\EmptyNode;
use Twig\Node\Expression\AbstractExpression;
use Twig\Node\Expression\ConstantExpression;
use Twig\Operator\AbstractOperator;
use Twig\Operator\OperatorArity;
use Twig\Operator\OperatorAssociativity;
use Twig\Token;

class FilterBinaryOperator extends AbstractBinaryOperator
class FilterBinaryOperator extends AbstractOperator implements BinaryOperatorInterface
{
private $readyNodes = [];

Expand Down Expand Up @@ -56,4 +59,14 @@ public function getPrecedence(): int
{
return 300;
}

public function getArity(): OperatorArity
{
return OperatorArity::Binary;
}

public function getAssociativity(): OperatorAssociativity
{
return OperatorAssociativity::Left;
}
}
2 changes: 1 addition & 1 deletion src/Operator/Binary/FloorDivBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 60;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return FloorDivBinary::class;
}
Expand Down
15 changes: 14 additions & 1 deletion src/Operator/Binary/FunctionBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,11 @@
use Twig\Node\Expression\AbstractExpression;
use Twig\Node\Expression\MacroReferenceExpression;
use Twig\Node\Expression\NameExpression;
use Twig\Operator\AbstractOperator;
use Twig\Operator\OperatorArity;
use Twig\Operator\OperatorAssociativity;

class FunctionBinaryOperator extends AbstractBinaryOperator
class FunctionBinaryOperator extends AbstractOperator implements BinaryOperatorInterface
{
private $readyNodes = [];

Expand Down Expand Up @@ -66,4 +69,14 @@ public function getPrecedence(): int
{
return 300;
}

public function getArity(): OperatorArity
{
return OperatorArity::Binary;
}

public function getAssociativity(): OperatorAssociativity
{
return OperatorAssociativity::Left;
}
}
2 changes: 1 addition & 1 deletion src/Operator/Binary/GreaterBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 20;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return GreaterBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/GreaterEqualBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

class GreaterEqualBinaryOperator extends AbstractBinaryOperator
{
public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return GreaterEqualBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/HasEveryBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 20;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return HasEveryBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/HasSomeBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 20;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return HasSomeBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/InBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 20;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return InBinary::class;
}
Expand Down
15 changes: 14 additions & 1 deletion src/Operator/Binary/IsBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,13 @@
use Twig\Node\Expression\MacroReferenceExpression;
use Twig\Node\Expression\NameExpression;
use Twig\Node\Nodes;
use Twig\Operator\AbstractOperator;
use Twig\Operator\OperatorArity;
use Twig\Operator\OperatorAssociativity;
use Twig\Token;
use Twig\TwigTest;

class IsBinaryOperator extends AbstractBinaryOperator
class IsBinaryOperator extends AbstractOperator implements BinaryOperatorInterface
{
private $readyNodes = [];

Expand Down Expand Up @@ -62,4 +65,14 @@ public function getOperator(): string
{
return 'is';
}

public function getArity(): OperatorArity
{
return OperatorArity::Binary;
}

public function getAssociativity(): OperatorAssociativity
{
return OperatorAssociativity::Left;
}
}
2 changes: 1 addition & 1 deletion src/Operator/Binary/LessBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 20;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return LessBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/LessEqualBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 20;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return LessEqualBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/MatchesBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 20;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return MatchesBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/ModBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 60;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return ModBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/MulBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 60;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return MulBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/NotEqualBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 20;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return NotEqualBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/NotInBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getPrecedence(): int
return 20;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return NotInBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/NullCoalesceBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public function getPrecedenceChange(): ?OperatorPrecedenceChange
return new OperatorPrecedenceChange('twig/twig', '3.15', 5);
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return NullCoalesceBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/OrBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public function getOperator(): string
return 'or';
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return OrBinary::class;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operator/Binary/PowerBinaryOperator.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public function getPrecedence(): int
return 200;
}

public function getNodeClass(): ?string
protected function getNodeClass(): string
{
return PowerBinary::class;
}
Expand Down
Loading

0 comments on commit b9b198c

Please sign in to comment.