Module:Biblio/Lien web : Différence entre versions
(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( '{{ | + | 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( '{{ | + | 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:Page du modèle Lien web comportant une erreur|langue]]', | |
− | + | 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
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' ) 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( '[[', lienAuteur, '|', 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|{{Lien web}}]] : 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( 'modèle [[Modèle:Lien web|{{Lien web}}]] : paramètre « <code>titre</code> » 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( ' <small style="line-height:1em;">', mw.text.nowiki( '(' ), precisions.concat( ', ' ), ')</small>' ) end -- fin du span wiki.minsert( '</span>' ) -- citation local citation = validArg( 'citation', 'extrait', 'quote' ) if citation then wiki.minsert( '. <span class="citation">« ', citation, ' »</span>' ) 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 '[[Catégorie:Page du modèle Lien web comportant une erreur|langue]]', 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 return wiki.concat() end return Lien