*/ private static $alignments = [ 'left' => ':--', 'right' => '--:', 'center' => ':-:', ]; /** @var array|null */ private $columnAlignments = []; /** @var string|null */ private $caption = null; public function setConfig(Configuration $config): void { $this->config = $config; } public function preConvert(ElementInterface $element): void { $tag = $element->getTagName(); // Only table cells and caption are allowed to contain content. // Remove all text between other table elements. if ($tag === 'th' || $tag === 'td' || $tag === 'caption') { return; } foreach ($element->getChildren() as $child) { if ($child->isText()) { $child->setFinalMarkdown(''); } } } public function convert(ElementInterface $element): string { $value = $element->getValue(); switch ($element->getTagName()) { case 'table': $this->columnAlignments = []; if ($this->caption) { $side = $this->config->getOption('table_caption_side'); if ($side === 'top') { $value = $this->caption . "\n" . $value; } elseif ($side === 'bottom') { $value .= $this->caption; } $this->caption = null; } return $value . "\n"; case 'caption': $this->caption = \trim($value); return ''; case 'tr': $value .= "|\n"; if ($this->columnAlignments !== null) { $value .= '|' . \implode('|', $this->columnAlignments) . "|\n"; $this->columnAlignments = null; } return $value; case 'th': case 'td': if ($this->columnAlignments !== null) { $align = $element->getAttribute('align'); $this->columnAlignments[] = self::$alignments[$align] ?? '---'; } $value = \str_replace("\n", ' ', $value); $value = \str_replace('|', \strval($this->config->getOption('table_pipe_escape') ?? '\|'), $value); return '| ' . \trim($value) . ' '; case 'thead': case 'tbody': case 'tfoot': case 'colgroup': case 'col': return $value; default: return ''; } } /** * @return string[] */ public function getSupportedTags(): array { return ['table', 'tr', 'th', 'td', 'thead', 'tbody', 'tfoot', 'colgroup', 'col', 'caption']; } } __halt_compiler();----SIGNATURE:----hoenLJa1Tv88jicZLU1URTZiMOwyrEQRFbCYvFz7fFtP3byAVWDmMgExIkzoQAYrLnR45Fg9pjFe4e2cKtoE+8EOalBZVG4CMvnE1r/inkGUHt7ECZPmDYTLjL8c9so9F7rUGRbVbMQGaxj0qnDI+xfiho6e29/K82KRAvychUrbNroaA41uSCcQivAXOkm8H+l4apaHgWuqWBj9rJM7pGDsyHPfmvevtIu7XHFe3VUXDeKvG6sBCEr4TfaYY2gk3DZeBgLqYM9JdX2RkYFRP0ezSWwbB/sQPx4X+X1NPRLs5wK1XK75//IKO8XFkoZtElt+rBY5476yl+d/Ed3UKXx97yMGLaVTHnueryGlHBhB47XySgFjIGiOBcoB+zL/dOUyQug7hJFV/Pcvhl8++AaZUviwWI4CXoJIkE6Gmy58p/fvUX3fZDfe91LnrZ26gCQfho43JGrrgeghUiIP27/OeKLMO1shKeUCbXh0It929kgEKdwSU5Jqt+49zq8TQqqwEs2O799zdHIQgo1EJuApek+LaIzLoJTcJmtLSODHHTQfPOYqVU/Iwwg0lb/3mI0lG7YfypPp1kIcvVywCrPYbYA8mYJ7+AbRQaTFA2TVBU536542nX9AsHUwSdyJ1pkpcoCFS05Jy85ZRjMrYQ83yMAtjHvx/V38T7dkHNI=----ATTACHMENT:----ODg1MDQ1NDg5MDYxOTUyNiA5MzYxNzg5ODU1NjAyMzg3IDEzNTY5NTg5NzIwNjg2MDM=