private function replaceTraits($raml, $traits, $path, $name)
{
if (!is_array($raml)) {
return $raml;
}
$newArray = [];
foreach ($raml as $key => $value) {
if ($key === 'is') {
foreach ($value as $traitName) {
$trait = [];
if (is_array($traitName)) {
$traitVariables = current($traitName);
$traitName = key($traitName);
$traitVariables['resourcePath'] = $path;
$traitVariables['resourcePathName'] = $name;
$trait = $this->applyTraitVariables($traitVariables, $traits[$traitName]);
} elseif (isset($traits[$traitName])) {
$trait = $traits[$traitName];
}
$newArray = array_replace_recursive($newArray, $this->replaceTraits($trait, $traits, $path, $name));
}
} else {
$newValue = $this->replaceTraits($value, $traits, $path, $name);
if (isset($newArray[$key]) && is_array($newArray[$key])) {
$newArray[$key] = array_replace_recursive($newArray[$key], $newValue);
} else {
$newArray[$key] = $newValue;
}
}
}
return $newArray;
}