Hi,
in response to Brion Vibber's reply to my posting to the wrong mailing list (apologies), I'm attaching here a patch of what I think fixes the bug that five apostrophes produce invalid HTML.
This takes care of quite a lot of weird cases and nestings. However, of course I'm aware that it is not perfect. I can construct cases where it will still fail, but those are cases that I don't think will ever actually come up in an encyclopedia article (or if they do, the author was feeling fancy and deserves to be shot ;-) ).
Here's the patch:
--- includes/OutputPage-old.php Sun Jun 29 04:06:12 2003 +++ includes/OutputPage.php Sat Jun 28 19:04:42 2003 @@ -675,6 +675,15 @@
/* private */ function doQuotes( $text ) { + /* prevent invalid HTML (<strong><em>...</strong></em>) */ + $text = preg_replace( "/'''''(.+)'''(.*)''/mU", "<em><strong>$1</strong>$2</em>", $text ); + $text = preg_replace( "/'''''(.+)''(.+)'''/mU", "<strong><em>$1</em>$2</strong>", $text ); + $text = preg_replace( "/'''(.*[^'])''([^'].*)'''''/mU", "<strong>$1<em>$2</em></strong>", $text ); + $text = preg_replace( "/''(.+)'''(.+)'''''/mU", "<em>$1<strong>$2</strong></em>", $text ); + + $text = preg_replace( "/(<strong>.*)'''(.+)'''(.*<\/strong>)/mU", "$1</strong>$2<strong>$3", $text ); + $text = preg_replace( "/(<em>.*)''(.+)''(.*<\/em>)/mU", "$1</em>$2<em>$3", $text ); + $text = preg_replace( "/'''(.+)'''/mU", "<strong>$1</strong>", $text ); $text = preg_replace( "/''(.+)''/mU", "<em>$1</em>", $text ); return $text;
How do you usually handle casual programmer contributions? Are they usually posted to this mailing list? Or do you have a BugZilla installation somewhere where I should upload this as a patch? Or is there an actual chance I might get write access to the repository?
Greetings, Timwi