protected function blockTable($Line, array $Block = null)
{
if (!isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) {
return;
}
if (strpos($Block['element']['text'], '|') !== false and chop($Line['text'], ' -:|') === '') {
$alignments = array();
$divider = $Line['text'];
$divider = trim($divider);
$divider = trim($divider, '|');
$dividerCells = explode('|', $divider);
foreach ($dividerCells as $dividerCell) {
$dividerCell = trim($dividerCell);
if ($dividerCell === '') {
continue;
}
$alignment = null;
if ($dividerCell[0] === ':') {
$alignment = 'left';
}
if (substr($dividerCell, -1) === ':') {
$alignment = $alignment === 'left' ? 'center' : 'right';
}
$alignments[] = $alignment;
}
$HeaderElements = array();
$header = $Block['element']['text'];
$header = trim($header);
$header = trim($header, '|');
$headerCells = explode('|', $header);
foreach ($headerCells as $index => $headerCell) {
$headerCell = trim($headerCell);
$HeaderElement = array('name' => 'th', 'text' => $headerCell, 'handler' => 'line');
if (isset($alignments[$index])) {
$alignment = $alignments[$index];
$HeaderElement['attributes'] = array('style' => 'text-align: ' . $alignment . ';');
}
$HeaderElements[] = $HeaderElement;
}
$Block = array('alignments' => $alignments, 'identified' => true, 'element' => array('name' => 'table', 'handler' => 'elements'));
$Block['element']['text'][] = array('name' => 'thead', 'handler' => 'elements');
$Block['element']['text'][] = array('name' => 'tbody', 'handler' => 'elements', 'text' => array());
$Block['element']['text'][0]['text'][] = array('name' => 'tr', 'handler' => 'elements', 'text' => $HeaderElements);
return $Block;
}
}