Moduuli:Fr:Biblio/Failback
[ muokkaa ] Tämä moduuli on osa ranskankielisestä Wikipediasta kopioitua Wikidata ja Interface Wikidata -moduulikokonaisuutta (ks. ohjeet ja esimerkit). Listauksen kaikista tähän liittyvistä moduuleista löydät Ranskankielisen Wikipedian Wikidata-moduulit -sivulta.
|
local Failback = { }
local Commun = require( 'Module:Fr:Biblio/Commun' )
local References = require( 'Module:Fr:Biblio/Références' )
local Outils = require( 'Module:Fr:Outils' )
local TableBuilder = require( 'Module:Fr:TableBuilder' )
local Langue = require( 'Module:Fr:Langue' )
local function formatLien( 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 valeurs 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 Commun.validTextArg( args, ... ) end
args.categ = {}
-- Span initial, id
local spanInitial, spanFinal = Commun.spanInitial ( args, validArg )
wiki.minsert( spanInitial, Commun.libelle( args ) )
-- indication de langue
-- local indicLangue, codeLangue = 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( 'Tekijä', 'tekijä', 'nom1', 'nom', 'auteur1', 'auteur', 'auteurs', 'auteur institutionnel', 'last1', 'last', 'author1', 'author' )
local auteurs = validArg( 'Tekijä', 'tekijä', 'auteurs' )
if auteur then
if auteurs then
wiki.minsert( 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 titre = validArg( 'Nimeke', 'Nimike', 'titre', 'title' )
local url = validArg( 'Osoite', 'osoite', 'url', 'Url', 'www', 'officialurl', 'lire en ligne', 'url texte', 'lien' )
local archiveUrl = validArg( 'Arkisto', 'arkisto', 'archive-url', 'archiveurl' )
if url then
-- remplacement des crochets et espaces par leur équivalent HTML
url = string.gsub( string.gsub( string.gsub( url, ' ', '%%20' ), '%[', '%%5B' ), '%]', '%%5D' )
-- ajout http:// si nécessaire :
if not ( string.match( url, '^http' ) or string.match( url, '^ftp' ) or string.match( url, '^//' ) ) then
url = 'http://' .. url
end
if titre then
wiki.minsert( '<i>[', url, ' ', titre, ']</i>' )
else
wiki.minsert( url )
end
else
wiki.minsert('<i>', titre,'</i>' )
end
-- Archive
if archiveUrl then
if not ( string.match( archiveUrl, '^http' ) or string.match( archiveUrl, '^//' ) ) then
archiveUrl = 'http://' .. archiveUrl
end
local textArchive = ' archive'
local dateArchive = validArg( 'Arkistoitu', 'arkistoitu', 'archive-date', 'archivedate' )
if dateArchive then
dateArchive = Commun.inscriptionDate{ date = dateArchive }
textArchive = ' arkistoitu '
end
wiki.minsert( ' <small class="plainlinks cachelinks">[[', archiveUrl, textArchive, dateArchive, ']]</small>' )
end
-- format
wiki.minsert( References.indicationDeFormat( validArg( 'Tiedostomuoto', 'tiedostomuoto', 'format électronique', 'format' ) ) )
local periodique = validArg( 'Julkaisu', 'julkaisu', 'périodique' )
if periodique then
wiki.minsert( ', ', periodique )
end
local lieu = validArg( 'Julkaisupaikka', 'julkaisupaikka', 'lieu', 'lieu édition', 'location' )
if lieu then
wiki.minsert( ', ', lieu )
end
local editeur = validArg( 'Julkaisija', 'julkaisija', 'éditeur', 'publisher', 'editeur' )
if editeur then
local lienEditeur = validArg( 'lien éditeur' )
if lienEditeur then
wiki.minsert( ', [[', lienEditeur, '|', editeur, ']]' )
else
wiki.minsert( ', ', editeur )
end
end
-- date
if validArg( 'Vuosi', 'Ajankohta', 'vuosi', 'ajankohta', 'année', 'date', 'year', 'en ligne le', 'en ligne' ) then
args.date = validArg( 'date', 'en ligne le', 'en ligne' )
local lrm
if Langue.nonLatin( wiki.concat() ) then
lrm = '‎ '
end
wiki.minsert( ',', lrm, ' ', 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( spanFinal )
local notes=validArg( 'Selite', 'selite')
if notes then
wiki.minsert( '<span class="notes">, ', notes, ' </span>' )
end
-- citation et passage
local citation = validArg( 'Lainaus', 'lainaus', 'citation', 'extrait', 'quote' )
if citation then
wiki.minsert( ' : <span class="citation">« ', citation, ' »</span>' )
end
local passage = validArg( 'Sivu', 'Sivut', 'sivu', 'sivut', 'page', 'pages', 'passage' )
if passage then
if string.match( passage, '^[%dIVXLCM]' ) then
wiki.minsert( ', ', Commun.page, passage )
else
wiki.minsert( ', ', passage )
end
end
return wiki.concat()
end
function Failback.lienFailback( args )
return formatLien( args, false )
end
return Failback