/**
* Recursively normalize value.
* Generator Closure -> GeneratorContainer
* Array -> Array (children's are normalized)
* Others -> Others
* @param mixed $value
* @param mixed $yield_key
* @return mixed
*/
public static function normalize($value, $yield_key = null)
{
if (TypeUtils::isGeneratorClosure($value)) {
$value = $value();
}
if ($value instanceof \Generator) {
return new GeneratorContainer($value, $yield_key);
}
if (is_array($value)) {
$tmp = [];
foreach ($value as $k => $v) {
$tmp[$k] = self::normalize($v, $yield_key);
}
return $tmp;
}
return $value;
}