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

De Lagny-sur-Marne Wiki
Aller à la navigation Aller à la recherche
0x010D (discussion | contributions)
Ajout paramètre "sous-titre", correction nom de variable, et suppression d'espaces inutiles
0x010D (discussion | contributions)
Ajout « lieu » et « lien éditeur » ; Utilisation de Biblio/Références | affichageLiensExternes commun à tout les modèles Biblio
Ligne 91 : Ligne 91 :
-- format
-- format
wiki.minsert( References.indicationDeFormat( args.format ) )
wiki.minsert( References.indicationDeFormat( validArg( 'format électronique', 'format' ) ) )
-- série, site, éditeur
-- série, site, éditeur
Ligne 106 : Ligne 106 :
if periodique then
if periodique then
wiki.minsert( ', ', periodique )
wiki.minsert( ', ', periodique )
end
end
local lieu = validArg( 'lieu', 'lieu édition', 'location' )
if lieu then
wiki.minsert( ', ', lieu )
end
local editeur = validArg( 'éditeur', 'publisher', 'editeur' )
local editeur = validArg( 'éditeur', 'publisher', 'editeur' )
if editeur then
if editeur then
wiki.minsert( ', ', editeur )
local lienEditeur = validArg( 'lien éditeur' )
if lienEditeur then
wiki.minsert( ', [[', lienEditeur, '|', editeur, ']]' )
else
wiki.minsert( ', ', editeur )
end
end
end


Ligne 118 : Ligne 127 :
end
end
-- liens externe (isbn, doi...) et "consulté le" entre parenthèses, et en plus petit, sauf en note
-- la partie suivante se trouve entre parenthèses, et en plus petit, sauf en note
wiki.minsert( References.affichageLiensExternes( args, validArg, false, true ) )
if validArg( 'consulté le', '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' )
local consulteLe = ''
if consult then
if string.sub( consult, -1,-1) == '.' then
consult = string.sub( consult, 1, -2)
end
if (string.match(consult, '^.*[ /-].*[ /-].*')) then
consulteLe = 'consulté le '
else
consulteLe = 'consulté en '
end
precisions.minsert( consulteLe .. Outils.nobr( consult ) )
end
wiki.minsert( ' <small style="line-height:1em;">', mw.text.nowiki( '(' ), precisions.concat( ', ' ),  ')</small>' )
end
-- fin du span
-- fin du span

Version du 18 juillet 2014 à 20:17

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é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 paramètre 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 Outils.validTextArg( args, ... ) end

-- Variables servant à la catégorisation local categUrl, categTitre, categLangue, categWork

-- Span initial, id wiki.minsert( Commun.spanInitial ( args, validArg ) ) local libelle = validArg( 'libellé' ) if libelle then wiki.minsert( '[', libelle, '] ' ) end

-- indication de langue local indicLangue, codeLangue, categLangue = 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 auteur = validArg( 'nom1', 'nom', 'auteur1', 'auteur', 'auteurs', 'last1', 'last', 'author1', 'author' ) if auteur then if validArg( 'auteurs' ) then wiki.minsert( args.auteurs ) else wiki.minsert( Commun.responsabilitePrincipale( args, validArg, true ) ) end local coauteur = validArg( 'co-auteur', 'coauteurs', 'coauteur', 'coauthors' ) if coauteur then wiki.minsert( ', ', coauteur ) end wiki.minsert( Commun.responsabiliteSecondaire( args, validArg ), ', ' ) end

-- url local url = validArg( 'url', 'lire en ligne', 'url texte' ) if url then -- remplacement des crochets par leur équivalent HTML url = string.gsub ( string.gsub ( url, '%[', '%%5B' ), '%]', '%%5D' ) -- ajout http:// si nécessaire : if not ( string.match( url, '^http' ) or string.match( url, '^//' ) ) then url = 'http://' .. url end wiki.minsert( '[', url ) 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 -- suppression des retours ligne éventuels, sinon MediaWiki ne reconnaît pas le lien externe titre = mw.ustring.gsub( titre, '\n', ' ' ) titre = titre:match'^%s*(.*%S)' or ; 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'] end wiki.minsert( ' « ', titre, sousTitre, ' »]' ) 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( validArg( 'format électronique', 'format' ) ) )

-- série, site, éditeur local serie = validArg( 'série', 'work' ) if serie then wiki.minsert( , '', serie, '' ) categWork = 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 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( ', ', 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( ',‎ ', 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( '' )

-- 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