@@ -90,7 +90,9 @@ public function parse(stdClass $object): self
90
90
$ this ->parse_headers ($ object ->attributes ->headers );
91
91
}
92
92
93
- $ this ->parse_content ($ object );
93
+ foreach ($ object ->content as $ value ) {
94
+ $ this ->parse_content ($ value );
95
+ }
94
96
95
97
return $ this ;
96
98
}
@@ -119,49 +121,54 @@ protected function parse_headers(stdClass $object): void
119
121
/**
120
122
* Parse request content.
121
123
*
122
- * @param stdClass $object An object to parse for content
124
+ * @param stdClass $value An object to parse for content
123
125
*
124
126
* @return void
125
127
*/
126
- protected function parse_content (stdClass $ object ): void
128
+ protected function parse_content (stdClass $ value ): void
127
129
{
128
- foreach ($ object ->content as $ value ) {
129
- if ($ value ->element === 'copy ' ) {
130
- $ this ->description = $ value ->content ;
131
- continue ;
132
- }
133
-
134
- if ($ value ->element === 'dataStructure ' ) {
135
- $ data_content = is_array ($ value ->content ) ? $ value ->content : [$ value ->content ];
136
- $ this ->parse_structure ($ data_content );
137
- continue ;
138
- }
130
+ if ($ value ->element === 'copy ' ) {
131
+ $ this ->description = $ value ->content ;
132
+ return ;
133
+ }
139
134
135
+ if ($ value ->element === 'asset ' ) {
140
136
if (isset ($ value ->attributes ->contentType ->content )) {
141
137
$ this ->content [$ value ->attributes ->contentType ->content ] = $ value ->content ;
142
138
} elseif (isset ($ value ->attributes ->contentType )) {
143
139
$ this ->content [$ value ->attributes ->contentType ] = $ value ->content ;
144
140
}
141
+ return ;
142
+ }
143
+
144
+ if ($ value ->element === 'dataStructure ' ) {
145
+ foreach ($ value ->content ->content as $ object ) {
146
+ $ this ->parse_structure ($ object );
147
+ }
148
+ return ;
145
149
}
146
150
}
147
151
148
152
/**
149
153
* Parse structure of the content.
150
154
*
151
- * @param stdClass[] $objects Objects containing the structure
155
+ * @param stdClass $object Objects containing the structure
152
156
*
153
157
* @return void
154
158
*/
155
- protected function parse_structure (array $ objects ): void
159
+ protected function parse_structure (stdClass $ object ): void
156
160
{
157
- foreach ($ objects as $ object ) {
158
- $ deps = [];
159
- $ struct = new ObjectStructureElement ();
160
- $ struct ->parse ($ object , $ deps );
161
- $ struct ->deps = $ deps ;
162
-
163
- $ this ->structure [] = $ struct ;
161
+ $ deps = [];
162
+ $ struct = new ObjectStructureElement ();
163
+ $ struct ->parse ($ object , $ deps );
164
+ $ struct ->deps = $ deps ;
165
+ foreach ($ this ->structure as $ prev ) {
166
+ if ($ struct ->__toString () === $ prev ->__toString ()) {
167
+ return ;
168
+ }
164
169
}
170
+
171
+ $ this ->structure [] = $ struct ;
165
172
}
166
173
167
174
/**
0 commit comments