Leçons de niveau 12

Introduction au Lua/Scribunto objet Title

Une page de Wikiversité.
Sauter à la navigation Sauter à la recherche
Début de la boite de navigation du chapitre
Scribunto objet Title
Icône de la faculté
Chapitre no 16
Leçon : Introduction au Lua
Chap. préc. :Fonctions Table
Chap. suiv. :Scribunto objet Frame
fin de la boite de navigation du chapitre
Icon falscher Titel.svg
En raison de limitations techniques, la typographie souhaitable du titre, « Introduction au Lua : Scribunto objet Title
Introduction au Lua/Scribunto objet Title
 », n'a pu être restituée correctement ci-dessus.


Un module Lua-Scribunto pour Mediawiki, est une page de l'espace de nom "Module" qui utilise une table comme variable locale pour stocker ses fonctions et variables mais aussi pour renvoyer la réponse à la fin du processus[1].

Le chapitre bibliothèques Scribunto, étudie les fonctions spécifiques permettant ou facilitant l'usage de Lua sur une plateforme MediaWiki. Il s'agit des fonctions ajoutées par la bibliothèque Scribunto au langage Lua. Cette leçon vous apprendra comment utiliser la Librairie Title du module Scribunto, nous abordons dans un premier temps les propriétés de l'Objet Title.

Prérequis[modifier | modifier le wikicode]

Cette leçon suppose que vous ayez assimilé la leçon Tables.

Créer un script Lua Scribuntu qui utilise la librairie Titre[modifier | modifier le wikicode]

  1. Accéder au Module:Sandbox.
  2. Supprimer le code existant.
  3. Ajouter le code suivant et enregistrer la page:
local p = {}
 
function p.canTalk(frame)
    local title = mw.title.getCurrentTitle()
    return ';canTalk\n:' .. tostring(title.canTalk) .. '\n'
end
 
function p.baseText(frame)
    local title = mw.title.getCurrentTitle()
    return ';baseText\n:' .. tostring(title.baseText) .. '\n'
end
 
function p.exists(frame)
    local title = mw.title.getCurrentTitle()
    return ';exists\n:' .. tostring(title.exists) .. '\n'
end
 
function p.fileExists(frame)
    local title = mw.title.getCurrentTitle()
    return ';fileExists\n:' .. tostring(title.fileExists) .. '\n'
end
 
function p.fragment(frame)
    local title = mw.title.getCurrentTitle()
    return ';fragment\n:' .. title.fragment .. '\n'
end
 
function p.fullText(frame)
    local title = mw.title.getCurrentTitle()
    return ';fullText\n:' .. title.fullText .. '\n'
end

function p.id(frame)
    local title = mw.title.getCurrentTitle();
    return ';id\n:' .. title.id .. '\n'
end
 
function p.inNamespace(frame)
    local title = mw.title.getCurrentTitle();
    return ';inNamespace\n:' .. tostring(title:inNamespace(0)) .. '\n'
end
 
function p.inNamespaces(frame)
    local title = mw.title.getCurrentTitle();
    return ';inNamespaces\n:' .. tostring(title:inNamespaces(0)) .. '\n'
end
 
function p.interwiki(frame)
    local title = mw.title.getCurrentTitle();
    return ';interwiki\n:' .. title.interwiki .. '\n'
end
 
function p.isContentPage(frame)
    local title = mw.title.getCurrentTitle();
    return ';isContentPage\n:' .. tostring(title.isContentPage) .. '\n'
end
 
function p.isExternal(frame)
    local title = mw.title.getCurrentTitle();
    return ';isExternal\n:' .. tostring(title.isExternal) .. '\n'
end
 
function p.isLocal(frame)
    local title = mw.title.getCurrentTitle();
    return ';isLocal\n:' .. tostring(title.isLocal) .. '\n'
end
 
function p.isRedirect(frame)
    local title = mw.title.getCurrentTitle();
    return ';isRedirect\n:' .. tostring(title.isRedirect) .. '\n'
end
 
function p.isSpecialPage(frame)
    local title = mw.title.getCurrentTitle();
    return ';isSpecialPage\n:' .. tostring(title.isSpecialPage) .. '\n'
end
 
function p.isSubpage(frame)
    local title = mw.title.getCurrentTitle();
    return ';isSubpage\n:' .. tostring(title.isSubpage) .. '\n'
