. */ declare(strict_types=1); namespace FireflyIII\Rules; use Closure; use Illuminate\Contracts\Validation\ValidationRule; use FireflyIII\TransactionRules\Expressions\ActionExpression; class IsValidActionExpression implements ValidationRule { /** * Check that the given action expression is syntactically valid. * * @param \Closure(string): \Illuminate\Translation\PotentiallyTranslatedString $fail */ public function validate(string $attribute, mixed $value, Closure $fail): void { $value ??= ''; $expr = new ActionExpression($value); if (!$expr->isValid()) { $fail('validation.rule_action_expression')->translate([ 'error' => $expr->getValidationError()->getMessage() ]); } } }