From 5a6f406ec78236df5a52fb1acf2d0a914a644395 Mon Sep 17 00:00:00 2001 From: Netkas Date: Thu, 29 Dec 2022 16:04:46 -0500 Subject: [PATCH] Refactored GreaterThan, added documentation --- docs/greater_than.md | 34 +++++++++++++++++++ .../Program/Instructions/GreaterThan.php | 27 +++++++++------ 2 files changed, 50 insertions(+), 11 deletions(-) create mode 100644 docs/greater_than.md diff --git a/docs/greater_than.md b/docs/greater_than.md new file mode 100644 index 0000000..b23bfd1 --- /dev/null +++ b/docs/greater_than.md @@ -0,0 +1,34 @@ +# greater_than + +Returns true if the first argument is greater than the second argument. + +## Parameters + +* a (`integer`, `float`, `double`, `instruction`) - The first number. +* b (`integer`, `float`, `double`, `instruction`) - The second number. + +## Return + +(`boolean`) - True if the first argument is greater than the second argument. + +## Exceptions + +* `EvaluationException` - If there was an error while evaluating one or more parameters. +* `TypeException` - If one or more parameters are not of the expected type. + +## Instruction Example + +```json +{ + "type": "greater_than", + "_": { + "a": 10, + "b": 2 + } +} +``` + +### Last Updated + +Monday, December 29th, 2022. +Written by [Netkas](https://git.n64.cc/netkas) \ No newline at end of file diff --git a/src/RTEX/Objects/Program/Instructions/GreaterThan.php b/src/RTEX/Objects/Program/Instructions/GreaterThan.php index 382dd51..a3ab6aa 100644 --- a/src/RTEX/Objects/Program/Instructions/GreaterThan.php +++ b/src/RTEX/Objects/Program/Instructions/GreaterThan.php @@ -8,8 +8,9 @@ use RTEX\Classes\InstructionBuilder; use RTEX\Classes\Utilities; use RTEX\Engine; - use RTEX\Exceptions\Core\MalformedInstructionException; - use RTEX\Exceptions\Core\UnsupportedVariableType; + use RTEX\Exceptions\EvaluationException; + use RTEX\Exceptions\InstructionException; + use RTEX\Exceptions\Runtime\TypeException; use RTEX\Interfaces\InstructionInterface; class GreaterThan implements InstructionInterface @@ -38,7 +39,6 @@ * Returns an array representation of the instruction * * @return array - * @throws UnsupportedVariableType */ public function toArray(): array { @@ -53,8 +53,7 @@ * * @param array $data * @return InstructionInterface - * @throws MalformedInstructionException - * @throws UnsupportedVariableType + * @throws InstructionException */ public static function fromArray(array $data): InstructionInterface { @@ -67,10 +66,19 @@ /** * @param Engine $engine * @return int - * @throws UnsupportedVariableType + * @throws EvaluationException + * @throws TypeException */ public function eval(Engine $engine): int { + $a = $engine->eval($this->A); + $b = $engine->eval($this->B); + + if (!is_numeric($a)) + throw new TypeException(sprintf('Parameter "a" must be numeric, %s given', Utilities::getType($a))); + if (!is_numeric($b)) + throw new TypeException(sprintf('Parameter "b" must be numeric, %s given', Utilities::getType($b))); + return (intval($engine->eval($this->A)) > intval($engine->eval($this->B))); } @@ -78,7 +86,6 @@ * Returns the string representation of the instruction * * @return string - * @throws UnsupportedVariableType */ public function __toString(): string { @@ -103,8 +110,7 @@ * Sets the value of A * * @param mixed $A - * @throws UnsupportedVariableType - * @throws MalformedInstructionException + * @throws InstructionException */ public function setA(mixed $A): void { @@ -125,8 +131,7 @@ * Sets the value of B * * @param mixed $B - * @throws MalformedInstructionException - * @throws UnsupportedVariableType + * @throws InstructionException */ public function setB(mixed $B): void {