Modul:Automarkup
Modul:Automarkup este un modul Lua care generează automat o pereche „cod wiki – rezultat randat”. Este folosit de {{Automarkup}} pentru a documenta sintaxa wiki fără a fi nevoie să scrii exemplul de două ori: o dată ca text și o dată ca rezultat.
Modulul este un înveliș (wrapper) în jurul lui {{Markup}}: preia parametrii cu care a fost apelat formatul, calculează pentru fiecare parametru pozițional atât forma brută, cât și forma expandată, apoi transmite totul către {{Markup}}, care afișează cele două variante.
Utilizare
[modificare sursă]Modulul nu se apelează de obicei direct din pagini, ci prin intermediul unui format care conține:
{{#invoke:Automarkup|main}}
Parametrii se citesc din apelul formatului-părinte (cel care conține #invoke), nu din apelul #invoke însuși.
Funcții exportate
[modificare sursă]| Funcție | Descriere |
|---|---|
main |
Funcția principală. Citește argumentele șablonului-părinte, le transformă și apelează {{Markup}}. |
Parametri
[modificare sursă]Modulul tratează diferit parametrii poziționali (numerotați) de cei cu nume.
Parametri poziționali
[modificare sursă]Fiecare parametru pozițional n este transformat în două argumente pentru {{Markup}}:
| Parametru primit | Argument transmis către Markup | Conținut |
|---|---|---|
1 |
1 |
Textul brut, exact cum a fost scris (afișat drept cod) |
1 |
2 |
Același text, procesat cu frame:preprocess (expandat: formate, funcții parser, cuvinte magice etc.)
|
2 |
3 și 4 |
Analog, pentru al doilea parametru |
n |
2n−1 și 2n |
Formula generală |
Cu alte cuvinte, parametrul n devine perechea (2n−1, 2n) = (text brut, text expandat). Rezultatul este că {{Markup}} primește exact formatul de perechi „cod / rezultat” pe care îl așteaptă.
Parametri cu nume
[modificare sursă]Parametrii cu nume (de exemplu title= sau class=) sunt transmiși neschimbați către {{Markup}}. Semnificația lor este cea definită de {{Markup}}.
Exemplu
[modificare sursă]Un apel de forma:
{{Automarkup|'''text îngroșat'''|''text înclinat''}}
este echivalent cu:
{{Markup
|'''text îngroșat'''
|'''text îngroșat'''
|''text înclinat''
|''text înclinat''
}}
unde al doilea argument din fiecare pereche este versiunea expandată de frame:preprocess.
Observații și limitări
[modificare sursă]- Un parametru pozițional care conține semnul
=sau bara verticală|trebuie scris cu număr explicit (1=) sau cu{{f}}/{{!}}, conform regulilor obișnuite ale formatelor. - Expandarea se face în contextul paginii curente, deci variabile precum
{{PAGENAME}}vor afișa pagina în care este folosit formatul. - Modulul nu validează parametrii și nu generează mesaje de eroare proprii; erorile provin din {{Markup}}.
Vezi și
[modificare sursă]- {{Markup}} – formatul care afișează efectiv perechea cod/rezultat
- {{Automarkup}} – formatul care apelează acest modul
local p = {}
function p.main(frame)
local args = frame:getParent().args
local templateArgs = { }
for key, value in pairs(args) do
if type(key) == "number" then
templateArgs[2 * key - 1] = value
templateArgs[2 * key] = frame:preprocess(value)
else
templateArgs[key] = value
end
end
return frame:expandTemplate{ title = "Markup", args = templateArgs }
end
return p