Moduulin Fr:Biblio/Article käyttöohje
Tämä sivu on kopio. Tätä ohjetta muokataan muokkaamalla suomenkielisessä Wikipediassa olevaa alkuperäistä versiota jonka muutokset kopioituvat automaattisesti tälle sivulle. 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 Article = { }
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' )
function Article.article( 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 Commun.validTextArg( args, ... ) or false end
-- table servant à la catégorisation
args.categ = {}
-- clarification paramètre nécessaire pour les COinS
args = validArg( 'périodique', 'revue', 'journal' )
args.titre = validArg( 'titre', 'title' )
args.passage = validArg( 'pages', 'page', 'passage', 'p.', 'pp.' )
args = args.format
args.format = false
-- 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 )
-- fiwiki fix: removing language information from start of the line
-- if Outils.notEmpty( indicLangue ) then
-- wiki.minsert( indicLangue, ' ' )
-- end
-- Liste des auteurs et de leur responsabilités (principale et secondaire)
local auteur = validArg( 'nom1', 'nom', 'auteur1', 'auteur', 'auteurs', 'auteur institutionnel', 'last1', 'last', 'author1', 'author' )
if auteur then
if validArg( 'auteurs' ) then
wiki.minsert( args.auteurs )
if validArg( 'et al.', 'et alii' ) then
wiki.minsert( " ''", Outils.abr { "et al.", "et alii (et d’autres)" }, "''" )
end
else
wiki.minsert( Commun.responsabilitePrincipale( args, validArg ) )
end
wiki.minsert( Commun.responsabiliteSecondaire( args, validArg ), ', ' )
args.categ.auteur = validArg( 'auteur', 'auteurs', 'author1', 'author', 1, 2, 3, 4 )
args.categ.coauteur = validArg( 'coauteurs', 'coauteur', 'coauthors' )
end
-- titre, sous-titre
if args.titre then
if codeLangue then
local dir = Langue.directionLangue( codeLangue )
if dir == 'rtl' then dir = '" dir="rtl'
else dir = nil
end
wiki.minsert( '<span lang="', codeLangue, dir, '">')
end
local titre, sousTitre = args.titre, validArg( 'sous-titre' )
if sousTitre then
titre = titre .. ' : ' .. sousTitre
end
titre = Commun.fusionTexteLien( titre, args, args.categ )
wiki.minsert( '<cite style="font-style:normal;">', titre, '</cite>', codeLangue and '</span>' )
else
args.categ.titre = true
wiki.minsert( Outils.erreur( '] : paramètre « <code>titre</code> » manquant' ) )
end
-- Titre original et traducteur
local traductionTitre = validArg( 'traduction titre', 'titre original' )
if traductionTitre and traductionTitre ~= args.titre then
wiki.minsert( ' ' )
end
if not auteur then
local responsabiliteSecondaire = Commun.responsabiliteSecondaire( args, validArg )
if responsabiliteSecondaire then
wiki.minsert( ' ', responsabiliteSecondaire )
end
end
-- Nature du document et établissement (pour les thèses...)
local nature = validArg( 'nature article', 'nature ouvrage' )
if nature then
wiki.minsert( ' (', nature, ')')
end
local etablissement = validArg( 'établissement' )
if etablissement then
wiki.minsert( ', ', etablissement )
end
-- périodique
local periodique = validArg( 'périodique' )
if periodique then
-- on applique le code langue spécifique ou celui de l'article
local languePeriodique = validArg( 'langue périodique' )
if languePeriodique then
languePeriodique = Langue.codeLangue2( languePeriodique )
end
languePeriodique = languePeriodique or codeLangue
if languePeriodique and languePeriodique ~= 'fr' then
periodique = Langue.lang{ languePeriodique, periodique }
end
local periodiqueEtLien = Commun.fusionTexteLien( periodique, args, args.categ )
if Langue.nonLatin( periodique ) then
-- caractères non latin donc police droite
wiki.minsert( ', ', periodiqueEtLien )
else
-- le titre et son lien éventuel son affichés en italique
wiki.minsert( ', <i>', periodiqueEtLien, '</i>' )
end
else
args.categ.periodique = true
if args.categ.titre then
wiki.minsert( ', ', Outils.erreur( 'paramètre « <code>périodique</code> » manquant' ) )
else
wiki.minsert( ', ', Outils.erreur( '] : paramètre « <code>périodique</code> » manquant' ) )
end
end
-- références : lieu, éditeur
local lieu = validArg( 'lieu', 'lieu édition', 'location' )
if lieu then
wiki.minsert( ', ', lieu )
end
local editeur = validArg( 'éditeur', 'publisher' )
if editeur then
local lienEditeur = validArg( 'lien éditeur' )
wiki.minsert( ', ', Commun.fusionTexteLien( editeur, lienEditeur, args.categ ) )
end
-- références : série, volume
local serie = validArg( 'série' )
if serie then
if tonumber( serie ) then
wiki.minsert( ', ', Outils.ordinal( serie, true ), ' série' )
else
if string.match( serie, '<sup>e</sup>$') then
wiki.minsert( ', ', serie, ' série' )
else
wiki.minsert( ', série ', serie )
end
end
end
local volume = validArg( 'volume', 'vol' )
if volume then
wiki.minsert( ', ', Commun.vol, volume )
end
local tome = validArg( 'tome' )
if tome then
wiki.minsert( ', ', Commun.tome, tome )
end
local titreVolume = validArg( 'titre volume', 'titre vol' )
if titreVolume then
if codeLangue then
wiki.minsert( ' ', Langue.lang{ codeLangue, '' .. titreVolume .. '' } )
else
wiki.minsert( '', titreVolume, '' )
end
end
-- références : n° du périodique et titre du n° et date de publication
local numero = validArg( 'numéro', 'no', 'issue' )
if numero then
wiki.minsert( ', ', Commun.numero, numero )
end
local titreNumero = validArg( 'titre numéro', 'titre no' )
if titreNumero then
if codeLangue then
wiki.minsert( ' ', Langue.lang{ codeLangue, '' .. titreNumero .. '' } )
else
wiki.minsert( '', titreNumero, '' )
end
end
if validArg( 'année', 'date', 'year' ) then
args.mois = validArg( 'mois', 'saison' )
wiki.minsert( ',‎ ', 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...)
else
args.categ.date = true
if args.categ.titre or args.categ.periodique then
wiki.minsert( ', ', Outils.erreur( 'paramètre « <code>année</code> » ou « <code>date</code> » manquant' ) )
else
wiki.minsert( ', ', Outils.erreur( '] : paramètre « <code>année</code> » ou « <code>date</code> » manquant' ) )
end
end
-- format livre
local format = validArg( 'format livre' )
if format then
wiki.minsert( ', ', format )
end
-- pages
local page = validArg( 'passage', 'pages', 'page', 'p.', 'pp.' )
if page then
if string.match ( page, '^' ) then
wiki.minsert( ', ', Commun.page, page )
else
wiki.minsert( ', ', page )
end
end
local noArticle = validArg( 'numéro article' )
if noArticle then
wiki.minsert( ', article ', Commun.numero, noArticle )
end
-- lien vers l'article en ligne (isbn, issn, pmid, doi, lire en ligne, résumé...)
wiki.minsert( References.affichageLiensExternes( args, validArg, true, false ) )
-- consulté le n'est plus affiché, voir ]
local patternPonct = '$'
local ponctuation = wiki.concat():gsub( '%b<>', '' ):match( patternPonct )
-- ajout des méthadonnées COinS (ContextObjects in Spans)
wiki.minsert( Commun.COinS( args, validArg, 'article' ) )
-- fin du span (id) et de la description de l'ouvrage
wiki.minsert( spanFinal )
-- citation et commentaire de cet ouvrage
local citation = validArg( 'extrait', 'quote', 'citation' )
if citation then
wiki.minsert( ' :<blockquote>« ', citation, ' »</blockquote>' )
end
if validArg( 'plume' ) then
local point
if not citation and not ponctuation then
point = '.'
end
wiki.minsert( point, Commun.plume )
end
wiki.minsert( Commun.commentaire( args ) )
if mw.title.getCurrentTitle().namespace == 0 then
wiki.minsert(
args.categ.coauteur and ']',
args.categ.langue and ']',
args.categ.titre and ']',
args.categ.periodique and ']',
args.categ.date and ']',
args.categ.lienExterne and ']',
args.categ.isbnInvalid and ']',
args.categ.issnInvalid and ']'
)
if codeLangue then
if Langue.directionLangue( codeLangue ) == 'rtl' then
wiki.minsert( ']' )
end
end
end
return wiki.concat()
end
return Article