end
 
function p.isTalkPage(frame)
    local title = mw.title.getCurrentTitle();
    return ';isTalkPage\n:' .. tostring(title.isTalkPage) .. '\n'
end
  
function p.nsText(frame)
    local title = mw.title.getCurrentTitle();
    return ';nsText\n:' .. title.nsText .. '\n'
end
 
function p.prefixedText(frame)
    local title = mw.title.getCurrentTitle()
    return ';prefixedText\n:' .. title.prefixedText .. '\n'
end
 
function p.rootText(frame)
    local title = mw.title.getCurrentTitle()
    return ';rootText\n:' .. title.rootText .. '\n'
end
 
function p.subjectNsText(frame)
    local title = mw.title.getCurrentTitle()
    return ';subjectNsText\n:' .. title.subjectNsText .. '\n'
end
 
function p.subpageText(frame)
    local title = mw.title.getCurrentTitle()
    return ';subpageText\n:' .. title.subpageText .. '\n'
end
 
function p.text(frame)
    local title = mw.title.getCurrentTitle()
    return ';text\n:' .. title.text .. '\n'
end

function p.isSubpageOf(frame)
    local title = mw.title.getCurrentTitle();
    local text = mw.text.trim(frame.args[1])
    local namespace = mw.text.trim(frame.args[2])
    local title2 = mw.title.new(text, namespace)
    return ';isSubpageOf:' ..namespace .. ':' .. text .. '\n:' .. tostring(title:isSubpageOf(title2)) .. '\n'
end

function p.getContent(frame)
	local text = mw.text.trim(frame.args[1])
    local namespace = mw.text.trim(frame.args[2])
    local title = mw.title.new(text, namespace)
    return ';getContent\n' .. title:getContent() .. '\n'
end

function p.newtitleobject(frame)
    local text = mw.text.trim(frame.args[1])
    local namespace = mw.text.trim(frame.args[2])
    local title = mw.title.new(text, namespace)
    return ';mw.title.new()\n:' .. title.id .. ' - ' .. title.fullText .. '\n'
end
 
return p

