« Initiation au Lua avec Scribunto/L'objet Frame » : différence entre les versions

Contenu supprimé Contenu ajouté
rédaction
rédaction
Ligne 172 :
 
 
==== frame:callParserFunctionnewChild ====
 
{{...}}
Cette fonction permet d'utiliser des fonctions qui, normalement, attendent des arguments provenant d'une commande '''#invoke'''.
 
Dans l'exemple ci-dessous la fonction '''p.replique''' est rédigée comme si elle devait être utilisée grâce à l'appel '''<nowiki>{{#invoke:Frame|replique|jardin|maison}}</nowiki>''' par exemple. La fonction '''p.child''' fabrique un nouvel objet ''frame'' avec pour arguments "jeudi" et frame.args[2] et appelle la fonction '''p.replique''' sous la forme '''p.replique(newFrame)''', ce qui est alors équivalent à un appel du type '''<nowiki>{{#invoke:Frame|replique|jeudi|frame.args[2]}}</nowiki>''' que l'on n'aurait pas pu faire puisque nous ne pouvons pas utiliser la commande '''#invoke''' dans un module.
 
<syntaxhighlight lang="lua">
local p = {}
 
function p.replique(frame)
return "Je renvoie "..frame.args[1].." et "..frame.args[2]
end
 
function p.child(frame)
newFrame = frame:newChild{args={"Jeudi",frame.args[2]}}
return p.replique(newFrame)
end
 
return p
</syntaxhighlight>
 
'''<nowiki>{{#invoke:Frame|parserchild|3|Tulipe|7|janvier}}</nowiki>''' nous indique : {{#invoke:Frame|parserchild|3|Tulipe|7|janvier}}
 
 
==== frame:expandTemplatecallParserFunction ====
{{...}}
 
Ligne 193 ⟶ 205 :
</syntaxhighlight>
 
'''<nowiki>{{#invoke:Frame|templateparser|3|Tulipe|7|janvier}}</nowiki>''' nous indique : {{#invoke:Frame|templateparser|3|Tulipe|7|janvier}}
 
 
==== frame:extensionTagexpandTemplate ====
{{...}}
 
Ligne 205 ⟶ 217 :
</syntaxhighlight>
 
'''<nowiki>{{#invoke:Frame|tagtemplate|3|Tulipe|7|janvier}}</nowiki>''' nous indique : {{#invoke:Frame|tagtemplate|3|Tulipe|7|janvier}}
 
 
==== frame:newChildextensionTag ====
{{...}}
 
Ligne 217 ⟶ 229 :
</syntaxhighlight>
 
'''<nowiki>{{#invoke:Frame|childtag|3|Tulipe|7|janvier}}</nowiki>''' nous indique : {{#invoke:Frame|childtag|3|Tulipe|7|janvier}}