You are here

protected function MarkdownExtra::doTables in Markdown 7

* Form HTML tables. *

Parameters

string $text: * @return string

File

includes/MarkdownExtra.php, line 1096

Class

MarkdownExtra
Markdown Extra Parser Class

Namespace

Michelf

Code

protected function doTables($text) {
  $less_than_tab = $this->tab_width - 1;

  // Find tables with leading pipe.
  //
  //	| Header 1 | Header 2
  //	| -------- | --------
  //	| Cell 1   | Cell 2
  //	| Cell 3   | Cell 4
  $text = preg_replace_callback('
			{
				^							# Start of a line
				[ ]{0,' . $less_than_tab . '}	# Allowed whitespace.
				[|]							# Optional leading pipe (present)
				(.+) \\n						# $1: Header row (at least one pipe)
				
				[ ]{0,' . $less_than_tab . '}	# Allowed whitespace.
				[|] ([ ]*[-:]+[-| :]*) \\n	# $2: Header underline
				
				(							# $3: Cells
					(?>
						[ ]*				# Allowed whitespace.
						[|] .* \\n			# Row content.
					)*
				)
				(?=\\n|\\Z)					# Stop at final double newline.
			}xm', array(
    $this,
    '_doTable_leadingPipe_callback',
  ), $text);

  // Find tables without leading pipe.
  //
  //	Header 1 | Header 2
  //	-------- | --------
  //	Cell 1   | Cell 2
  //	Cell 3   | Cell 4
  $text = preg_replace_callback('
			{
				^							# Start of a line
				[ ]{0,' . $less_than_tab . '}	# Allowed whitespace.
				(\\S.*[|].*) \\n				# $1: Header row (at least one pipe)
				
				[ ]{0,' . $less_than_tab . '}	# Allowed whitespace.
				([-:]+[ ]*[|][-| :]*) \\n	# $2: Header underline
				
				(							# $3: Cells
					(?>
						.* [|] .* \\n		# Row content
					)*
				)
				(?=\\n|\\Z)					# Stop at final double newline.
			}xm', array(
    $this,
    '_DoTable_callback',
  ), $text);
  return $text;
}