26 private $idAttributes = [
'/' =>
'name'];
31 private $definitionReader;
36 private $readerFactory;
41 private $fileResolver;
51 private $readerDomFactory;
74 ConfigConverter $converter,
75 Reader\Definition $definitionReader,
76 ReaderFactory $readerFactory,
77 Reader\DomFactory $readerDomFactory,
78 array $idAttributes = []
80 $this->fileName = $fileName;
81 $this->fileResolver = $fileResolver;
82 $this->converter = $converter;
83 $this->definitionReader = $definitionReader;
84 $this->readerFactory = $readerFactory;
85 $this->readerDomFactory = $readerDomFactory;
86 $this->idAttributes = array_replace($this->idAttributes, $idAttributes);
95 public function read($scope =
null)
97 $scope = $scope ?:
'global';
98 $fileList = $this->fileResolver->get($this->fileName, $scope);
117 $configMerger =
null;
121 $configMerger = $this->readerDomFactory->create(
124 'idAttributes' => $this->idAttributes,
127 $output = array_replace_recursive(
$output, $this->converter->convert($configMerger->getDom()));
128 }
catch (ValidationException $e) {
129 throw new LocalizedException(
131 'The XML in file "%1" is invalid:' .
"\n%2\nVerify the XML and try again.",
132 [$key, $e->getMessage()]
138 $definitionData = $this->definitionReader->read();
140 if (isset(
$output[
'attributes'][
'extends'])) {
141 $extendsReader = $this->readerFactory->create(
143 'fileName' => sprintf(
145 $output[
'attributes'][
'extends']
149 $extendsData = $extendsReader->read();
165 private function mergeDefinition(array $component, array $definitions)
167 foreach ($component[
'children'] as
$name => $child) {
168 $component[
'children'][
$name] = $this->mergeDefinition($child, $definitions);
170 if (isset($component[
'uiComponentType'])) {
171 $definition = isset($definitions[$component[
'uiComponentType']])
172 ? $definitions[$component[
'uiComponentType']]
174 $component = array_replace_recursive($definition, $component);
175 unset($component[
'uiComponentType']);
__construct( $fileName, FileResolverInterface $fileResolver, ConfigConverter $converter, Reader\Definition $definitionReader, ReaderFactory $readerFactory, Reader\DomFactory $readerDomFactory, array $idAttributes=[])
if(!isset($_GET['name'])) $name