You seem confused. You seem to think that I care about the proper way to
program using templates and parser functions. That's not true, they are an
ugly hack and I recognize that. If have absolutely no desire to learn how to
use something so hideously inefficient in an efficient manner.
On Sat, Jun 27, 2009 at 4:43 PM, Platonides <Platonides(a)gmail.com> wrote:
Brian wrote:
They want the functionality and they are willing
to satisfy usability and
quality of implementation in order to get it, plain and simple.
ParserFunctions combined with StringFunctions is flat out unreadable. We
should not facilitate the writing of unreadable code.
As an example, yesterday I wrote some code that basically says, "check
the
doi and http template parameters and check to
make sure they begin with
http, and if not add it." In any reasonable sort of language that lends
itself to a reasonable sort of implementation. But not with Parser and
String Functions.
#[[{{{1}}}]].
{{#if:{{{4}}}|[|{{#if:{{{5}}}|[}}}}{{#if:{{#pos:{{#if:{{{4}}}|{{{4}}}|{{#if:{{{5}}}|{{{5}}}}}}}|http|}}|{{#if:{{{4}}}|{{{4}}}|{{#if:{{{5}}}|{{{5}}}}}}}|{{#if:{{{4}}}|
}}
{{#if:{{{2}}}|
{{{2}}}}}{{#if:{{{4}}}|]|{{#if:{{{5}}}|]}}}} {{#ifexist:
File:{{{1}}}.pdf |[{{filepath:{{{1}}}.pdf}} (PDF)]|}} {{#if:{{{3}}}|
''{{{3}}}.''}}
There is some extra stuff in there, but you get my point. Just because a
few
people really, really want extra functionality at
any cost doesn't mean
much.
I have seen this before.
People use #if for everything even when there is a better way.
Look at what you're doing:
{{#if:{{{4}}}|{{{4}}}|{{#if:{{{5}}}|{{{5}}}}}}}
{{#if:{{{5}}}|{{{5}}} }}}} mean "show parameter 5 if it is set", or
"show parameter 5 if it is not blank".
In either case, {{{5|}}} would do the job.
The parent #if is simlar parameter 4 if set, else parameter 5.
{{{4| {{{5|}}} }}} would do the job.
Template default parameters were here much before ParserFunctions.
But people prefer using ugly #ifs, making syntax more unreadable (and
increasing preprocessor limits).
Another common abuse is to do:
{{#if: {{{Foo}}}|
<tr><td>Foo: </td><td>{{{Foo}}} </td></tr>
}}
I'd like to have a feature in the parser to mark a section to be skipped
if the inner parameter is not set, without having to use #ifs everywhere.
_______________________________________________
Wikitech-l mailing list
Wikitech-l(a)lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l