From 7c509ed1372622cb9c44a953be2788bbeea363f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20=C5=A0tancl?= Date: Tue, 4 May 2021 16:12:02 +0200 Subject: [PATCH] support closures inside arrays --- src/GlossTranslator.php | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/GlossTranslator.php b/src/GlossTranslator.php index c2e3a8f..375d9e1 100644 --- a/src/GlossTranslator.php +++ b/src/GlossTranslator.php @@ -229,20 +229,27 @@ class GlossTranslator extends Translator if (is_string($line) || is_callable($line)) { // Changed return $this->makeReplacements($line, $replace); } elseif (is_array($line) && count($line) > 0) { - foreach ($line as $key => $value) { - if (! is_callable($value)) { - $value = $this->makeReplacements($value, $replace); - } - - $line[$key] = $value; - } - - return $line; + return $this->makeReplacementsInArray($line, $replace); } return null; } + protected function makeReplacementsInArray(array $lines, array $replace): array + { + foreach ($lines as $key => $value) { + if (is_array($value)) { + $value = $this->makeReplacementsInArray($value, $replace); + } else { + $value = $this->makeReplacements($value, $replace); + } + + $lines[$key] = $value; + } + + return $lines; + } + /** * @param string|callable $line * @param array $replace