Module:Biblio/Lien web : Différence entre versions

De Lagny-sur-Marne Wiki
Aller à : navigation, rechercher
Ligne 33 : Ligne 33 :
 
if auteur then
 
if auteur then
 
if validArg( 'lien auteur' ) then
 
if validArg( 'lien auteur' ) then
wiki.minsert( '[[', args['lien auteur'], '|', auteur, ']], ' )
+
wiki.minsert( '[[', args['lien auteur'], '|', validArg( 'prénom', 'prénom1', 'first' ), auteur, ']], ' )
 
else
 
else
 
wiki.minsert( validArg( 'prénom', 'prénom1', 'first' ), auteur, ', ' )
 
wiki.minsert( validArg( 'prénom', 'prénom1', 'first' ), auteur, ', ' )
Ligne 44 : Ligne 44 :
 
-- url
 
-- url
 
if validArg( 'url' ) then
 
if validArg( 'url' ) then
wiki.minsert( '[', string.gsub ( string.gsub ( args.url, '%[', '%5B' ), '%]', '%5D' ), nil )
+
wiki.minsert( '[', string.gsub ( string.gsub ( args.url, '%[', '%%5B' ), '%]', '%%5D' ), nil )
 
-- le ", nil" permet de ne prendre en compte que le premier paramètre retourné par string.gsub
 
-- le ", nil" permet de ne prendre en compte que le premier paramètre retourné par string.gsub
 
else
 
else
Ligne 84 : Ligne 84 :
 
 
 
-- date
 
-- date
if validArg( 'année', 'date', 'year' ) then
+
if validArg( 'année', 'date', 'year', 'en ligne le', 'en ligne' ) then
 +
args.date = validArg( 'date', 'en ligne le', 'en ligne' )
 
wiki.minsert( ', ', Commun.inscriptionDate( args ) )
 
wiki.minsert( ', ', Commun.inscriptionDate( args ) )
 
end
 
end
 
 
local citation = validArg( 'citation', 'extrait', 'passage', 'quote' )
 
local page = validArg( 'page', 'pages' )
 
 
 
 
-- la partie suivante se trouve entre parenthèse, et plus petit (sauf en note)
 
-- la partie suivante se trouve entre parenthèse, et plus petit (sauf en note)
if validArg( 'consulté le', 'en ligne le', 'page', 'accessdate', 'Consulté le', 'consulté', 'isbn', 'en ligne', 'consultée le'  ) then
+
if validArg( 'consulté le', 'page', 'accessdate', 'Consulté le', 'consulté', 'isbn', 'consultée le'  ) then
 
local precisions = TableBuilder.new(  )
 
local precisions = TableBuilder.new(  )
 
 
Ligne 99 : Ligne 98 :
 
precisions.insert( References.isbn( args, validArg ) )
 
precisions.insert( References.isbn( args, validArg ) )
 
end
 
end
if page and not citation then
+
precisions.minsert( Commun.page .. page )
 
end
 
 
-- en ligne, consulté le
 
if validArg( 'en ligne le', 'en ligne' ) then
 
precisions.insert( 'mis en ligne le ' .. Outils.nobr(validArg( 'en ligne le', 'en ligne' ) ) )
 
end
 
 
 
local consult = validArg( 'consulté le', 'accessdate', 'Consulté le', 'consulté', 'consultée le' )
 
local consult = validArg( 'consulté le', 'accessdate', 'Consulté le', 'consulté', 'consultée le' )
 
if consult then
 
if consult then
Ligne 120 : Ligne 111 :
 
 
 
-- citation  
 
-- citation  
if citation then
+
if validArg( 'citation', 'extrait', 'passage', 'quote' ) then
wiki.minsert( '. ', citation )
+
wiki.minsert( '. ', validArg( 'citation', 'extrait', 'passage', 'quote' ) )
if page then  
+
end
wiki.minsert( ', ', Commun.page, page )
+
if validArg( 'page', 'pages' ) then  
end
+
wiki.minsert( ', ', Commun.page, validArg( 'page', 'pages' ) )
 
end
 
end
 
 

Version du 19 septembre 2013 à 11:09

La documentation pour ce module peut être créée à Module:Biblio/Lien web/doc

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' )
local Langue -- = require( 'Module:Langue' )    ne sera chargé que si nécessaire.


