Aller au contenu

« Module:Biblio/Lien vidéo » : différence entre les versions

De Stargate Wiki Sémantique
Contenu supprimé Contenu ajouté
Aucun résumé des modifications
mAucun résumé des modifications
 
(6 versions intermédiaires par le même utilisateur non affichées)
Ligne 35 : Ligne 35 :
if people then
if people then
if validArg( 'people' ) then
if validArg( 'people' ) then
wiki.minsert( args.people )
wiki.minsert( args.people, ' - ')
else
else
wiki.minsert( Commun.responsabilitePrincipale( args, validArg, true ) )
wiki.minsert( Commun.responsabilitePrincipale( args, validArg, true ), ' - ')
end
end
end
end
Ligne 70 : Ligne 70 :
titre:gsub( ' ?»$', '' )
titre:gsub( ' ?»$', '' )
end
end
wiki.minsert( ' « <cite style="font-style: normal">', titre, sousTitre, '</cite> »', url and ']' )
wiki.minsert( ' <cite style="font-style: italic">', titre, sousTitre, '</cite> ', url and ']' )
else
else
wiki.minsert( ' ', titre, url and ']' )
wiki.minsert( ' <cite style="font-style: italic">', titre, '</cite> ', url and ']' )
end
end
local traductionTitre = validArg( 'traduction titre' )
local traductionTitre = validArg( 'traduction titre' )
Ligne 88 : Ligne 88 :
wiki.minsert( Outils.erreur( ' et paramètre « <code>titre</code> » manquant' ) )
wiki.minsert( Outils.erreur( ' et paramètre « <code>titre</code> » manquant' ) )
else
else
wiki.minsert( ' ', args.url, '] ', Outils.erreur( 'modèle [[Modèle:Lien web|{{Lien web}}]] : paramètre « <code>titre</code> » manquant' ) )
wiki.minsert( ' ', args.url, '] ', Outils.erreur( 'modèle [[Modèle:Lien vidéo|{{Lien vidéo}}]] : paramètre « <code>titre</code> » manquant' ) )
end
end
end
end
Ligne 111 : Ligne 111 :
local medium = validArg( 'medium' )
local medium = validArg( 'medium' )
if medium then
if medium then
wiki.minsert( ', [', medium, ']' )
wiki.minsert( ' [', medium, ']' )
end
end
local lieu = validArg( 'lieu', 'lieu édition', 'location' )
local lieu = validArg( 'lieu', 'lieu édition', 'location' )

Dernière version du 2 février 2016 à 09:11

Documentation icon Documentation module[créer]
local Lien = { }

local Commun = require( 'Module:Biblio/Commun' )
local References = require( 'Module:Biblio/Références' )
local Outils = require( 'Module:Outils' )
local TableBuilder = require( 'Module:TableBuilder' )


