Module:Biblio/Lien vidéo
Apparence
[voir] [modifier] [historique] [purger]
Utilisation
Fonctions exportables :
lienVideo(args)
– affiche un lien vers une vidéo ; voir {{Lien vidéo}}
Modules externes et autres éléments dont ce module a besoin pour fonctionner :
Module:Biblio/Commun
Module:Biblio/Références
Module:Unité
Module:Langue
– indirectement (chargé par Module:Biblio/Commun) si le paramètre langue est renseigné
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
local Video = { }
local Langue = require( 'Module:Langue' )
local Commun = require( 'Module:Biblio/Commun' )
local References = require( 'Module:Biblio/Références' )
local function role ( args, validArg , nomsRole )
local listeRole = { } -- contiendra un élément pour chaque nom
local role = validArg( nomsRole, nomsRole .. i ) --brouillon
local i = 1
-- boucle sur chaque élément, assemble toutes les caractéristiques et ajoute l'ensemble à la liste.
while role do
table.insert( listeRole, role )
i = i + 1
role = validArg( 'nom' .. i, 'last' .. i )
end
return listeRole
end
function Video.lienVideo( args )
-- La table wiki va recevoir tous les petits morceaux de texte, et sera concaténée à la fin.
-- Elle utilise la meta-table de TableBuilder, permettant d'utiliser les fonctions de la
-- librairie table comme des méthodes. minsert permet d'insérer plusieurs éléments en une
-- seule fois en, ignorant les paramètres nil.
local wiki = TableBuilder.new()
-- validArg renvoie 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 Commun.validTextArg( args, ... ) or false end
-- span initial (id) et libellé
local spanInitial, spanFinal = Commun.spanInitial ( args, validArg )
wiki.minsert( spanInitial, Commun.libelle( args ) )
-- Indication de langue
local indicLangue, codeLangue = Commun.indicationDeLangue ( args, validArg )
local dir, attributsLangue
if indicLangue and indicLangue ~= '' then
wiki.minsert( indicLangue, ' ' )
if codeLangue then
dir = Langue.directionLangue( codeLangue )
if dir == 'rtl' then
attributsLangue = ' lang="' .. codeLangue .. '" dir="rtl"'
else
dir = nil
attributsLangue = ' lang="' .. codeLangue .. '"'
end
end
end
-- titre + url
-- Volume
local volume = validArg( 'volume', 'vol' )
if volume then
wiki.minsert( ', ', Commun.vol, volume )
end
-- Liste des auteurs et de leurs responsabilités (principales et secondaires)
local listeResponsables = { } -- contiendra un élément pour chaque nom (sauf pour people si utilisé avec plusieurs noms)
local prenom
local nom = validArg( 'nom1', 'nom', 'last1', 'last' )
local auteur = validArg( 'auteur1', 'auteur', 'author1', 'author', 'people' )
if nom or auteur then
-- clarification des paramètres
args['prénom1'] = validArg( 'prénom1', 'prénom', 'first1', 'first' )
args['lien auteur1'] = validArg( 'lien auteur1', 'lien auteur', 'author-link' )
end
local i = 1
-- boucle sur chaque nom, assemble toutes les caractéristiques et ajoute l'ensemble à la liste.
while nom or auteur do
-- nom de l'auteur
if not auteur then
prenom = validArg( 'prénom' .. i, 'first' .. i )
nom = '<span class="nom_auteur">' .. nom .. '</span>'
if prenom then
auteur = prenom .. ' ' .. nom
else
auteur = nom
end
end
-- lien sur l'auteur
auteur = Commun.fusionTexteLien( auteur, args['lien auteur' .. i], nil)
table.insert( listeResponsables, auteur )
i = i + 1
nom = validArg( 'nom' .. i, 'last' .. i )
auteur = validArg( 'auteur' .. i, 'author' .. i )
end
listeAuteurs = mw.text.listToText( listeResponsables )
if listeAuteurs then
wiki.minsert( ", " .. listeAuteurs )
end
local acteur = role ( args, validArg , {'acteur', 'actor'} )
if acteur then wiki.minsert( ', ', acteur ) end
local realisateur = role ( args, validArg , {'réalisateur', 'director'} )
if realisateur then wiki.minsert( ', ', realisateur ) end
local producteur = role ( args, validArg , {'producteur', 'producer'} )
if producteur then wiki.minsert( ', ', producteur ) end
local scenariste = role ( args, validArg , {'scénariste', 'scenarist', 'scriptwriter'} )
if scenariste then wiki.minsert( ', ', scenariste ) end
local contributeur = role ( args, validArg , {'contributeur', 'contributor'} )
if contributeur then wiki.minsert( ', ', contributeur ) end
local invite = role ( args, validArg , {'invité', 'guest'} )
if invite then wiki.minsert( ', ', invite ) end
local listeAuteurs
local et_al = ''
if validArg( 'et al.', 'et alii' ) then
et_al = " ''" .. abr { "et al.", "et alii (et d’autres)" } .. "''"
wiki.minsert( ', ' .. et_al )
end
-- Émission
local emission = validArgs('émission')
if emission then
wiki.minsert( ", dans ''" .. emission .. "''" )
end
-- Chaîne
local chaine = validArgs('chaîne')
if chaine then
wiki.minsert( " sur " .. chaine )
end
-- Date
local date = validArg('date', 'année', 'year' )
if date then
local lrm
if Langue.nonLatin( wiki.concat() ) then
lrm = '‎'
end
wiki.minsert( ',', lrm, ' ', Commun.inscriptionDate( args ) )
-- le &lrm est une marque de texte gauche à droite, utile si le texte qui précède est en droite à gauche (arabe, hébreux...)
end
-- Durée
-- Lieu et éditeur
local lieu = validArg( 'lieu', 'location', 'place' )
if lieu then
wiki.minsert( ', ', lieu )
end
local editeur = validArg( 'éditeur', 'édition', 'editeur', 'edition', 'publisher' )
if editeur then
local lienEditeur = validArg( 'lien éditeur' )
wiki.minsert( ', ', Commun.fusionTexteLien( editeur, lienEditeur, nil ) )
end
-- Temps
local temps = validArg( 'temps', 'time' )
if temps then
wiki.minsert( '. La scène se produit à ', temps , '.')
end
-- Lien vers l'ouvrage en ligne (isbn, issn, pmid, doi, lire en ligne, résumé...)
wiki.minsert( References.affichageLiensExternes( args, validArg, false, true ) )
-- Fin du span (id) et de la description de l'ouvrage
wiki.minsert( spanFinal )
-- extrait
local extrait = validArg( 'citation', 'extrait', 'quote' )
if citation then
if codeLangue then
citation = Langue.lang{ codeLangue, citation }
end
wiki.minsert( '\194\160: <span class="citation">« ' .. citation .. ' »</span>' )
end
return wiki.concat()
end
return Video