From 95c19ce72a4d462308773332faf20b9c3b12db8f Mon Sep 17 00:00:00 2001 From: Chris Smith Date: Sun, 4 Oct 2009 21:03:59 +0200 Subject: FS#1652, #FS1699 Ignore-this: b30b4a3061ad7a485012f6fd55cdfc78 This patch fixes problems with blank lines which contain whitespace before EOL. It also fixes an issue with preformatted syntax mode not triggering following p_open instructions under some circumstances. Note: The fix can result in swallowing of non-eol white space that precedes the EOL. This can happen when there is no non-whitespace CDATA between the end of the previous syntax mode and the EOL character. darcs-hash:20091004190359-f07c6-36bb418cb9be8bbaff741b4cbe135c442d0bde81.gz --- inc/parser/handler.php | 3 +++ inc/parser/parser.php | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'inc/parser') diff --git a/inc/parser/handler.php b/inc/parser/handler.php index 58b68bc42..c92dbe3d5 100644 --- a/inc/parser/handler.php +++ b/inc/parser/handler.php @@ -1050,6 +1050,9 @@ class Doku_Handler_Preformatted { if (trim($this->text)) { $this->CallWriter->writeCall(array('preformatted',array($this->text),$this->pos)); } + // see FS#1699 & FS#1652, add 'eol' instructions to ensure proper triggering of following p_open + $this->CallWriter->writeCall(array('eol',array(),$this->pos)); + $this->CallWriter->writeCall(array('eol',array(),$this->pos)); break; } } diff --git a/inc/parser/parser.php b/inc/parser/parser.php index ba62af21e..77909a436 100644 --- a/inc/parser/parser.php +++ b/inc/parser/parser.php @@ -276,7 +276,8 @@ class Doku_Parser_Mode_eol extends Doku_Parser_Mode { if ( in_array($mode, $badModes) ) { return; } - $this->Lexer->addSpecialPattern('\n',$mode,'eol'); + // see FS#1652, pattern extended to swallow preceding whitespace to avoid issues with lines that only contain whitespace + $this->Lexer->addSpecialPattern('(?:^[ \t]*)?\n',$mode,'eol'); } function getSort() { -- cgit v1.2.3