function Lien.lienVideo( args )
	-- La table wiki va recevoir tout les petits bouts de texte, et sera concaténée à la fin.
	-- Elle utilise la meta-table de TableBuilder, permettant d'utiliser les fonctions de la
	-- library table comme des méthodes. minsert permet d'insérer plusieurs éléments en une
	-- seule fois en, ignorant les valeurs nil.
	local wiki = TableBuilder.new()
	
	-- validArg renvoie le premier paramètre non vide, ou nil s'ils sont tous vides.
	-- Seuls les noms des paramètres doivent être transmis à la fonction.
	local validArg = function ( ... ) return Commun.validTextArg( args, ... ) end
	
	-- Variables servant à la catégorisation
	args.categ = {}
	
	-- Span initial, id
	local spanInitial, spanFinal = Commun.spanInitial ( args, validArg )
	wiki.minsert( spanInitial,  Commun.libelle( args ) )
	
	-- indication de langue
	local indicLangue, codeLangue = Commun.indicationDeLangue ( args, validArg )
	if Outils.notEmpty( indicLangue ) then
		wiki.minsert( indicLangue, ' ' )
	end
	
	-- Liste des auteurs et de leurs responsabilités (principales et secondaires)
	local people = validArg( 'people' )
	if people then
		if validArg( 'people' ) then
			wiki.minsert( args.people, ' - ')
		else
			wiki.minsert( Commun.responsabilitePrincipale( args, validArg, true ), ' - ')
		end
	end
	
	-- url
	local url = validArg( 'url', 'lire en ligne', 'url texte' )
	if url then
		-- remplacement des crochets et espaces par leur équivalent HTML
		url = string.gsub( string.gsub( string.gsub( url, ' ', '%%20' ), '%[', '%%5B' ), '%]', '%%5D' )
		-- ajout http:// si nécessaire :
		if not ( string.match( url, '^http' ) or string.match( url, '^ftp' ) or string.match( url, '^//' ) ) then
			url = 'http://' .. url
		end
		wiki.minsert( '[', url )
	end
	
	-- titre
	local titre = validArg( 'titre', 'title' )
	local description = validArg( 'description' )
	if titre then
		-- suppression des retours ligne éventuels, sinon MediaWiki ne reconnaît pas le lien externe
		-- et remplacement des crochets par leur équivalent HTML (uniquement le crochet de fermeture)
		titre = titre:gsub( '\n', ' ' ):gsub ( '%]', '&#93;' )
		local  c = titre:sub(1,1)
		-- on teste d'abord si titre contient déjà des guillemets 
		if(string.byte(c) ~= 194) then 
			local sousTitre
			if validArg( 'sous-titre' ) then
				sousTitre = ' : ' .. args['sous-titre']
				sousTitre:gsub( ' ?»$', '' )
			else
				titre:gsub( ' ?»$', '' )
			end
			wiki.minsert( ' <cite style="font-style: italic">', titre, sousTitre, '</cite> ', url and ']' )
		else
			wiki.minsert( ' <cite style="font-style: italic">', titre, '</cite> ', url and ']' )
		end
		local traductionTitre = validArg( 'traduction titre' )
		if traductionTitre and traductionTitre ~= args.titre then
			wiki.minsert( ' [« ', traductionTitre, ' »]' )
		end
		if description then
			wiki.minsert( ', ', description )
		end
	elseif description then
		wiki.minsert( ' ', description, url and ']' )
	else
		args.categ.titre = true
		if args.categ.url then
			wiki.minsert( Outils.erreur( ' et paramètre « <code>titre</code> » manquant' ) )
		else
			wiki.minsert( ' ', args.url, '] ', Outils.erreur( 'modèle [[Modèle:Lien vidéo|{{Lien vidéo}}]] : paramètre « <code>titre</code> » manquant' ) )
		end
	end
	
	-- format
	wiki.minsert( References.indicationDeFormat( validArg( 'format électronique', 'format' ) ) )
	
	-- série, site, éditeur
	local serie = validArg( 'série', 'work' )
	if serie then
		wiki.minsert( [[, '']], serie, [['']] )
		args.categ.work = validArg( 'work' )	-- il y a ambiguïté sur l'utilisation de ce paramètre
	end
	local site = validArg( 'site', 'website' )
	if site then
		wiki.minsert( [[, sur '']], site, [['']] )
	end
	local periodique = validArg( 'périodique' )
	if periodique then
		wiki.minsert( ', ', periodique )
	end	
	local medium = validArg( 'medium' )
	if medium then
		wiki.minsert( ' [', medium, ']' )
	end	
	local lieu = validArg( 'lieu', 'lieu édition', 'location' )
	if lieu then
		wiki.minsert( ', ', lieu )
	end	
	local editeur = validArg( 'éditeur', 'publisher', 'editeur' )
	if editeur then
		local lienEditeur = validArg( 'lien éditeur' )
		if lienEditeur then
			wiki.minsert( ', [[', lienEditeur, '|', editeur, ']]' )
		else
			wiki.minsert( ', ', editeur )
		end
	end

	-- date
	if validArg( 'année', 'date', 'year', 'en ligne le', 'en ligne' ) then
		args.date = validArg( 'date', 'en ligne le', 'en ligne' )
		wiki.minsert( ',&lrm; ', Commun.inscriptionDate( args ) )
	end
	
	-- liens externe (isbn, doi...) et "consulté le" entre parenthèses, et en plus petit, sauf en note
	wiki.minsert( References.affichageLiensExternes( args, validArg, false, true ) )
	
	-- fin du span
	wiki.minsert( spanFinal )
	
	-- citation
	local citation = validArg( 'citation', 'extrait', 'quote' )
	if citation then
		wiki.minsert( ' : <span class="citation">« ', citation, ' »</span>' )
	end
	local passage = validArg( 'page', 'pages', 'passage' )
	if passage then
		if string.match( passage, '^[%dIVXLCM]' ) then
			wiki.minsert( ', ', Commun.page, passage )
		else
			wiki.minsert( ', ', passage )
		end
	end

	if mw.title.getCurrentTitle().namespace == 0 then
		wiki.minsert(
		args.categ.langue and '[[Catégorie:Pages du modèle Lien vidéo comportant une erreur|langue]]',
		args.categ.url and '[[Catégorie:Pages du modèle Lien vidéo comportant une erreur|Url]]',
		args.categ.titre and '[[Catégorie:Pages du modèle Lien vidéo comportant une erreur|titre]]',
		args.categ.issnInvalid and '[[Catégorie:Pages avec ISSN invalide]]'
		)
	end
	
	return wiki.concat()
end


return Lien