summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--_test/cases/inc/parser/parser_table.test.php141
-rw-r--r--inc/parser/handler.php27
-rw-r--r--inc/parser/parser.php3
3 files changed, 79 insertions, 92 deletions
diff --git a/_test/cases/inc/parser/parser_table.test.php b/_test/cases/inc/parser/parser_table.test.php
index 47f790c2d..e9ac011ee 100644
--- a/_test/cases/inc/parser/parser_table.test.php
+++ b/_test/cases/inc/parser/parser_table.test.php
@@ -22,30 +22,24 @@ def');
array('table_open',array(3,2)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 0 Col 1')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 0 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 0 Col 2')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 0 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 0 Col 3')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 0 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 1')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 2')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 3')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
@@ -68,30 +62,24 @@ def');
array('table_open',array(3,2)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 0 Col 1')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 0 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 0 Col 2')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 0 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 0 Col 3')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 0 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 1')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 2')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 3')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
@@ -178,17 +166,13 @@ def');
array('table_open',array(3,1)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'right')),
- array('cdata',array(' ')),
- array('cdata',array('X ')),
+ array('cdata',array(' X ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Y')),
- array('cdata',array(' ')),
+ array('cdata',array(' Y ')),
array('tablecell_close',array()),
array('tableheader_open',array(1,'center')),
- array('cdata',array(' ')),
- array('cdata',array('Z')),
- array('cdata',array(' ')),
+ array('cdata',array(' Z ')),
array('tableheader_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
@@ -218,17 +202,19 @@ def');
array('table_open',array(3,3)),
array('tablerow_open',array()),
array('tablecell_open',array(2,'right')),
- array('cdata',array(' ')),
- array('cdata',array('d ')),
+ array('cdata',array(' d ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,NULL)),
array('cdata',array(' e ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
- array('tablecell_open',array(3,NULL)),
+ array('tablecell_open',array(1,NULL)),
array('cdata',array(' f ')),
array('tablecell_close',array()),
+ array('tableheader_open',array(2,NULL)),
+ array('cdata',array(' ')),
+ array('tableheader_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablerow_close',array()),
@@ -238,7 +224,6 @@ def');
array('p_close',array()),
array('document_end',array()),
);
-
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
@@ -262,15 +247,13 @@ def');
array('strong_open',array()),
array('cdata',array('X')),
array('strong_close',array()),
+ array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Y')),
- array('cdata',array(' ')),
+ array('cdata',array(' Y ')),
array('tablecell_close',array()),
array('tableheader_open',array(1,'center')),
- array('cdata',array(' ')),
- array('cdata',array('Z')),
- array('cdata',array(' ')),
+ array('cdata',array(' Z ')),
array('tableheader_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
@@ -279,7 +262,7 @@ def');
array('p_close',array()),
array('document_end',array()),
);
-
+
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
@@ -295,44 +278,36 @@ def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
- array('p_close',array()),
- array('p_open',array()),
+ array('cdata',array(' ')),
array('cdata',array("abc")),
array('p_close',array()),
array('table_open',array(3,2)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 0 Col 1')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 0 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 0 Col 2')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 0 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 0 Col 3')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 0 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 1')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 2')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 3')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
array('p_open',array()),
array('cdata',array('def')),
- array('p_close',array()),
- array('p_open',array()),
+ array('cdata',array(' ')),
array('p_close',array()),
array('document_end',array()),
);
@@ -357,12 +332,14 @@ def');
array('table_open',array(3,2)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
+ array('cdata',array(' ')),
array('strong_open',array()),
array('cdata',array('Row 0 Col 1')),
array('strong_close',array()),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
+ array('cdata',array(' ')),
array('strong_open',array()),
array('cdata',array('Row 0 Col 2 | Row 0 Col 3')),
array('strong_close',array()),
@@ -371,16 +348,13 @@ def');
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 1')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 2')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 3')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
@@ -410,26 +384,25 @@ def');
array('table_open',array(3,2)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
+ array('cdata',array(' ')),
array('unformatted',array('Row 0 Col 1')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
+ array('cdata',array(' ')),
array('unformatted',array('Row 0 Col 2 | Row 0 Col 3')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 1')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 2')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 3')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
@@ -459,30 +432,24 @@ def');
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 0')),
array('linebreak',array()),
- array('cdata',array('Col 1')),
- array('cdata',array(' ')),
+ array('cdata',array(' Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 0 Col 2')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 0 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 0 Col 3')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 0 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 1')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 2')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 3')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
@@ -491,6 +458,7 @@ def');
array('p_close',array()),
array('document_end',array()),
);
+
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
@@ -512,12 +480,14 @@ def');
array('table_open',array(3,2)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
+ array('cdata',array(' ')),
array('footnote_open',array()),
array('cdata',array('Row 0 Col 1')),
array('footnote_close',array()),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
+ array('cdata',array(' ')),
array('footnote_open',array()),
array('cdata',array('Row 0 Col 2 | Row 0 Col 3')),
array('footnote_close',array()),
@@ -526,16 +496,13 @@ def');
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 1')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 2')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
- array('cdata',array(' Row 1 Col 3')),
- array('cdata',array(' ')),
+ array('cdata',array(' Row 1 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
diff --git a/inc/parser/handler.php b/inc/parser/handler.php
index 805449ea5..61185b046 100644
--- a/inc/parser/handler.php
+++ b/inc/parser/handler.php
@@ -523,7 +523,11 @@ class Doku_Handler {
break;
case DOKU_LEXER_MATCHED:
- if ( preg_match('/.{2}/',$match) ) {
+ if ( $match == ' ' ){
+ $this->_addCall('cdata', array($match), $pos);
+ } else if ( preg_match('/\t+/',$match) ) {
+ $this->_addCall('table_align', array($match), $pos);
+ } else if ( preg_match('/ {2,}/',$match) ) {
$this->_addCall('table_align', array($match), $pos);
} else if ( $match == "\n|" ) {
$this->_addCall('table_row', array(), $pos);
@@ -1135,7 +1139,7 @@ class Doku_Handler_Table {
// Now convert the whitespace back to cdata
$this->tableCalls[$key][0] = 'cdata';
-
+
} else if ( $call[0] == 'colspan' ) {
$this->tableCalls[$key-1][1][0] = FALSE;
@@ -1158,11 +1162,26 @@ class Doku_Handler_Table {
$toDelete[] = $key+1;
}
}
-
+
+
+ // condense cdata
+ $cnt = count($this->tableCalls);
+ for( $key = 0; $key < $cnt; $key++){
+ if($this->tableCalls[$key][0] == 'cdata'){
+ $ckey = $key;
+ $key++;
+ while($this->tableCalls[$key][0] == 'cdata'){
+ $this->tableCalls[$ckey][1][0] .= $this->tableCalls[$key][1][0];
+ $toDelete[] = $key;
+ $key++;
+ }
+ continue;
+ }
+ }
+
foreach ( $toDelete as $delete ) {
unset($this->tableCalls[$delete]);
}
-
$this->tableCalls = array_values($this->tableCalls);
}
}
diff --git a/inc/parser/parser.php b/inc/parser/parser.php
index 9cc257c02..7a3342fbf 100644
--- a/inc/parser/parser.php
+++ b/inc/parser/parser.php
@@ -464,7 +464,8 @@ class Doku_Parser_Mode_table extends Doku_Parser_Mode {
function postConnect() {
$this->Lexer->addPattern('\n\^','table');
$this->Lexer->addPattern('\n\|','table');
- $this->Lexer->addPattern(' {2,}','table');
+ #$this->Lexer->addPattern(' {2,}','table');
+ $this->Lexer->addPattern('[\t ]+','table');
$this->Lexer->addPattern('\^','table');
$this->Lexer->addPattern('\|','table');
$this->Lexer->addExitPattern('\n','table');