Tester votre nouveau script[modifier | modifier le wikicode]

  1. Rendez-vous sur "votre page de test" ou utiliser la page de discussion de cette leçon.
  2. Ajouter le code suivant et enregistrer la page:
{{#invoke:Sandbox|baseText}}
{{#invoke:Sandbox|canTalk}}
{{#invoke:Sandbox|exists}}
{{#invoke:Sandbox|fileExists}}
{{#invoke:Sandbox|fragment}}
{{#invoke:Sandbox|fullText}}
{{#invoke:Sandbox|id}}
{{#invoke:Sandbox|inNamespace}}
{{#invoke:Sandbox|inNamespaces}}
{{#invoke:Sandbox|interwiki}}
{{#invoke:Sandbox|isContentPage}}
{{#invoke:Sandbox|isExternal}}
{{#invoke:Sandbox|isLocal}}
{{#invoke:Sandbox|isRedirect}}
{{#invoke:Sandbox|isSpecialPage}}
{{#invoke:Sandbox|isSubpage}}
{{#invoke:Sandbox|isTalkPage}}
{{#invoke:Sandbox|nsText}}
{{#invoke:Sandbox|prefixedText}}
{{#invoke:Sandbox|rootText}}
{{#invoke:Sandbox|subjectNsText}}
{{#invoke:Sandbox|subpageText}}
{{#invoke:Sandbox|text}}
{{#invoke:Sandbox|isSubpageOf|Laboratoire|Discussion Projet}}
{{#invoke:Sandbox|getContent|Laboratoire/Lua/Introduction|Discussion Projet}}
{{#invoke:Sandbox|newtitleobject|Sandbox|Module}}

Le résultat doit correspondre à ceci[modifier | modifier le wikicode]

baseText
Informatique/Programmation/Lua
canTalk
true
exists
true
fileExists
nil
fragment
fullText
Discussion:Informatique/Programmation/Lua/Title
id
59771
inNamespace
false
inNamespaces
false
interwiki
isContentPage
false
isExternal
false
isLocal
true
isRedirect
false
isSpecialPage
false
isSubpage
true
isTalkPage
true
nsText
Discussion
prefixedText
Discussion:Informatique/Programmation/Lua/Title
rootText
Informatique
subjectNsText
????
subpageText
Title
text
Informatique/Programmation/Lua/Title
isSubpageOf
Discussion:Informatique/Programmation
true
getContent

Bienvenus aux lecteurs[modifier | modifier le wikicode]

Un message spécial aux lecteurs de la leçon Scribunto objet Title. Ils découvrent le contenu le cette page de discussion Discussion:Informatique/Programmation/Lua/Introduction ; par le biais de Scribunto, le Wikitexte est interprété, les modèles ne sont pas transclus.

{{Traduit de|en|Lua/Introduction|8 janvier 2016|33959}}

PS: Si vous souhaitez participer au document, un modèle de page où leçon est disponible Modèle pour ce document. Youni Verciti (discussion) 23 avril 2016 à 15:36 (UTC)

mw.title.new()
58915 - Module:Sandbox

Comprendre le nouveau script[modifier | modifier le wikicode]

Pou comprendre votre nouveau script Lua:

  1. local title = mw.title.getCurrentTitle() récupère l'objet titre de la page courante et l'assigne à la variable nommée title. Chaque objet titre dispose de toutes les propriétés suivantes:
  2. title.canTalk retourne vrai si le titre (contenu dans l'objet) peut avoir une page de discussion.
  3. title.baseText retourne la base, la première partie du titre, où la page parent si il s'agit d'une sous-page.
  4. title.exists retourne vrai si le titre existe.
  5. title.fileExists retourne vrai si le fichier ou l'image existe.
  6. title.fragment retourne l'indicateur de fragment plus connu sous le nom #Tag, s'il existe.
  7. title.fullText retourne le texte complet du titre de la page.
  8. title.id retourne l'identifiant unique de la page.
  9. title:inNamespace(0) retourne vrai si le titre de la page est dans l'espace de noms donné.
  10. title:inNamespaces(0) retourne vrai si le titre de la page est dans l'un des espaces de noms donnés...
  11. title.interwiki retourne le préfixe interwiki du titre, s'il existe.
  12. title.isContentPage indique si la page est dans un espace de noms de contenu.
  13. title.isExternal retourne vrai si le titre dispose d'un préfixe interwiki.
  14. title.isLocal retourne vrai si le titre est dans ce projet wiki.
  15. title.isRedirect retourne vrai si le titre est une redirection.
  16. title.isSpecialPage retourne vrai si le titre est une page spéciale.
  17. title.isSubpage retourne vrai si le titre correspond à une sous-page.
  18. title.isTalkPage retourne vrai si le titre correspond à une page de discussion.
  19. title.nsText retourne le texte de l'espace de noms correspondant à l'objet titre.
  20. title.prefixedText retourne le titre de la page, avec l'espace de noms et le prefixe interwiki affichés.
  21. title.rootText retourne la partie dite racine du titre, sans aucun préfixe.
  22. title.subjectNsText le nom de l'espace de noms sujet de la page...
  23. title.subpageText si c'est une sous-page, juste le nom de la sous-page. Sinon identique à title.text.
  24. title.text retourne le texte du titre sans préfixes.
  25. title:isSubpageOf(title2)) retourne vrai si le titre correspond à une sous-page de la page donnée en argument title2.
  26. title:getContent() retourne le texte complet de la page. mw.text.trim supprime d’éventuels espaces inutiles, les arguments frame.args[x] passés au module sont affectés aux variables text et namespace. local title = mw.title.new(text, namespace) crée un nouvel objet titre selon les paramètres passés au module. Pour transclure les modèles utiliser frame:expandTemplate().
  27. mw.title.new(text, namespace) la fonction MediaWiki title.new créé un nouvel objet titre avec les arguments text et namespace passés lors de l'appel au module par {{#INVOKE...}}.

Conclusion[modifier | modifier le wikicode]

Félicitation! Vous êtes capable de créer, tester et comprendre un script Lua qui contient des fonctions de la librairie Title de la bibliothèque Scribunto. Retourner à la page principale et choisissez une autre leçon Lua et Scribuntu pour MediaWiki.

Voir aussi[modifier | modifier le wikicode]

Références[modifier | modifier le wikicode]

Lua for Wikiversity (en)