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

De Lagny-sur-Marne Wiki
Aller à la navigation Aller à la recherche
0x010D (discussion | contributions)
Aucun résumé des modifications
0x010D (discussion | contributions)
précision message erreur, modification catégorie, mef
Ligne 9 : Ligne 9 :
function Lien.lienWeb( args )
function Lien.lienWeb( args )
-- La table wiki va recevoir tout les petits bouts de texte, et sera concaténtée à la fin.
-- 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  
-- 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  
-- librairy table comme des mèthodes. minsert permet d'insérer plusieurs élément en une
-- seule fois en, ignorant les paramètre nil.
-- seule fois en, ignorant les paramètre nil.
local wiki = TableBuilder.new()
local wiki = TableBuilder.new()
-- validArg renvoi le premier paramètre non vide, ou nil s'ils sont tous vides.
-- 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.
-- Seul les noms des paramètres doivent être transmis à la fonction.
local validArg = function ( ... ) return Outils.validTextArg( args, ... ) end
local validArg = function ( ... ) return Outils.validTextArg( args, ... ) end
--Variables servant à la catégorisation
--Variables servant à la catégorisation
local categUrl, categTitre, categLangue, categWork
local categUrl, categTitre, categLangue, categWork
Ligne 23 : Ligne 23 :
-- Span initial, id
-- Span initial, id
wiki.minsert( Commun.spanInitial ( args, validArg ) )
wiki.minsert( Commun.spanInitial ( args, validArg ) )
-- indication de langue
-- indication de langue
local incdicLangue, codeLangue, categLangue = Commun.indicationDeLangue ( args, validArg )
local incdicLangue, codeLangue, categLangue = Commun.indicationDeLangue ( args, validArg )
Ligne 51 : Ligne 51 :
else
else
categUrl = true
categUrl = true
wiki.minsert( Outils.erreur( '{{Lienweb}} : paramètre « <code>url</code> » manquant' ) )
wiki.minsert( Outils.erreur( 'modèle [[Modèle:Lien web|{{Lien web}}]] : paramètre « <code>url</code> » manquant' ) )
end
end
Ligne 67 : Ligne 67 :
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( '{{Lienweb}} : paramètre « <code>titre</code> » manquant' ) )
wiki.minsert( ' ', args.url, '] ', Outils.erreur( 'modèle [[Modèle:Lien web|{{Lien web}}]] : paramètre « <code>titre</code> » manquant' ) )
end
end
end
end
Ligne 73 : Ligne 73 :
-- format
-- format
wiki.minsert( References.indicationDeFormat( args.format ) )
wiki.minsert( References.indicationDeFormat( args.format ) )
-- série, site, éditeur
-- série, site, éditeur
local serie = validArg( 'série', 'work' )
local serie = validArg( 'série', 'work' )
if serie then
if serie then
wiki.minsert( [[, '']], serie, [['']] )  
wiki.minsert( [[, '']], serie, [['']] )
categWork = validArg( 'work' ) -- il y a ambiguité sur l'utilisation de ce paramètre
categWork = validArg( 'work' ) -- il y a ambiguité sur l'utilisation de ce paramètre
end
end
Ligne 85 : Ligne 85 :
end
end
local editeur = validArg( 'éditeur', 'publisher', 'editeur' )
local editeur = validArg( 'éditeur', 'publisher', 'editeur' )
if editeur then  
if editeur then
wiki.minsert( ', ', editeur )
wiki.minsert( ', ', editeur )
end
end
 
-- date
-- date
if validArg( 'année', 'date', 'year', 'en ligne le', 'en ligne' ) then
if validArg( 'année', 'date', 'year', 'en ligne le', 'en ligne' ) then
Ligne 102 : Ligne 102 :
-- isbn et issn
-- isbn et issn
precisions.minsert( References.isbn( args, validArg ), References.issn( args, validArg ) )
precisions.minsert( References.isbn( args, validArg ), References.issn( args, validArg ) )
-- consulté le
-- consulté le
local consult = validArg( 'consulté le', 'accessdate', 'Consulté le', 'consulté', 'consultée le' )
local consult = validArg( 'consulté le', 'accessdate', 'Consulté le', 'consulté', 'consultée le' )
Ligne 108 : Ligne 108 :
precisions.minsert( 'consulté le ' .. Outils.nobr( consult ) )
precisions.minsert( 'consulté le ' .. Outils.nobr( consult ) )
end
end
 
