From: moodler Date: Tue, 27 May 2003 14:25:15 +0000 (+0000) Subject: Latest changes from Howard Miller X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=16cba4cf88409487fadf4f348150cfab24f5cc56;p=moodle.git Latest changes from Howard Miller --- diff --git a/lib/wiki.php b/lib/wiki.php index e71478b48c..218b8ad822 100644 --- a/lib/wiki.php +++ b/lib/wiki.php @@ -51,42 +51,35 @@ class Wiki { var $block_state; var $list_state; var $list_depth; + var $list_backtrack; var $output; // output buffer function close_block( $state ) { // provide appropriate closure for block according to state // if in list close this first - $ltag = ""; - switch ($this->list_state) { - case LIST_NONE: - break; - case LIST_UNORDERED: - $ltag = "\n"; - break; - case LIST_ORDERED: - $ltag = "\n"; - break; - case LIST_DEFINITION: - $ltag = "\n"; - break; - } - $this->list_state = LIST_NONE; + $lclose = ""; + if ($this->list_state != LIST_NONE) { + $lclose = $this->do_list( " ",true ); + } + $sclose = ""; switch ($state) { case STATE_PARAGRAPH: - return "$ltag

\n"; + $sclose = "

\n"; break; case STATE_BLOCKQUOTE: - return "$ltag\n"; + $sclose = "\n"; break; case STATE_PREFORM: - return "$ltag\n"; + $sclose = "\n"; break; case STATE_NOTIKI: - return "$ltag\n"; + $sclose = "\n"; break; } + + return $lclose . $sclose; } @@ -117,53 +110,79 @@ class Wiki { $replace = '<'.$tag.'>\\1'; return eregi_replace( $regex, $replace, $line ); } - - function do_list( $line ) { + + function do_list( $line, $blank=false ) { // handle line with list character on it + // if blank line implies drop to level 0 - // get magic character and then delete it from the line - $listchar = $line{0}; - $line = eregi_replace( "^[*#;:] ", "", $line ); + // get magic character and then delete it from the line if not blank + if ($blank) { + $listchar=""; + $count = 0; + } + else { + $listchar = $line{0}; + $count = strspn( $line, $listchar ); + $line = eregi_replace( "^[".$listchar."]+ ", "", $line ); + } - // if not in "list mode" then we need to drop the appropriate start tag - $tag = ""; - if ($this->list_state == LIST_NONE) { - switch ($listchar) { - case '*': - $tag = "