Module:Biblio/Article : Différence entre versions
(série : prise en compte d'une série qui ne soit pas un nombre.) |
(ajout d'un alias "saison" pour le paramètre "mois") |
||
Ligne 181 : | Ligne 181 : | ||
end | end | ||
if validArg( 'année', 'date', 'year' ) then | if validArg( 'année', 'date', 'year' ) then | ||
+ | args.mois = validArg( 'mois', 'saison' ) | ||
wiki.minsert( ',‎ ', Commun.inscriptionDate( args ) ) | 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...) | -- le &lrm est une marque de texte gauche à droite, utile si le texte qui précède est en droite à gauche (arabe, hébreux...) |
Version du 28 février 2014 à 13:34
La documentation pour ce module peut être créée à Module:Biblio/Article/doc
local Article = { } 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 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 Outils.validTextArg( args, ... ) or false end -- variable servant à la catégorisation local categLangue, categAuteur, categCoauteur, categTitre, categPeriodique, categDate -- clarification paramètre nécéssaire pour les coins args['périodique'] = validArg( 'périodique', 'revue', 'journal' ) args.titre = validArg( 'titre', 'title' ) args.passage = validArg( 'pages', 'page', 'passage', 'p.', 'pp.' ) -- span initial (id) et libelé wiki.minsert( Commun.spanInitial ( args, validArg ) ) local libelle = validArg( 'libellé' ) if libelle then wiki.minsert( '<small>[', libelle, ']</small> ' ) end -- indication de langue local indicLangue, codeLangue, categLangue = Commun.indicationDeLangue ( args, validArg ) if Outils.notEmpty( indicLangue ) then wiki.minsert( indicLangue, ' ' ) end if codeLangue then Langue = require( 'Module:Langue' ) end -- Liste des auteurs et de leur responsabilités (principale et secondaire) if validArg( 'nom1', 'nom', 'auteur1', 'auteur', 'auteurs', 'last1', 'last', 'author1', 'author' ) then if validArg( 'auteurs' ) then wiki.minsert( args.auteurs ) else wiki.minsert( Commun.responsabilitePrincipale( args, validArg ) ) end wiki.minsert( Commun.responsabiliteSecondaire( args, validArg ), ', ' ) categAuteur = validArg( 'auteur', 'auteurs', 'author1', 'author', 1, 2, 3, 4 ) categCoauteur = 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 wiki.minsert( '« <cite style="font-style:normal;">') local lienTitre = validArg( 'lien titre' ) if lienTitre then wiki.minsert( '[[', lienTitre, '|' ) end wiki.minsert( args.titre ) local sousTitre = validArg( 'sous-titre' ) if sousTitre then wiki.minsert( ' : ', sousTitre ) end wiki.minsert( lienTitre and ']]' ) wiki.minsert( ' »</cite>', codeLangue and '</span>' ) else categTitre = true wiki.minsert( Outils.erreur( '[[Modèle:Article|{{Article}}]] : paramètre « <code>titre</code> » manquant' ) ) 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 Langue = Langue or require( 'Module:Langue' ) languePeriodique = Langue.codeLangue2( languePeriodique ) end languePeriodique = languePeriodique or codeLangue if languePeriodique and languePeriodique ~= 'fr' then periodique = Langue.lang{ languePeriodique, periodique } end -- le titre et son lien éventuel son affichés en italique wiki.minsert( ', <i>' ) local lienPeriodique = validArg( 'lien périodique' ) if lienPeriodique then wiki.minsert( '[[', lienPeriodique, '|', periodique, ']]' ) else wiki.minsert( periodique ) end wiki.minsert( '</i>' ) else categPeriodique = true if categTitre then wiki.minsert( ', ', Outils.erreur( 'paramètre « <code>périodique</code> » manquant' ) ) else wiki.minsert( ', ', Outils.erreur( '[[Modèle:Article|{{Article}}]] : 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' ) if lienEditeur then wiki.minsert( ', [[', lienEditeur, '|', editeur, ']]' ) else wiki.minsert( ', ', editeur ) end 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 categDate = true if categTitre or categPeriodique then wiki.minsert( ', ', Outils.erreur( 'paramètre « <code>année</code> » ou « <code>date</code> » manquant' ) ) else wiki.minsert( ', ', Outils.erreur( '[[Modèle:Article|{{Article}}]] : paramètre « <code>année</code> » ou « <code>date</code> » manquant' ) ) end end -- pages local page = validArg( 'passage', 'pages', 'page', 'p.', 'pp.' ) if page then if string.match ( page, '^[%dIVXL]' ) 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'ouvrage en ligne if validArg( 'url texte', 'url', 'issn', 'doi', 'pmid', 'résumé', 'ISSN', 'lire en ligne', 'isbn', 'texte', 'présentation en ligne', 'issn1', 'ISBN', 'oclc', 'PMID', 'pmcid', 'pmc', 'DOI', 'jstor', 'bibcode', 'math reviews', 'arxiv' ) then local enligne = TableBuilder.new( ) enligne.minsert( References.isbn( args, validArg ), References.issn( args, validArg ) ) enligne.minsert( References.oclc( validArg( 'oclc' ) ), References.pmid( validArg( 'pmid', 'PMID' ) ), References.pmcid ( validArg( 'pmcid', 'pmc' ) ), References.doi( validArg( 'doi', 'DOI' ) ), References.jstor( validArg( 'jstor' ) ), References.bibcode( validArg( 'bibcode' ) ), References.mathreviews( validArg( 'math reviews' ) ), References.arxiv( validArg( 'arxiv' ) ) ) local resume = validArg( 'résumé', 'présentation en ligne' ) if resume then enligne.insert( References.enLigne{ lien = resume, texte = 'résumé', } ) end local url = validArg( 'url texte', 'url', 'lire en ligne', 'texte' ) if url then enligne.insert( References.enLigne{ lien = url, texte = 'lire en ligne', } .. ( References.indicationDeFormat( args.format ) or '' ) ) end --[=[ consulté le n'est plus affiché, voir [[Discussion_modèle:Ouvrage#Évolution documentation]] local consulteLe = validArg( 'consulté le', 'accessdate', 'consulté' ) if consulteLe then enligne.insert( 'consulté le ' .. Outils.nobr( consulteLe ) ) end ]=] wiki.minsert( ' <small>', mw.text.nowiki( '(' ), enligne.concat( ', ' ), ')</small>' ) end -- 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( '</span>' ) -- citation et commentaire de cet ouvrage local citation = validArg( 'extrait', 'quote', 'citation' ) if citation then wiki.minsert( ' :<blockquote>« ', citation, ' »</blockquote>' ) end wiki.minsert( Commun.commentaire( args ) ) if mw.title.getCurrentTitle().namespace == 0 then wiki.minsert( categCoauteur and '[[Catégorie:Recension temporaire pour le modèle Article|coauteur]]', categLangue and '[[Catégorie:Page du modèle Article comportant une erreur|langue]]', categTitre and '[[Catégorie:Page du modèle Article comportant une erreur|titre]]', categPeriodique and '[[Catégorie:Page du modèle Article comportant une erreur|périodique]]', categDate and '[[Catégorie:Page du modèle Article comportant une erreur|date]]' ) if citation and mw.ustring.sub( citation, 1, 1 ) == "«" then wiki.minsert( '[[Catégorie:Recension temporaire pour le modèle Article|guillemet]]' ) end if codeLangue then Langue = Langue or require( 'Module:Langue' ) if Langue.directionLangue( codeLangue ) == 'rtl' then wiki.minsert( '[[Catégorie:Recension temporaire pour le modèle Article|rtl]]' ) end end end return wiki.concat() end return Article