summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Smith <chris@jalakai.co.uk>2013-12-01 17:57:03 +0000
committerChristopher Smith <chris@jalakai.co.uk>2013-12-01 17:57:03 +0000
commit5a41afe6e3b958291893a0a10105cd41971fb141 (patch)
tree734b94bd2570187c46c5159f3bf2c9cc598a2855
parent89c9e0571b68a2608fd8426a34204e42fc77e6b3 (diff)
downloadrpg-5a41afe6e3b958291893a0a10105cd41971fb141.tar.gz
rpg-5a41afe6e3b958291893a0a10105cd41971fb141.tar.bz2
FS#1833 (b)
Prevent table entry syntax swallowing multiple preceeding blank lines (a) this shouldn't be necessary, blank lines are handled by paragraph processing (b) avoids issues with greedy table syntax competing with plugins
-rw-r--r--_test/tests/inc/parser/parser_table.test.php19
-rw-r--r--inc/parser/parser.php4
2 files changed, 21 insertions, 2 deletions
diff --git a/_test/tests/inc/parser/parser_table.test.php b/_test/tests/inc/parser/parser_table.test.php
index 542a307b8..bc19ebff9 100644
--- a/_test/tests/inc/parser/parser_table.test.php
+++ b/_test/tests/inc/parser/parser_table.test.php
@@ -626,5 +626,24 @@ def');
);
$this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
}
+
+ function testTable_FS1833() {
+ $syntax = " \n| Row 0 Col 1 |\n";
+ $this->P->addMode('table',new Doku_Parser_Mode_Table());
+ $this->P->parse($syntax);
+ $calls = array (
+ array('document_start',array()),
+ array('table_open',array(1, 1, 2)),
+ array('tablerow_open',array()),
+ array('tablecell_open',array(1,'left',1)),
+ array('cdata',array(' Row 0 Col 1 ')),
+ array('tablecell_close',array()),
+ array('tablerow_close',array()),
+ array('table_close',array(strlen($syntax))),
+ array('document_end',array()),
+ );
+ $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
+ }
+
}
diff --git a/inc/parser/parser.php b/inc/parser/parser.php
index e39a4daf5..1f14b98a3 100644
--- a/inc/parser/parser.php
+++ b/inc/parser/parser.php
@@ -454,8 +454,8 @@ class Doku_Parser_Mode_table extends Doku_Parser_Mode {
}
function connectTo($mode) {
- $this->Lexer->addEntryPattern('\s*\n\^',$mode,'table');
- $this->Lexer->addEntryPattern('\s*\n\|',$mode,'table');
+ $this->Lexer->addEntryPattern('[\t ]*\n\^',$mode,'table');
+ $this->Lexer->addEntryPattern('[\t ]*\n\|',$mode,'table');
}
function postConnect() {