public function processTable(Text $text, array $options = [])
{
$lessThanTab = $options['tabWidth'] - 1;
$text->replace('/
(?:\\n\\n|\\A)
(?:[ ]{0,' . $lessThanTab . '} # table header
(?:\\|?) # optional outer pipe
([^\\n]*?\\|[^\\n]*?) #1 table header
(?:\\|?) # optional outer pipe
)\\n
(?:[ ]{0,' . $lessThanTab . '} # second line
(?:\\|?) # optional outer pipe
([-:\\| ]+?\\|[-:\\| ]+?) #2 dashes and pipes
(?:\\|?) # optional outer pipe
)\\n
(.*?)\\n{2,} #3 table body
/smx', function (Text $w, Text $header, Text $rule, Text $body) use($options) {
// Escape pipe to hash, so you can include pipe in cells by escaping it like this: `\\|`
$this->escapePipes($header);
$this->escapePipes($rule);
$this->escapePipes($body);
try {
$baseTags = $this->createBaseTags($rule->split('/\\|/'));
$headerCells = $this->parseHeader($header, $baseTags);
$bodyRows = $this->parseBody($body, $baseTags);
} catch (SyntaxError $e) {
if ($options['strict']) {
throw $e;
}
return $w;
}
$html = $this->createView($headerCells, $bodyRows);
$this->unescapePipes($html);
return "\n\n" . $html . "\n\n";
});
}