P->addMode('table',new Table());
$this->P->parse('
abc
| Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 |
| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[3, 2, 6]],
['tablerow_open',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 0 Col 1 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 0 Col 2 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 0 Col 3 ']],
['tablecell_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 1 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 2 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 3 ']],
['tablecell_close',[]],
['tablerow_close',[]],
['table_close',[121]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
function testTableWinEOL() {
$this->P->addMode('table',new Table());
$this->P->parse("\r\nabc\r\n| Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 |\r\n| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |\r\ndef");
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[3, 2, 6]],
['tablerow_open',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 0 Col 1 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 0 Col 2 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 0 Col 3 ']],
['tablecell_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 1 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 2 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 3 ']],
['tablecell_close',[]],
['tablerow_close',[]],
['table_close',[121]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
function testEmptyTable() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
|
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[0, 1, 6]],
['tablerow_open',[]],
['tablerow_close',[]],
['table_close',[7]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
function testTableHeaders() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
^ X | Y ^ Z |
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[3, 1, 6]],
['tablerow_open',[]],
['tableheader_open',[1,null,1]],
['cdata',[' X ']],
['tableheader_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[' Y ']],
['tablecell_close',[]],
['tableheader_open',[1,null,1]],
['cdata',[' Z ']],
['tableheader_close',[]],
['tablerow_close',[]],
['table_close',[19]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
function testTableHead() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
^ X ^ Y ^ Z ^
| x | y | z |
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[3, 2, 6]],
['tablethead_open',[]],
['tablerow_open',[]],
['tableheader_open',[1,null,1]],
['cdata',[' X ']],
['tableheader_close',[]],
['tableheader_open',[1,null,1]],
['cdata',[' Y ']],
['tableheader_close',[]],
['tableheader_open',[1,null,1]],
['cdata',[' Z ']],
['tableheader_close',[]],
['tablerow_close',[]],
['tablethead_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,null,1]],
['cdata',[' x ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[' y ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[' z ']],
['tablecell_close',[]],
['tablerow_close',[]],
['table_close',[33]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
function testTableHeadOneRowTable() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
^ X ^ Y ^ Z ^
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[3, 1, 6]],
['tablerow_open',[]],
['tableheader_open',[1,null,1]],
['cdata',[' X ']],
['tableheader_close',[]],
['tableheader_open',[1,null,1]],
['cdata',[' Y ']],
['tableheader_close',[]],
['tableheader_open',[1,null,1]],
['cdata',[' Z ']],
['tableheader_close',[]],
['tablerow_close',[]],
['table_close',[19]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
function testTableHeadMultiline() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
^ X1 ^ Y1 ^ Z1 ^
^ X2 ^ Y2 ^ Z2 ^
| A | B | C |
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[3, 3, 6]],
['tablethead_open',[]],
['tablerow_open',[]],
['tableheader_open',[1,null,1]],
['cdata',[' X1 ']],
['tableheader_close',[]],
['tableheader_open',[1,null,1]],
['cdata',[' Y1 ']],
['tableheader_close',[]],
['tableheader_open',[1,null,1]],
['cdata',[' Z1 ']],
['tableheader_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tableheader_open',[1,null,1]],
['cdata',[' X2 ']],
['tableheader_close',[]],
['tableheader_open',[1,null,1]],
['cdata',[' Y2 ']],
['tableheader_close',[]],
['tableheader_open',[1,null,1]],
['cdata',[' Z2 ']],
['tableheader_close',[]],
['tablerow_close',[]],
['tablethead_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,null,1]],
['cdata',[' A ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[' B ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[' C ']],
['tablecell_close',[]],
['tablerow_close',[]],
['table_close',[53]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
function testCellAlignment() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
| X | Y ^ Z |
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[3, 1, 6]],
['tablerow_open',[]],
['tablecell_open',[1,'right',1]],
['cdata',[' X ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Y ']],
['tablecell_close',[]],
['tableheader_open',[1,'center',1]],
['cdata',[' Z ']],
['tableheader_close',[]],
['tablerow_close',[]],
['table_close',[23]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
function testCellSpan() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
| d || e |
| f ^ ^|
||||
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[3, 3, 6]],
['tablerow_open',[]],
['tablecell_open',[2,'right',1]],
['cdata',[' d ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[' e ']],
['tablecell_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,null,1]],
['cdata',[' f ']],
['tablecell_close',[]],
['tableheader_open',[2,null,1]],
['cdata',[' ']],
['tableheader_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tablerow_close',[]],
['table_close',[31]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
function testCellRowSpan() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
| a | c:::||
|:::^ d | e|
|b ^ ::: |:::f|
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[3, 3, 6]],
['tablerow_open',[]],
['tablecell_open',[1,null,2]],
['cdata',[' a ']],
['tablecell_close',[]],
['tablecell_open',[2,'right',1]],
['cdata',[' c:::']],
['tablecell_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tableheader_open',[1,'left',2]],
['cdata',[' d ']],
['tableheader_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[' e']],
['tablecell_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,'left',1]],
['cdata',['b ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[':::f']],
['tablecell_close',[]],
['tablerow_close',[]],
['table_close',[51]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
function testCellRowSpanFirstRow() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
|::: ^ d:::^:::| ::: |
| b ^ e | | ::: |
|c ^ ::: | |:::|
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[4, 3, 6]],
['tablerow_open',[]],
['tablecell_open',[1,null,1]],
['cdata',['']],
['tablecell_close',[]],
['tableheader_open',[1,'right',1]],
['cdata',[' d:::']],
['tableheader_close',[]],
['tableheader_open',[1,null,1]],
['cdata',['']],
['tableheader_close',[]],
['tablecell_open',[1,null,3]],
['cdata',['']],
['tablecell_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,null,1]],
['cdata',[' b ']],
['tablecell_close',[]],
['tableheader_open',[1,'left',2]],
['cdata',[' e ']],
['tableheader_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[' ']],
['tablecell_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,'left',1]],
['cdata',['c ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[' ']],
['tablecell_close',[]],
['tablerow_close',[]],
['table_close',[69]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
function testRowSpanTableHead() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
^ X1 ^ Y1 ^ Z1 ^
^ X2 ^ ::: ^ Z2 ^
| A3 | B3 | C3 |
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[3, 3, 6]],
['tablethead_open',[]],
['tablerow_open',[]],
['tableheader_open',[1,null,1]],
['cdata',[' X1 ']],
['tableheader_close',[]],
['tableheader_open',[1,null,2]],
['cdata',[' Y1 ']],
['tableheader_close',[]],
['tableheader_open',[1,null,1]],
['cdata',[' Z1 ']],
['tableheader_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tableheader_open',[1,null,1]],
['cdata',[' X2 ']],
['tableheader_close',[]],
['tableheader_open',[1,null,1]],
['cdata',[' Z2 ']],
['tableheader_close',[]],
['tablerow_close',[]],
['tablethead_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,null,1]],
['cdata',[' A3 ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[' B3 ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[' C3 ']],
['tablecell_close',[]],
['tablerow_close',[]],
['table_close',[57]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
function testRowSpanAcrossTableHeadBoundary() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
^ X1 ^ Y1 ^ Z1 ^
^ X2 ^ ::: ^ Z2 ^
| A3 | ::: | C3 |
| A4 | ::: | C4 |
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[3, 4, 6]],
['tablethead_open',[]],
['tablerow_open',[]],
['tableheader_open',[1,null,1]],
['cdata',[' X1 ']],
['tableheader_close',[]],
['tableheader_open',[1,null,2]],
['cdata',[' Y1 ']],
['tableheader_close',[]],
['tableheader_open',[1,null,1]],
['cdata',[' Z1 ']],
['tableheader_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tableheader_open',[1,null,1]],
['cdata',[' X2 ']],
['tableheader_close',[]],
['tableheader_open',[1,null,1]],
['cdata',[' Z2 ']],
['tableheader_close',[]],
['tablerow_close',[]],
['tablethead_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,null,1]],
['cdata',[' A3 ']],
['tablecell_close',[]],
['tablecell_open',[1,null,2]],
['cdata',['']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[' C3 ']],
['tablecell_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,null,1]],
['cdata',[' A4 ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[' C4 ']],
['tablecell_close',[]],
['tablerow_close',[]],
['table_close',[76]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
function testCellAlignmentFormatting() {
$this->P->addMode('table',new Table());
$this->P->addMode('strong',new Strong());
$this->P->parse('
abc
| **X** | Y ^ Z |
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[3, 1, 6]],
['tablerow_open',[]],
['tablecell_open',[1,'right',1]],
['cdata',[' ']],
['strong_open',[]],
['cdata',['X']],
['strong_close',[]],
['cdata',[' ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Y ']],
['tablecell_close',[]],
['tableheader_open',[1,'center',1]],
['cdata',[' Z ']],
['tableheader_close',[]],
['tablerow_close',[]],
['table_close',[27]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
function testTableEol() {
$this->P->addMode('table',new Table());
$this->P->addMode('eol',new Eol());
$this->P->parse('
abc
| Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 |
| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["abc"]],
['p_close',[]],
['table_open',[3, 2, 6]],
['tablerow_open',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 0 Col 1 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 0 Col 2 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 0 Col 3 ']],
['tablecell_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 1 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 2 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 3 ']],
['tablecell_close',[]],
['tablerow_close',[]],
['table_close',[121]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
// This is really a failing test - formatting able to spread across cols
// Problem is fixing it would mean a major rewrite of table handling
function testTableStrong() {
$this->P->addMode('table',new Table());
$this->P->addMode('strong',new Strong());
$this->P->parse('
abc
| **Row 0 Col 1** | **Row 0 Col 2 | Row 0 Col 3** |
| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[3, 2, 6]],
['tablerow_open',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' ']],
['strong_open',[]],
['cdata',['Row 0 Col 1']],
['strong_close',[]],
['cdata',[' ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' ']],
['strong_open',[]],
['cdata',['Row 0 Col 2 | Row 0 Col 3']],
['strong_close',[]],
['cdata',[' ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',['']],
['tablecell_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 1 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 2 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 3 ']],
['tablecell_close',[]],
['tablerow_close',[]],
['table_close',[129]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
// This is really a failing test - unformatted able to spread across cols
// Problem is fixing it would mean a major rewrite of table handling
function testTableUnformatted() {
$this->P->addMode('table',new Table());
$this->P->addMode('unformatted',new Unformatted());
$this->P->parse('
abc
| Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 |
| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[3, 2, 6]],
['tablerow_open',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' ']],
['unformatted',['Row 0 Col 1']],
['cdata',[' ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' ']],
['unformatted',['Row 0 Col 2 | Row 0 Col 3']],
['cdata',[' ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',['']],
['tablecell_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 1 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 2 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 3 ']],
['tablecell_close',[]],
['tablerow_close',[]],
['table_close',[155]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
function testTableLinebreak() {
$this->P->addMode('table',new Table());
$this->P->addMode('linebreak',new Linebreak());
$this->P->parse('
abc
| Row 0\\\\ Col 1 | Row 0 Col 2 | Row 0 Col 3 |
| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[3, 2, 6]],
['tablerow_open',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 0']],
['linebreak',[]],
['cdata',['Col 1 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 0 Col 2 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 0 Col 3 ']],
['tablecell_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 1 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 2 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 3 ']],
['tablecell_close',[]],
['tablerow_close',[]],
['table_close',[123]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
// This is really a failing test - footnote able to spread across cols
// Problem is fixing it would mean a major rewrite of table handling
function testTableFootnote() {
$this->P->addMode('table',new Table());
$this->P->addMode('footnote',new Footnote());
$this->P->parse('
abc
| ((Row 0 Col 1)) | ((Row 0 Col 2 | Row 0 Col 3)) |
| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |
def');
$calls = [
['document_start',[]],
['p_open',[]],
['cdata',["\n\nabc"]],
['p_close',[]],
['table_open',[3, 2, 6]],
['tablerow_open',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' ']],
['nest', [ [
['footnote_open',[]],
['cdata',['Row 0 Col 1']],
['footnote_close',[]],
]]],
['cdata',[' ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' ']],
['nest', [ [
['footnote_open',[]],
['cdata',['Row 0 Col 2 | Row 0 Col 3']],
['footnote_close',[]],
]]],
['cdata',[' ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',['']],
['tablecell_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 1 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 2 ']],
['tablecell_close',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 1 Col 3 ']],
['tablecell_close',[]],
['tablerow_close',[]],
['table_close',[129]],
['p_open',[]],
['cdata',['def']],
['p_close',[]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
function testTable_FS1833() {
$syntax = " \n| Row 0 Col 1 |\n";
$this->P->addMode('table',new Table());
$this->P->parse($syntax);
$calls = [
['document_start',[]],
['table_open',[1, 1, 2]],
['tablerow_open',[]],
['tablecell_open',[1,'left',1]],
['cdata',[' Row 0 Col 1 ']],
['tablecell_close',[]],
['tablerow_close',[]],
['table_close',[strlen($syntax)]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
/**
* missing cells in one row get filled up...
*/
function testTable_CellFix() {
$syntax = "\n| r1c1 | r1c2 | r1c3 |\n| r2c1 |\n";
$this->P->addMode('table',new Table());
$this->P->parse($syntax);
$calls = [
['document_start',[]],
['table_open',[3, 2, 2]],
['tablerow_open',[]],
['tablecell_open',[1,null,1]],
['cdata',[' r1c1 ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[' r1c2 ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[' r1c3 ']],
['tablecell_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,null,1]],
['cdata',[' r2c1 ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',['']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',['']],
['tablecell_close',[]],
['tablerow_close',[]],
['table_close',[strlen($syntax)]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
/**
* ... even if the longer row comes later
*/
function testTable_CellFix2() {
$syntax = "\n| r1c1 |\n| r2c1 | r2c2 | r2c3 |\n";
$this->P->addMode('table',new Table());
$this->P->parse($syntax);
$calls = [
['document_start',[]],
['table_open',[3, 2, 2]],
['tablerow_open',[]],
['tablecell_open',[1,null,1]],
['cdata',[' r1c1 ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',['']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',['']],
['tablecell_close',[]],
['tablerow_close',[]],
['tablerow_open',[]],
['tablecell_open',[1,null,1]],
['cdata',[' r2c1 ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[' r2c2 ']],
['tablecell_close',[]],
['tablecell_open',[1,null,1]],
['cdata',[' r2c3 ']],
['tablecell_close',[]],
['tablerow_close',[]],
['table_close',[strlen($syntax)]],
['document_end',[]],
];
$this->assertCalls($calls, $this->H->calls);
}
}