Hjelp:Ugyldige filalternativ

Fra Wikipedia, den frie encyklopedi

Nen vanlige ugyldige filalternativ, og hvordan en retter problemene. Se også mw:Special:MyLanguage/Help:Extension:Linter/bogus-image-options for mer generelle tips.

Feil som følge av tomme mal-parametre[rediger | rediger kilde]

Vi har i flere år lagd maler hvor bilder i maler settes sammen som (Merk at «thumb» ofte er «frameless» i maler.)

[[Fil:{{{bilde}}}|{{{billedstørrelse|}}}|thumb|{{{tekst|}}}]]

Dette ser nokså tilforlatelig ut. En vil få riktig bilde, og teksten vil bli riktig plassert. Dette gir imidlertid feil. Feilene blir ikke synlig på siden, men vil medføre at siden listes på Spesial:LintErrors/bogus-image-options. Hvis feilene ikke rettes vil de få mer alvorlige følger siden.

I dette eksempelet er det to feil. Det første gjelder {{{billedstørrelse|}}}. Anta at noen bruker malen slik som veldig mange gjør, ved å sette inn en lang liste av alle parametrene. Da står det gjerne billedstørrelse= noe sted, og denne er gjerne tom. Anta også at tekst=test. Da vil parseren ende opp med noe ala

[[Fil:CouldNotCareLess.svg||thumb|test]]

Det tomme argumentet mellom «CouldNotCareLess.svg» og «thumb» vil ikke bli gjenkjent, og det er ikke annoteringen (friteksten) for denne slot'en er allerede fylt, så det tomme argumentet vil bli flagget som en feil.

Anta at malen isteden ser ut som

[[Fil:{{{bilde}}}|{{{billedstørrelse|}}}|thumb]]

og at malen igjen kalles med billedstørrelse=. Da vil siden ikke listes med feil, for slot'en for fritekst er ledig. Om du sjekker så vil parseren forsøke å lage en tom annotering med den tomme teksten som skulle vært billedstørrelse. Dette er jo også en feil, selv om det ikke er synlig.

Det som utløser feilene er at det lages tomme argument til fil-lenka. Vi kan fjerne disse på flere vis, blant annet å bruke litt kreative defaultargument. En bedre løsning er å gjøre noe som tidligere ikke fungerte (!) og som gir relativt enkel og forståelig kode

[[Fil:{{{bilde}}}{{#if:{{{billedstørrelse|}}}|{{!}}{{{billedstørrelse}}}}}|thumb{{#if:{{{text|}}}|{{!}}{{{text}}}}}]]

Trikset er å bruke en if-test og i then-clause bruke {{!}} foran det reelle argumentet. Dette ser ut som en mal, men er en parser funksjon. Det betyr i praksis at parseren rekker å sjekke testene og skrive om argumentene før fil-lenka evalueres. Tidligere fungerte ikke dette.

Med slike endringer vil en unngå feilmeldinger i Spesial:LintErrors/bogus-image-options, og malene vil fungere korrekt i fremtiden.