« 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)
Aucun résumé des modifications
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

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( 'Modèle:Lienweb : 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:Lienweb : paramètre « titre » 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( ' ', mw.text.nowiki( '[' ), precisions.concat( ', ' ), ']' ) end

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

-- 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 , ( categUrl or categTitre ) and ) end


return wiki.concat() end


return Lien