public function handleRecursion(&$result)
{
$getMiddleString = $this->getMiddleString();
$codeHandler = $this->codeHandler;
return function ($arg, $name = '') use(&$result, $codeHandler, $getMiddleString) {
list($start, $end) = $arg;
$str = trim($getMiddleString($start, $end));
if (!strlen($str)) {
return '';
}
$innerCode = $codeHandler->innerCode($str, $name);
if (count($innerCode) > 1) {
$result = array_merge($result, array_slice($innerCode, 0, -1));
return array_pop($innerCode);
}
return $innerCode[0];
};
}