wiki.minsert( ' <small style="line-height:1em;">', mw.text.nowiki( '(' ), precisions.concat( ', ' ),  ')</small>' )
wiki.minsert( ' <small style="line-height:1em;">', mw.text.nowiki( '(' ), precisions.concat( ', ' ),  ')</small>' )
end
end
Ligne 115 : Ligne 115 :
wiki.minsert( '</span>' )
wiki.minsert( '</span>' )
-- citation  
-- citation
local citation = validArg( 'citation', 'extrait', 'quote' )  
local citation = validArg( 'citation', 'extrait', 'quote' )
if citation then
if citation then
wiki.minsert( '. <span class="citation">« ', citation, ' »</span>' )
wiki.minsert( '. <span class="citation">« ', citation, ' »</span>' )
end
end
local page = validArg( 'page', 'pages', 'passage' )
local page = validArg( 'page', 'pages', 'passage' )
if page then  
if page then
wiki.minsert( ', ', Commun.page, page )
wiki.minsert( ', ', Commun.page, page )
end
end
 
if mw.title.getCurrentTitle().namespace == 0 then
if mw.title.getCurrentTitle().namespace == 0 then
wiki.minsert(  
wiki.minsert(
categLangue and '[[Catégorie:Article utilisant le modèle Ouvrage avec un paramètre langue non reconnu]]',
categLangue and '[[Catégorie:Page du modèle Lien web comportant une erreur|langue]]',
( categUrl or categTitre ) and '[[Catégorie:Page utilisant un modèle avec une syntaxe erronée|L]]'
categUrl and '[[Catégorie:Page du modèle Lien web comportant une erreur|Url]]',
categTitre and '[[Catégorie:Page du modèle Lien web comportant une erreur|titre]]'
)
)
end
end
return wiki.concat()
return wiki.concat()

Version du 14 novembre 2013 à 12:44

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.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 local lienAuteur = validArg( 'lien auteur' ) local prenom = validArg( 'prénom', 'prénom1', 'first' ) if lienAuteur then wiki.minsert( '', prenom, auteur, ', ' ) else wiki.minsert( prenom, auteur, ', ' ) end end local coauteur = validArg( 'coauteurs', 'coauteur', 'coauthors' ) if coauteur then wiki.minsert( coauteur, ', ' ) end

-- url local url = validArg( 'url', 'lire en ligne', 'url texte' ) if url then wiki.minsert( '[', string.gsub ( string.gsub ( 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( 'modèle [[Modèle:Lien web| modèle {{Lien web}} : paramètre « url » manquantet paramètre « titre » manquant]] : paramètre « url » manquant' ) ) end

-- titre local titre = validArg( 'titre', 'title' ) if titre then if auteur then wiki.minsert( ' « ', titre, ' »]' ) else wiki.minsert( ' ', titre, ']' ) end else categTitre = true if categUrl then wiki.minsert( Outils.erreur( ' et paramètre « titre » manquant' ) ) else wiki.minsert( ' ', args.url, '] ', Outils.erreur( 'modèle [[Modèle:Lien web| modèle {{Lien web}} : paramètre « url » manquantet paramètre « titre » manquant]] : paramètre « titre » manquant' ) ) end end

-- format wiki.minsert( References.indicationDeFormat( args.format ) )

-- série, site, éditeur local serie = validArg( 'série', 'work' ) if serie then wiki.minsert( , '', serie, '' ) categWork = validArg( 'work' ) -- il y a ambiguité sur l'utilisation de ce paramètre end local site = validArg( 'site', 'périodique', 'website' ) if site then wiki.minsert( , sur '', site, '' ) end local editeur = validArg( 'éditeur', 'publisher', 'editeur' ) if editeur then wiki.minsert( ', ', editeur ) 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', 'ISBN', 'issn', 'consultée le' ) then local precisions = TableBuilder.new( )

-- isbn et issn precisions.minsert( References.isbn( args, validArg ), References.issn( args, validArg ) )

-- consulté le local consult = validArg( 'consulté le', 'accessdate', 'Consulté le', 'consulté', 'consultée le' ) if consult then precisions.minsert( 'consulté le ' .. Outils.nobr( consult ) ) end

wiki.minsert( ' ', mw.text.nowiki( '(' ), precisions.concat( ', ' ), ')' ) end

-- fin du span wiki.minsert( '' )

-- citation local citation = validArg( 'citation', 'extrait', 'quote' ) if citation then wiki.minsert( '. « ', citation, ' »' ) end local page = validArg( 'page', 'pages', 'passage' ) if page then wiki.minsert( ', ', Commun.page, page ) end

if mw.title.getCurrentTitle().namespace == 0 then wiki.minsert( categLangue and , categUrl and , categTitre and ) end

return wiki.concat() end


return Lien