private function substituteTokens(array $formatConfig, $params)
{
foreach ($formatConfig as $key => $value) {
if (is_array($value)) {
$formatConfig[$key] = $this->substituteTokens($value, $params);
continue;
}
preg_match_all('/{{(.*?)}}/', $value, $matches);
$tokenNames = $matches[1];
if (empty($tokenNames)) {
continue;
}
$tokens = [];
foreach ($tokenNames as $tokenName) {
$realTokenName = trim($tokenName);
// should we throw an exception or skip in this case? if we enforce formatter configs
// on the generators then that is extra responsiblity for them.
if (!isset($params[$realTokenName])) {
unset($formatConfig[$key]);
continue 2;
}
$tokens['{{' . $tokenName . '}}'] = $params[$realTokenName];
}
$formatConfig[$key] = strtr($value, $tokens);
}
return $formatConfig;
}