1<?php 2 3namespace dokuwiki\plugin\prosemirror\parser; 4 5class TableNode extends Node 6{ 7 /** @var TableRowNode[] */ 8 protected $tableRows = []; 9 protected $rowSpans = []; 10 protected $numCols; 11 12 public function __construct($data, Node $parent = null) 13 { 14 foreach ($data['content'] as $row) { 15 $this->tableRows[] = new TableRowNode($row, $this); 16 } 17 $this->countColNum(); 18 } 19 20 /** 21 * Count the total number of columns in the table 22 * 23 * This method calculates the number of columns in the first row, by adding the colspan of each cell. 24 * This produces the correct number columns, since the first row cannot have ommited cells due to a 25 * rowspan, as every other row could have. 26 * 27 */ 28 protected function countColNum() 29 { 30 $this->numCols = $this->tableRows[0]->countCols(); 31 } 32 33 /** 34 * Get the total number of columns for this table 35 * 36 * @return int 37 */ 38 public function getNumTableCols() 39 { 40 return $this->numCols; 41 } 42 43 public function toSyntax() 44 { 45 $doc = ''; 46 foreach ($this->tableRows as $row) { 47 $doc .= $row->toSyntax() . "\n"; 48 } 49 50 return $doc; 51 } 52 53 public function getRowSpans() 54 { 55 return $this->rowSpans; 56 } 57 58 public function setRowSpans(array $rowSpans) 59 { 60 $this->rowSpans = $rowSpans; 61 } 62} 63