function Lien.lienWeb( args )
	-- La table wiki va recevoir tout les petits bouts de texte, et sera concaténtée à la fin.
	-- Elle utilise la metat-table de TableBuilder, permettant d'utiliser les fonctions de la 
	-- librairy table comme des mèthodes. minsert permet d'insérer plusieurs élément en une 
	-- seule fois en, ignorant les paramètre nil.
	local wiki = TableBuilder.new()
		
	-- validArg renvoi le premier paramètre non vide, ou nil s'ils sont tous vides.
	-- Seul les noms des paramètres doivent être transmis à la fonction.
	local validArg = function ( ... ) return Outils.validTextArg( args, ... ) end
		
	--Variables servant à la catégorisation
	local categUrl, categTitre, categLangue, categWork
	
	-- Span initial, id
	wiki.minsert( Commun.spanInitial ( args, validArg ) )
		
	-- indication de langue
	local incdicLangue, codeLangue, categLangue = Commun.indicationDeLangue ( args, validArg )
	wiki.minsert( incdicLangue, ' ' )
	
	-- auteur et coauteurs
	local auteur = validArg( 'auteur', 'author', 'nom', 'nom1', 'last', 'auteurs', 'Auteur' )
	if auteur then
		if validArg( 'lien auteur' ) then
			wiki.minsert( '[[', args['lien auteur'], '|', validArg( 'prénom', 'prénom1', 'first' ), auteur, ']], ' )
		else
			wiki.minsert( validArg( 'prénom', 'prénom1', 'first' ), auteur, ', ' )
		end
	end
	if validArg( 'coauteurs', 'coauteur', 'coauthors' ) then
		wiki.minsert( validArg( 'coauteurs', 'coauteur', 'coauthors' ), ', ' )
	end
	
	-- url
	if validArg( 'url' ) then
		wiki.minsert( '[', string.gsub ( string.gsub ( args.url, '%[', '%%5B' ), '%]', '%%5D' ), nil )
		-- le ", nil" permet de ne prendre en compte que le premier paramètre retourné par string.gsub
	else
		categUrl = true
		wiki.minsert( Outils.erreur( '{{Lienweb}} : paramètre « <code>url</code> » manquant' ) )
	end
	
	-- titre
	local titre = validArg( 'titre', 'title' )
	if titre then
		if auteur then
			wiki.minsert( ' « <cite style="font-style: normal">', titre, '</cite> »]' )
		else
			wiki.minsert( ' ', titre, ']' )
		end
	else
		categTitre = true
		if categUrl then
			wiki.minsert( Outils.erreur( ' et paramètre « <code>titre</code> » manquant' ) )
		else
			wiki.minsert( ' ', args.url, '] ', Outils.erreur( '{{Lienweb}} : paramètre « <code>titre</code> » manquant' ) )
		end
	end
	
	-- format
	wiki.minsert( References.indicationDeFormat( args.format ) )
	 	
	-- série, site, éditeur
	if validArg( 'série', 'work' ) then
		wiki.minsert( [[, '']], validArg( 'série', 'work' ), [['']] ) 
		categWork = validArg( 'work' )	-- il y a ambiguité sur l'utilisation de ce paramètre
	end
	if validArg( 'site', 'périodique', 'website' ) then
		wiki.minsert( [[, sur '']], validArg( 'site', 'périodique', 'website' ), [['']] )
	end
	if validArg( 'éditeur', 'publisher', 'editeur' ) then 
		wiki.minsert( ', ', validArg( 'éditeur', 'publisher' ) )
	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( ', ', Commun.inscriptionDate( args ) )
	end
	
	
	-- la partie suivante se trouve entre parenthèse, et plus petit (sauf en note)
	if validArg( 'consulté le', 'page', 'accessdate', 'Consulté le', 'consulté', 'isbn', 'consultée le'  ) then
		local precisions = TableBuilder.new(  )
		
		-- isbn et page
		if validArg( 'isbn', 'ISBN' ) then 
			precisions.insert( References.isbn( args, validArg ) )
		end
			
		local consult = validArg( 'consulté le', 'accessdate', 'Consulté le', 'consulté', 'consultée le' )
		if consult then
			precisions.insert( 'consulté le ' .. Outils.nobr( consult ) )
		end

		wiki.minsert( ' <small>', mw.text.nowiki( '[' ), precisions.concat( ', ' ),  ']</small>' )
	end
	
	-- fin du span
	wiki.minsert( '</span>' )
	
	-- citation 
	if validArg( 'citation', 'extrait', 'passage', 'quote' ) then
		wiki.minsert( '. ', validArg( 'citation', 'extrait', 'passage', 'quote' ) )
	end
	if validArg( 'page', 'pages' ) then 
		wiki.minsert( ', ', Commun.page, validArg( 'page', 'pages' ) )
	end
	 	
	if mw.title.getCurrentTitle().namespace == 0 then
		wiki.minsert( 
			categLangue and '[[Catégorie:Article utilisant le modèle Ouvrage avec un paramètre langue non reconnu]]',
			( categUrl or categTitre ) and '[[Catégorie:Page utilisant un modèle avec une syntaxe erronée|L]]'
		)
	end

	
	return wiki.concat()
end


return Lien