Module:Biblio/Lien web : Différence entre versions
(Nouvelle page : local mw = mw or require 'mw' -- pour debugage sous ecllipse local Lien = { } local Commun = require( 'Module:Biblio/Commun' ) local References = require( 'Biblio_Références' ...) |
|||
Ligne 1 : | Ligne 1 : | ||
− | |||
local Lien = { } | local Lien = { } | ||
local Commun = require( 'Module:Biblio/Commun' ) | local Commun = require( 'Module:Biblio/Commun' ) | ||
− | local References = require | + | local References = require( 'Module:Biblio/Références' ) |
local Outils = require( 'Module:Outils' ) | local Outils = require( 'Module:Outils' ) | ||
local TableBuilder = require( 'Module:TableBuilder' ) | local TableBuilder = require( 'Module:TableBuilder' ) |
Version du 17 septembre 2013 à 08:05
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.insert( 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'], '|', 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 ( args.url, '[%[%]]', { ['['] = '%5B'; [']'] = '%5D' } ) ) else categUrl = true wiki.insert( 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 wiki.insert( Outils.erreur( '{{Lienweb}} : paramètre « <code>titre</code> » manquant' ) ) 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' ) then wiki.minsert( ', ', Commun.inscriptionDate( args ) ) 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) if validArg( 'consulté le', 'en ligne le', 'page', 'accessdate', 'Consulté le', 'consulté', 'isbn', 'en ligne', 'consultée le' ) then local precisions = TableBuilder.new( ) -- isbn et page if validArg( 'isbn', 'ISBN' ) then precisions.insert( References.isbn( args, validArg ) ) 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' ) if consult then precisions.insert( 'consultée le ' .. Outils.nobr( consult ) ) end wiki.minsert( ' ', mw.text.nowiki( '[' ), precisions.concat( ', ' ), ']' ) end -- fin du span wiki.insert( '</span>' ) -- citation if citation then wiki.insert( '. ', citation ) if page then wiki.insert( ', ', Commun.page, page ) end 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