diff options
author | Andreas Gohr <gohr@cosmocode.de> | 2005-11-03 17:26:30 +0100 |
---|---|---|
committer | Andreas Gohr <gohr@cosmocode.de> | 2005-11-03 17:26:30 +0100 |
commit | 9ab75d9e5b40b2a68d2904f6f190a30326f0378a (patch) | |
tree | 8f79976603ec8f5f359133b7ca5c0517ecf86b7c | |
parent | ba618d0d83f3a770e741e1f1950dea818de6ab46 (diff) | |
download | rpg-9ab75d9e5b40b2a68d2904f6f190a30326f0378a.tar.gz rpg-9ab75d9e5b40b2a68d2904f6f190a30326f0378a.tar.bz2 |
Table Syntax fixes #280 #591
darcs-hash:20051103162630-6e07b-21520008f556114f8273307e7d6d33795488b1d2.gz
-rw-r--r-- | _test/cases/inc/parser/parser_table.test.php | 141 | ||||
-rw-r--r-- | inc/parser/handler.php | 27 | ||||
-rw-r--r-- | inc/parser/parser.php | 3 |
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'); |