diff options
-rw-r--r-- | _test/cases/inc/parser/parser_headers.test.php | 52 | ||||
-rw-r--r-- | _test/cases/inc/parser/parser_i18n.test.php | 2 | ||||
-rw-r--r-- | inc/parser/handler.php | 8 |
3 files changed, 61 insertions, 1 deletions
diff --git a/_test/cases/inc/parser/parser_headers.test.php b/_test/cases/inc/parser/parser_headers.test.php index 264f35bcc..1ec6dd50b 100644 --- a/_test/cases/inc/parser/parser_headers.test.php +++ b/_test/cases/inc/parser/parser_headers.test.php @@ -15,12 +15,14 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser { array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), + array('section_edit',array(-1,5,1,'')), array('header',array('Header',1,6)), array('section_open',array(1)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), + array('section_edit',array (6,0,1,'Header')), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); @@ -34,12 +36,14 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser { array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), + array('section_edit',array(-1,5,1,'')), array('header',array('Header',2,6)), array('section_open',array(2)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), + array('section_edit',array(6,0,2,'Header')), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); @@ -53,12 +57,14 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser { array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), + array('section_edit',array(-1,5,1,'')), array('header',array('Header',3,6)), array('section_open',array(3)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), + array('section_edit',array(6,0,3,'Header')), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); @@ -72,12 +78,14 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser { array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), + array('section_edit',array(-1,5,1,'')), array('header',array('Header',4,6)), array('section_open',array(4)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), + array('section_edit',array(6,0,4,'Header')), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); @@ -91,12 +99,14 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser { array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), + array('section_edit',array(-1,5,1,'')), array('header',array('Header',5,6)), array('section_open',array(5)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), + array('section_edit',array(6,0,5,'Header')), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); @@ -110,12 +120,14 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser { array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), + array('section_edit',array(-1,5,1,'')), array('header',array('Header',2,6)), array('section_open',array(2)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), + array('section_edit',array(6,0,2,'Header')), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); @@ -129,12 +141,14 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser { array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), + array('section_edit',array(-1,5,1,'')), array('header',array('Header',2,6)), array('section_open',array(2)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), + array('section_edit',array(6,0,2,'Header')), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); @@ -148,12 +162,14 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser { array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), + array('section_edit',array(-1,5,1,'')), array('header',array('Header',1,6)), array('section_open',array(1)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), + array('section_edit',array(6,0,1,'Header')), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); @@ -181,12 +197,14 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser { array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), + array('section_edit',array(-1,5,1,'')), array('header',array('== Header ==',1,6)), array('section_open',array(1)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), + array('section_edit',array(6,0,1,'== Header ==')), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); @@ -200,12 +218,14 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser { array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), + array('section_edit',array(-1,5,1,'')), array('header',array('====== Header ======',5,6)), array('section_open',array(5)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), + array('section_edit',array(6,0,5,'====== Header ======')), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); @@ -219,12 +239,14 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser { array('p_open',array()), array('cdata',array("\nabc \n== ====== Header\n")), array('p_close',array()), + array('section_edit',array(-1,22,1,'')), array('header',array('',1,23)), array('section_open',array(1)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), + array('section_edit',array(23,0,1,'')), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); @@ -246,6 +268,7 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser { array('cdata',array('abc ')), array('cdata',array(' ')), array('p_close',array()), + array('section_edit',array(-1,5,1,'')), array('header',array('Header',1, 6)), array('section_open',array(1)), array('p_open',array()), @@ -253,11 +276,40 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser { array('cdata',array(' ')), array('p_close',array()), array('section_close',array()), + array('section_edit',array(6,0,1,'Header')), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } + + function testHeaderMulti2() { + $this->P->addMode('header',new Doku_Parser_Mode_Header()); + $this->P->parse("abc \n ====== Header ====== \n def abc \n ===== Header2 ===== \n def"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc \n")), + array('p_close',array()), + array('section_edit',array(-1,5,1,'')), + array('header',array('Header',1,6)), + array('section_open',array(1)), + array('p_open',array()), + array('cdata',array("\n def abc \n")), + array('p_close',array()), + array('section_close',array()), + array('section_edit',array(6,38,1,'Header')), + array('header',array('Header2',2,39)), + array('section_open',array(2)), + array('p_open',array()), + array('cdata',array("\n def\n")), + array('p_close',array()), + array('section_close',array()), + array('section_edit',array(39,0,2,'Header2')), + array('document_end',array()) + ); + $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); + } } diff --git a/_test/cases/inc/parser/parser_i18n.test.php b/_test/cases/inc/parser/parser_i18n.test.php index 2e77777b8..469141ef1 100644 --- a/_test/cases/inc/parser/parser_i18n.test.php +++ b/_test/cases/inc/parser/parser_i18n.test.php @@ -62,12 +62,14 @@ class TestOfDoku_Parser_i18n extends TestOfDoku_Parser { array('p_open',array()), array('cdata',array("\nFoo\n")), array('p_close',array()), + array('section_edit',array(-1,4,1,'')), array('header',array('Iñtërnâtiônàlizætiøn',3,5)), array('section_open',array(3)), array('p_open',array()), array('cdata',array("\n Bar\n")), array('p_close',array()), array('section_close',array()), + array('section_edit',array(5,0,3,'Iñtërnâtiônàlizætiøn')), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); diff --git a/inc/parser/handler.php b/inc/parser/handler.php index 58eed0c34..c397e832c 100644 --- a/inc/parser/handler.php +++ b/inc/parser/handler.php @@ -1330,7 +1330,13 @@ class Doku_Handler_Block { //remove the whole paragraph array_splice($this->calls,$i); }else{ - $this->calls[] = array('p_close',array(), $pos); + if ($this->calls[count($this->calls)-1][0] == 'section_edit') { + $tmp = array_pop($this->calls); + $this->calls[] = array('p_close',array(), $pos); + $this->calls[] = $tmp; + } else { + $this->calls[] = array('p_close',array(), $pos); + } } $this->inParagraph = FALSE; |