Module:Numéro Q

Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 28 mai 2019 à 20:09 et modifiée en dernier par TomT0m (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[voir] [modifier] [historique] [purger]

Module support pour {{Numéro Q}} :

Q1

Q1

Utilisation

Fonctions exportables :

  • numero(frame) – Fonction appelable depuis un modèle. Tente de trouver le numéro Q pertinent à partir d’un titre d’article, d’une url d’un élément Wikidata, ou d’une chaîne sous la forme "Qxxxx" .
    Paramètres, voir au dessous et la documentation de {{Numéro Q}}
  • _numero(input, erreur_si_non_trouve, test_redirection) – fonction lua appelée par la fonction au dessus, exportée pour appeler depuis un autre module Lua. Paramètre:
    input
    une chaîne. Peut-être un titre d’article, une uri pour copier/coller depuis la barre d’adresse sur Wikidata, un wikilien au format [[titre]]
    erreur_si_non_trouvé
    par défaut "oui", positionner à "non" si on ne veut qu’une chaîne vide et pas une chaîne d’erreur de modèle wiki dans le cas où la fonction ne trouve pas d’identifiant.
    test_redirection
     booléen. Dans le cas où le titre d’article n’a pas d’élément et si on affiche une erreur, signaler si c’est un titre de redirection.


Modules externes et autres éléments dont ce module a besoin pour fonctionner :

  • mw.title – description (courte description expliquant la dépendance de ce module externe).

Exemples

Pour des exemples, voir la page de test permettant de tester diverses modifications apportées.

Q1

Q1

Q42891670

local gsub = mw.ustring.gsub

local function id_from_wd_wikilink(link, test_redirection)
	local attempt = mw.text.trim(link)
	attempt = gsub(attempt, "^[[][[]:?d:","") --extracting Q titles from wikilinks like [[d:Q1]], [[:d:Q1]], [[:d:Q1|Q1]] or [[d:Q1|plop]]
			:gsub("[|].*[]][]]$","")
			:gsub("[]][]]$","")
	if mw.ustring.find(attempt, "^Q[0-9]*$") then return attempt end
end

local function id_from_any(link, test_redirection)
	local title = mw.title.makeTitle("",link)
	local maybe_qid = id_from_wd_wikilink(link) or mw.wikibase.getEntityIdForTitle(title.text)
	if maybe_qid then return maybe_qid end
	if (not maybe_qid) and test_redirection then
		if title.isRedirect then
			error("le titre « "  .. link .. " » est une redirection qui n’est pas reliée à un élément Wikidata" )
		end
	end
	error("l’article de titre « "  .. link .. " » n’existe pas ou n’est pas lié à un élément Wikidata" )
end
	
return {
	
	id_from_wd_wikilink = 
		id_from_wd_wikilink ,
	id_from_any = 
		id_from_any ,
		
	numero = function (frame) 
		local tester_redirection = true
		mw.logObject(frame.args)
		mw.log(frame.args["tester_redirection"])
		if not(frame.args[1]) then error("pas de titre d’article fourni au modèle (probablement « Numéro Q »), c’est un paramètre requis") end
		if frame.args["tester_redirection"] and frame.args["tester_redirection"] == "non" then
			tester_redirection = false
		end
		return id_from_any(
			frame.args[1], 
			tester_redirection
		) end
}