protected function getValueForParameters(array $parameters, $original, array $attributes)
{
$wasArray = is_array($original);
$original = $wasArray ? $original : [$original];
foreach (array_keys($original) as $index) {
foreach ($parameters as $parameter) {
$value = '';
// Explicitly set parameters values will take precedence
if (array_key_exists(MBString::strtolower($parameter), MBString::array_change_key_case($this->parameters))) {
$value = array_change_key_case($this->parameters)[MBString::strtolower($parameter)];
} elseif (array_key_exists(MBString::strtolower($parameter), MBString::array_change_key_case($attributes))) {
$value = MBString::array_change_key_case($attributes)[MBString::strtolower($parameter)];
}
if (is_array($value) && count($value) !== 1) {
throw new InvalidArgumentException(sprintf('Cannot use a multi-valued attribute "%s" as a parameter.', $parameter));
}
$value = is_array($value) && count($value) == 1 ? reset($value) : $value;
$original[$index] = preg_replace("/" . self::PARAM_MARKER . $parameter . self::PARAM_MARKER . "/", $value, $original[$index]);
}
}
return $wasArray ? $original : $original[0];
}