[pmwiki-users] ExtendedMarkup WikiWord Error
Patrick R. Michaud
pmichaud at pobox.com
Wed Mar 30 15:43:26 CST 2005
On Thu, Mar 31, 2005 at 09:28:22AM +1200, John Rankin wrote:
>
> This is a known limitation in how ExtendMarkup handles smart quotes.
>
> In short, if an html tag < ... > breaks across more than 2 lines,
> the piece of code that ignores quotes inside < ... > breaks.
Oh! Did you try adding the /s option to the relevant patterns?
I'm guessing that the code to handle this is given in:
## automatic smart quotes
Markup('<n>','<squo',"/\s?\n\s*([^<]+?>)/",' $1');
Markup('squo','>style',"/(<.*?>['\"]*)|(.?['\"]+)/e",
"BypassHTML(PSS('$1'),PSS('$2'))");
Markup('sq|','>inline',"/(\\[\\[[^|\\]]+\\|)(.*?)(\\]\\])/e",
"'$1'.SmartenLinkText(PSS('$2')).'$3'");
Markup('sq->','>inline',"/(\\[\\[)([^\\]]+?)(-+>.*?\\]\\])/e",
"'$1'.SmartenLinkText(PSS('$2')).'$3'");
By default the '.' in a pattern doesn't match newlines, but adding
the 's' option, as in
## automatic smart quotes
Markup('<n>','<squo',"/\s?\n\s*([^<]+?>)/",' $1');
Markup('squo','>style',"/(<.*?>['\"]*)|(.?['\"]+)/es",
"BypassHTML(PSS('$1'),PSS('$2'))");
Markup('sq|','>inline',"/(\\[\\[[^|\\]]+\\|)(.*?)(\\]\\])/es",
"'$1'.SmartenLinkText(PSS('$2')).'$3'");
Markup('sq->','>inline',"/(\\[\\[)([^\\]]+?)(-+>.*?\\]\\])/es",
"'$1'.SmartenLinkText(PSS('$2')).'$3'");
will tell those .*?'s that they can match newlines as well. There
may be other reasons why it's not working (or won't work), but this
is my first guess/thought about it.
Or, one could conceivably convert any newlines found inside
< ... > into spaces before doing the rest of the pattern matches. But
the /s solution above is probably vastly superior and faster.
Pm
More information about the pmwiki-users
mailing list