diff --git a/_test/cases/inc/parser/parser_headers.test.php b/_test/cases/inc/parser/parser_headers.test.php index 1ec6dd50b74e394e87ea5b7c7c010037947fee90..c32c14cf2179c3227a0a12f4d60face6065aacf8 100644 --- a/_test/cases/inc/parser/parser_headers.test.php +++ b/_test/cases/inc/parser/parser_headers.test.php @@ -78,14 +78,12 @@ 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); @@ -99,14 +97,12 @@ 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); @@ -218,14 +214,12 @@ 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); diff --git a/inc/parser/handler.php b/inc/parser/handler.php index a0adb24d5e6bcb3de2039f63514ffcd746374658..519336caab84264f5f83f619f3cb366c3bbe4b0c 100644 --- a/inc/parser/handler.php +++ b/inc/parser/handler.php @@ -34,8 +34,10 @@ class Doku_Handler { if ( $this->status['section'] ) { $last_call = end($this->calls); array_push($this->calls,array('section_close',array(), $last_call[2])); - array_push($this->calls,array('section_edit',array($this->status['section_edit_start'], 0, - $this->status['section_edit_level'], $this->status['section_edit_title']), $last_call[2])); + if ($this->status['section_edit_start']>1) { + // ignore last edit section if there is only one header + array_push($this->calls,array('section_edit',array($this->status['section_edit_start'], 0, $this->status['section_edit_level'], $this->status['section_edit_title']), $last_call[2])); + } } if ( $this->rewriteBlocks ) { @@ -88,6 +90,8 @@ class Doku_Handler { } function header($match, $state, $pos) { + global $conf; + // get level and title $title = trim($match); $level = 7 - strspn($title,'='); @@ -97,10 +101,12 @@ class Doku_Handler { if ($this->status['section']) $this->_addCall('section_close',array(),$pos); - $this->_addCall('section_edit',array($this->status['section_edit_start'], $pos-1, $this->status['section_edit_level'], $this->status['section_edit_title']), $pos); - $this->status['section_edit_start'] = $pos; - $this->status['section_edit_level'] = $level; - $this->status['section_edit_title'] = $title; + if ($level<=$conf['maxseclevel']) { + $this->_addCall('section_edit',array($this->status['section_edit_start'], $pos-1, $this->status['section_edit_level'], $this->status['section_edit_title']), $pos); + $this->status['section_edit_start'] = $pos; + $this->status['section_edit_level'] = $level; + $this->status['section_edit_title'] = $title; + } $this->_addCall('header',array($title,$level,$pos), $pos);