> */ public function getNodeTypes() : array { return [Concat::class]; } /** * @param Concat $node */ public function refactor(Node $node) : ?Node { if (!$node->left instanceof String_) { return null; } if (!$node->right instanceof String_) { return null; } return $this->joinConcatIfStrings($node->left, $node->right); } private function joinConcatIfStrings(String_ $leftString, String_ $rightString) : ?String_ { $leftValue = $leftString->value; $rightValue = $rightString->value; if ($leftValue === "\n" || $rightValue === "\n") { return null; } $joinedStringValue = $leftValue . $rightValue; if (StringUtils::isMatch($joinedStringValue, self::ASCII_REGEX)) { return null; } if (Strings::length($joinedStringValue) >= self::LINE_BREAK_POINT) { return null; } return new String_($joinedStringValue); } }