Raml\Parser::applyTraitVariables PHP Method

applyTraitVariables() private method

Add trait variables
private applyTraitVariables ( array $values, array $trait ) : mixed
$values array
$trait array
return mixed
    private function applyTraitVariables(array $values, array $trait)
    {
        $variables = implode('|', array_keys($values));
        $newTrait = [];
        foreach ($trait as $key => &$value) {
            $newKey = preg_replace_callback('/<<(' . $variables . ')([\\s]*\\|[\\s]*!(singularize|pluralize))?>>/', function ($matches) use($values) {
                $transformer = isset($matches[3]) ? $matches[3] : '';
                switch ($transformer) {
                    case 'singularize':
                        return Inflect::singularize($values[$matches[1]]);
                        break;
                    case 'pluralize':
                        return Inflect::pluralize($values[$matches[1]]);
                        break;
                    default:
                        return $values[$matches[1]];
                }
            }, $key);
            if (is_array($value)) {
                $value = $this->applyTraitVariables($values, $value);
            } else {
                $value = preg_replace_callback('/<<(' . $variables . ')([\\s]*\\|[\\s]*!(singularize|pluralize))?>>/', function ($matches) use($values) {
                    $transformer = isset($matches[3]) ? $matches[3] : '';
                    switch ($transformer) {
                        case 'singularize':
                            return Inflect::singularize($values[$matches[1]]);
                            break;
                        case 'pluralize':
                            return Inflect::pluralize($values[$matches[1]]);
                            break;
                        default:
                            return $values[$matches[1]];
                    }
                }, $value);
            }
            $newTrait[$newKey] = $value;
        }
        return $newTrait;
    }