@@ -52,6 +52,31 @@ public function inferTableFrom( string $source, bool $normalize = true ): void {
52
52
$ this ->dispatchEvent ( new TableTraced ( Table::TBody, EventAt::End, $ table , $ this ) );
53
53
}
54
54
55
+ /** @param iterable<array-key,array{0:string,1:string,2:string,3:string,4:string}> $elementList */
56
+ public function inferTableHeadFrom ( iterable $ elementList ): void {
57
+ [$ names , $ skippedNodes , $ transformer ] = $ this ->useCurrentTableHeadDetails ();
58
+
59
+ foreach ( $ elementList as $ currentIndex => $ head ) {
60
+ [$ node , $ nodeName , $ attribute , $ content ] = $ head ;
61
+
62
+ if ( Table::Head->value !== $ nodeName ) {
63
+ $ this ->tickCurrentHeadIterationSkippedHeadNode ();
64
+
65
+ ++$ skippedNodes ;
66
+
67
+ continue ;
68
+ }
69
+
70
+ $ position = $ currentIndex - $ skippedNodes ;
71
+
72
+ $ this ->registerCurrentIterationTableHead ( $ position );
73
+
74
+ $ names [] = $ transformer ?->transform( $ head , $ this ) ?? trim ( $ content );
75
+ }
76
+
77
+ $ this ->registerCurrentTableHead ( $ names );
78
+ }
79
+
55
80
/** @param iterable<array-key,DOMNode|array{0:string,1:string,2:string,3:string,4:string}> $elementList */
56
81
public function inferTableDataFrom ( iterable $ elementList ): array {
57
82
$ data = [];
@@ -87,34 +112,6 @@ public function inferTableDataFrom( iterable $elementList ): array {
87
112
return $ data ;
88
113
}
89
114
90
- /**
91
- * @param iterable<array-key,array{0:string,1:string,2:string,3:string,4:string}> $elementList
92
- * @return ?list<string>
93
- */
94
- protected function inferTableHeadFrom ( iterable $ elementList ): ?array {
95
- [$ names , $ skippedNodes , $ transformer ] = $ this ->useCurrentTableHeadDetails ();
96
-
97
- foreach ( $ elementList as $ currentIndex => $ head ) {
98
- [$ node , $ nodeName , $ attribute , $ content ] = $ head ;
99
-
100
- if ( Table::Head->value !== $ nodeName ) {
101
- $ this ->tickCurrentHeadIterationSkippedHeadNode ();
102
-
103
- ++$ skippedNodes ;
104
-
105
- continue ;
106
- }
107
-
108
- $ position = $ currentIndex - $ skippedNodes ;
109
-
110
- $ this ->registerCurrentIterationTableHead ( $ position );
111
-
112
- $ names [] = $ transformer ?->transform( $ head , $ this ) ?? trim ( $ content );
113
- }
114
-
115
- return $ names ?: null ;
116
- }
117
-
118
115
protected function captionStructureContentFrom ( string $ table ): void {
119
116
[$ matched , $ caption ] = Normalize::nodeToMatchedArray ( $ table , Table::Caption );
120
117
@@ -151,9 +148,8 @@ protected function headStructureContentFrom( string $string ): void {
151
148
152
149
if ( $ rowsFound ) {
153
150
[$ headsFound , $ rowColumns ] = Normalize::tableColumnsFrom ( $ headRow [2 ] );
154
- $ content = ! $ headsFound ? null : $ this ->inferTableHeadFrom ( $ rowColumns );
155
151
156
- $ content && $ this ->registerCurrentTableHead ( $ content );
152
+ $ headsFound && $ this ->inferTableHeadFrom ( $ rowColumns );
157
153
}
158
154
159
155
$ this ->dispatchEvent ( new TableTraced ( Table::THead, EventAt::End, $ thead [0 ], $ this ) );
@@ -284,9 +280,7 @@ private function bodyStructureIteratorFrom( array $body ): Iterator {
284
280
285
281
/** @param array{0:string,1:string,2:string,3:string,4:string}[] $row */
286
282
private function inspectFirstRowForHeadStructure ( array $ row ): bool {
287
- ( $ firstRowContent = $ this ->inferTableHeadFrom ( $ row ) )
288
- && $ this ->currentIteration__allTableHeads
289
- && $ this ->registerCurrentTableHead ( $ firstRowContent );
283
+ $ this ->inferTableHeadFrom ( $ row );
290
284
291
285
return $ this ->currentIteration__allTableHeads ;
292
286
}
0 commit comments