William Allen Simpson wrote:
> {{{{{subst|}}}#if:{{{par1|}}}|[[Category:{{{par1}}}{{{{{subst|}}}#if:{{{key1|}}}{{{{{subst|}}}!}}{{{key1}}}}}]]
>  <!-- bpar1 -->
> }}{{{{{subst|}}}#if:{{{par2|}}}|[[Category:{{{par2}}}{{{{{subst|}}}#if:{{{key2|}}}{{{{{subst|}}}!}}{{{key2}}}}}]]
>  <!-- bpar2 -->
> }}{{{{{subst|}}}#if:{{{par3|}}}|[[Category:{{{par3}}}{{{{{subst|}}}#if:{{{key3|}}}{{{{{subst|}}}!}}{{{key3}}}}}]]
>  <!-- bpar3 -->
> }}

Nothing like a wikitext puzzle to start off your day.

> Did the evaluation order change, so the inner {{subst:!}} happens first
> instead of second, and loses the C parameter (interpreting it as "else")?

{{subst:!}} no longer works as a separator between parser function
parameters, it just works as a literal character. Welcome to MediaWiki
1.12. See:

http://meta.wikimedia.org/wiki/MNPP

For those playing at home, the simplified test case is:

{{#if: a {{!}} b }}

The condition "a | b" is true, but no return value is specified, so
the default return is used, i.e. an empty string

> And the leading and trailing linebreaks are slurped up and ignored?

Whitespace at the beginning and end of a parameter to #if, #ifeq,
#switch, etc. is stripped. This was always the case in HTML mode, at
least since MW 1.7. It's possible MW 1.12 changed it for subst mode.

> Any known work around? (I tried searching meta and elsewhere, but no joy.)

Use "|" instead of "{{{{{subst|}}}!}}". Not only will it work, it'll
be easier to read.

The workarounds that come to mind for the line break issue are fairly
obscure and complex. If I were you I'd just put the categories on the
same line and be done with it.

-- Tim Starling


_______________________________________________
Wikitech-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to