protected function addJsonToModuleFile(stdClass $jsonData, ModuleFile $moduleFile)
{
if (isset($jsonData->name)) {
$moduleFile->setModuleName($jsonData->name);
}
if (isset($jsonData->resources)) {
foreach ($jsonData->resources as $path => $relativePaths) {
$moduleFile->addPathMapping(new PathMapping($path, (array) $relativePaths));
}
}
if (isset($jsonData->bindings)) {
foreach ($jsonData->bindings as $uuid => $bindingData) {
$binding = null;
$class = isset($bindingData->_class) ? $bindingData->_class : 'Puli\\Discovery\\Binding\\ResourceBinding';
// Move this code to external classes to allow use of custom
// bindings
switch ($class) {
case 'Puli\\Discovery\\Binding\\ClassBinding':
$binding = new ClassBinding($bindingData->class, $bindingData->type, isset($bindingData->parameters) ? (array) $bindingData->parameters : array(), Uuid::fromString($uuid));
break;
case 'Puli\\Discovery\\Binding\\ResourceBinding':
$binding = new ResourceBinding($bindingData->query, $bindingData->type, isset($bindingData->parameters) ? (array) $bindingData->parameters : array(), isset($bindingData->language) ? $bindingData->language : 'glob', Uuid::fromString($uuid));
break;
default:
continue 2;
}
$moduleFile->addBindingDescriptor(new BindingDescriptor($binding));
}
}
if (isset($jsonData->{'binding-types'})) {
foreach ((array) $jsonData->{'binding-types'} as $typeName => $data) {
$parameters = array();
$parameterDescriptions = array();
if (isset($data->parameters)) {
foreach ((array) $data->parameters as $parameterName => $parameterData) {
$required = isset($parameterData->required) ? $parameterData->required : false;
$parameters[] = new BindingParameter($parameterName, $required ? BindingParameter::REQUIRED : BindingParameter::OPTIONAL, isset($parameterData->default) ? $parameterData->default : null);
if (isset($parameterData->description)) {
$parameterDescriptions[$parameterName] = $parameterData->description;
}
}
}
$moduleFile->addTypeDescriptor(new BindingTypeDescriptor(new BindingType($typeName, $parameters), isset($data->description) ? $data->description : null, $parameterDescriptions));
}
}
if (isset($jsonData->depend)) {
$moduleFile->setDependencies($jsonData->depend);
}
if (isset($jsonData->extra)) {
$moduleFile->setExtraKeys((array) $jsonData->extra);
}
}