« Module:Biblio/Article » : 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)
ajout responsabilité secondaire après le titre s'il n'y a pas d'auteur (comme Ouvrage), (bis, après correction de bug)
 
(57 versions intermédiaires par le même utilisateur non affichées)
Ligne 6 : Ligne 6 :
local Outils = require( 'Module:Outils' )
local Outils = require( 'Module:Outils' )
local TableBuilder = require( 'Module:TableBuilder' )
local TableBuilder = require( 'Module:TableBuilder' )
local Langue -- = require( 'Module:Langue' )   ne sera chargé que si nécessaire.
local Langue = require( 'Module:Langue' )




Ligne 18 : Ligne 18 :
-- validArg renvoi le premier paramètre non vide, ou nil s'ils sont tous vides.
-- 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.
-- Seul les noms des paramètres doivent être transmis à la fonction.
local validArg = function ( ... ) return Outils.validTextArg( args, ... ) end
local validArg = function ( ... ) return Commun.validTextArg( args, ... ) or false end
-- variable servant à la catégorisation
-- table servant à la catégorisation
local categLangue, categAuteur, categCoauteur, categTitre, categPeriodique
args.categ = {}
-- clarification paramètre nécéssaire pour les coins
-- clarification paramètre nécessaire pour les COinS
args['périodique'] = validArg( 'périodique', 'revue', 'journal' )
args['périodique'] = validArg( 'périodique', 'revue', 'journal' )
args.titre = validArg( 'titre', 'title' )
args.titre = validArg( 'titre', 'title' )
args.passage = validArg( 'pages', 'page', 'passage', 'p.', 'pp.' )
args['format électronique'] = args.format
args.format = false
-- COinS, id et libelé
-- span initial (id) et libellé
wiki.minsert( Commun.COinS( args, validArg, 'article' ) )
local spanInitial, spanFinal = Commun.spanInitial ( args, validArg )
wiki.minsert( Commun.spanInitial ( args, validArg ) )
wiki.minsert( spanInitial,  Commun.libelle( args ) )
if validArg( 'libellé' ) then
wiki.minsert( '<small>[', args['libellé'], ']</small> ' )
end
-- indication de langue
-- indication de langue
local indicLangue, codeLangue, categLangue = Commun.indicationDeLangue ( args, validArg )
local indicLangue, codeLangue = Commun.indicationDeLangue ( args, validArg )
wiki.minsert( indicLangue, ' ' )
if Outils.notEmpty( indicLangue ) then
wiki.minsert( indicLangue, ' ' )
end
-- Liste des auteurs et de leur responsabilités (principale et secondaire)
-- Liste des auteurs et de leur responsabilités (principale et secondaire)
if validArg( 'nom1', 'nom', 'auteur', 'auteurs', 'last1', 'last', 'author1', 'author' ) then
local auteur = validArg( 'nom1', 'nom', 'auteur1', 'auteur', 'auteurs', 'auteur institutionnel', 'last1', 'last', 'author1', 'author' )
if auteur then
if validArg( 'auteurs' ) then
if validArg( 'auteurs' ) then
wiki.insert( args.auteurs )
wiki.minsert( args.auteurs )
else  
else
wiki.insert( Commun.responsabilitePrincipale( args, validArg ) )
wiki.minsert( Commun.responsabilitePrincipale( args, validArg ) )
end
end
wiki.minsert( Commun.responsabiliteSecondaire( args, validArg ), ', ' )
wiki.minsert( Commun.responsabiliteSecondaire( args, validArg ), ', ' )
categAuteur = validArg( 'auteur', 'auteurs', 'author1', 'author', 1, 2, 3, 4 )
args.categ.auteur = validArg( 'auteur', 'auteurs', 'author1', 'author', 1, 2, 3, 4 )
categCoauteur = validArg( 'coauteurs', 'coauteur', 'coauthors' )
args.categ.coauteur = validArg( 'coauteurs', 'coauteur', 'coauthors' )
end
end
Ligne 55 : Ligne 58 :
if args.titre then
if args.titre then
if codeLangue then
if codeLangue then
Langue = Langue or require( 'Module:Langue' )
local dir = Langue.directionLangue( codeLangue )
local dir = Langue.directionLangue( codeLangue )
if dir == 'rtl' then dir = '" dir="rtl'
if dir == 'rtl' then dir = '" dir="rtl'
else dir = nil
else dir = nil
end
end
wiki.minsert( '<span lang="', codeLangue, dir, '">')
wiki.minsert( '« <cite  style="font-style:normal;" lang="', codeLangue, dir, '">')
else
wiki.minsert( '« <cite  style="font-style:normal;">')
end
end
local lienTitre = validArg( 'lien titre' )
local titre, sousTitre = args.titre, validArg( 'sous-titre' )
if lienTitre then
if sousTitre then
wiki.minsert( '[[', lienTitre, '|' )
titre = titre .. ' : ' .. sousTitre
end
end
titre = Commun.fusionTexteLien( titre, args['lien titre'], args.categ )
wiki.insert( args.titre )  
wiki.minsert( '« <cite style="font-style:normal;">', titre, '</cite> »', codeLangue and '</span>' )
else
if validArg( 'sous-titre' ) then
args.categ.titre = true
wiki.minsert( ( codeLangue and ': ' ) or ' : ', args['sous-titre'] )
wiki.minsert( Outils.erreur( '[[Modèle:Article|{{Article}}]] : 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( ' ', traductionTitre, ' »]' )
end
if not auteur then
local responsabiliteSecondaire = Commun.responsabiliteSecondaire( args, validArg )
if responsabiliteSecondaire then
wiki.minsert( ' ', responsabiliteSecondaire )
end
end
wiki.minsert( lienTitre and ']]' )
end
 
wiki.insert( '</cite> »' )
-- Nature du document et établissement (pour les thèses...)
else
local nature = validArg( 'nature article', 'nature ouvrage' )
wiki.insert( Outils.erreur( 'paramètre « <code>titre</code> » manquant' ) )
if nature then
categTitre = true
wiki.minsert( ' (', nature, ')')
end
local etablissement = validArg( 'établissement' )
if etablissement then
wiki.minsert( ', ', etablissement )
end
end
-- périodique
-- périodique
if validArg( 'périodique' ) then
local periodique = validArg( 'périodique' )
wiki.insert( ', <i>' )
if periodique then
if validArg( 'lien périodique' ) then
-- on applique le code langue spécifique ou celui de l'article
wiki.minsert( '[[', args['lien périodique'], '|', args['périodique'], ']]' )
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['lien périodique'], args.categ )
if Langue.nonLatin( periodique ) then
-- caractères non latin donc police droite
wiki.minsert( ', ', periodiqueEtLien )
else
else
wiki.insert( args['périodique'] )
-- le titre et son lien éventuel son affichés en italique
wiki.minsert( ', <i>', periodiqueEtLien, '</i>' )
end
end
wiki.insert( '</i>' )
else
else
wiki.insert( Outils.erreur( 'paramètre « <code>périodique</code> » manquant' ) )
args.categ.periodique = true
categPeriodique = true
if args.categ.titre 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
end
-- références : lieu, éditeur
-- références : lieu, éditeur
if validArg( 'lieu édition', 'location' ) then
local lieu = validArg( 'lieu', 'lieu édition', 'location' )
wiki.minsert( ', ', validArg( 'lieu édition', 'location' ) )
if lieu then
end
wiki.minsert( ', ', lieu )
end
local editeur = validArg( 'éditeur', 'publisher' )
local editeur = validArg( 'éditeur', 'publisher' )
if editeur then
if editeur then
wiki.minsert( ', ', validArg( 'lieu édition', 'location' ) )
local lienEditeur = validArg( 'lien éditeur' )
if validArg( 'lien éditeur' ) then
wiki.minsert( ', ', Commun.fusionTexteLien( editeur, lienEditeur, args.categ ) )
wiki.minsert( '[[', args['lien éditeur'], '|', editeur, ']]' )
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
else
wiki.insert( editeur )
if string.match( serie, '<sup>e</sup>$') then
wiki.minsert( ', ', serie, ' série' )
else
wiki.minsert( ', série ', serie )
end
end
end
end
end
local volume = validArg( 'volume', 'vol' )
-- références : série, volume
if volume then
if validArg( 'série' ) then
wiki.minsert( ', ', Commun.vol, volume )
wiki.minsert( ', ', Outils.ordinal( args['série'], true ), ' série' )
end
if validArg( 'volume', 'vol' ) then
wiki.minsert( ', ', Commun.vol, validArg( 'volume', 'vol' ) )
end
end
if validArg( 'tome' ) then
local tome = validArg( 'tome' )
wiki.minsert( ', ', Commun.tome, args.tome )
if tome then
wiki.minsert( ', ', Commun.tome, tome )
end
end
local titreVolume = validArg( 'titre volume', 'titre vol' )
local titreVolume = validArg( 'titre volume', 'titre vol' )
if titreVolume then
if titreVolume then
if codeLangue then
if codeLangue then
Langue = Langue or require( 'Module:Langue' )
wiki.minsert( ' ', Langue.lang{ codeLangue, '« ' .. titreVolume .. ' »' } )
titreVolume = Langue.lang{ codeLangue, titreVolume }
else
end
wiki.minsert( ' « ', titreVolume, ' »' )
wiki.insert( ' « ', titreVolume, ' »' )
end
end
end
-- références : n° du périodique et titre du n° et date de publication
-- références : n° du périodique et titre du n° et date de publication
if validArg( 'numéro', 'no', 'issue' ) then
local numero = validArg( 'numéro', 'no', 'issue' )
wiki.minsert( ', ', validArg( 'numéro', 'no', 'issue' ) )
if numero then
wiki.minsert( ', ', Commun.numero, numero )
end
end
local titreNumero = validArg( 'titre numéro', 'titre no' )
local titreNumero = validArg( 'titre numéro', 'titre no' )
if titreNumero then
if titreNumero then
if codeLangue then
if codeLangue then
Langue = Langue or require( 'Module:Langue' )
wiki.minsert( ' ', Langue.lang{ codeLangue, '« ' .. titreNumero .. ' »'  } )
titreNumero = Langue.lang{ codeLangue, titreNumero }
else
end
wiki.minsert( ' « ', titreNumero, ' »' )
wiki.insert( ' « ', titreNumero, ' »' )
end
end
end
if validArg( 'année', 'date', 'year' ) then
if validArg( 'année', 'date', 'year' ) then
wiki.minsert( ', ', Commun.inscriptionDate( args ) )
args.mois = validArg( 'mois', 'saison' )
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...)
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( '[[Modèle:Article|{{Article}}]] : 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
end
-- pages
-- pages
if validArg( 'pages', 'page', 'passage', 'p.', 'pp.' ) then
local page =  validArg( 'passage', 'pages', 'page', 'p.', 'pp.' )
wiki.minsert( ', ', validArg( 'pages', 'page', 'passage', 'p.', 'pp.' ) )
if page then
if string.match ( page, '^[%dIVXL]' ) then
wiki.minsert( ', ', Commun.page, page )
else
wiki.minsert( ', ', page )
end
end
end
local noArticle = validArg( 'numéro article' )
-- lien vers l'ouvrage en ligne
if noArticle then
if validArg( 'url texte', 'url', 'issn', 'doi', 'pmid', 'résumé', 'ISSN',  'lire en ligne', 'isbn', 'texte', 'présentation en ligne', 'issn1', 'ISBN', 'PMID', 'pmcid', 'pmc', 'DOI', 'jstor'  ) then
wiki.minsert( ', article ', Commun.numero, noArticle )
local enligne = TableBuilder.new(  )
end
enligne.minsert( References.isbn( args, validArg ), References.issn( args, validArg ) )
-- lien vers l'article en ligne (isbn, issn, pmid, doi, lire en ligne, résumé...)
wiki.minsert( References.affichageLiensExternes( args, validArg, true, false ) )
enligne.minsert(
-- consulté le n'est plus affiché, voir [[Discussion_modèle:Ouvrage/Archive_5#.C3.89volution_documentation]]
References.pmid( validArg( 'pmid', 'PMID' ) ),
References.pmcid ( validArg( 'pmcid', 'pmc' ) ),
local patternPonct = '[,.;:!?]$'
References.doi( validArg( 'doi', 'DOI' ) ),
local ponctuation = wiki.concat():gsub( '%b<>', '' ):match( patternPonct )
References.jstor( validArg( 'jstor' ) )  
)
-- ajout des méthadonnées COinS (ContextObjects in Spans)
wiki.minsert( Commun.COinS( args, validArg, 'article' ) )
if validArg( 'présentation en ligne', 'résumé' ) then
enligne.insert( References.enLigne{
-- fin du span (id) et de la description de l'ouvrage
lien = validArg( 'présentation en ligne', 'résumé' ),
wiki.minsert( spanFinal )
texte = 'résumé',
} )
-- citation et commentaire de cet ouvrage
end
local citation = validArg( 'extrait', 'quote', 'citation' )
if validArg( 'url texte', 'url', 'lire en ligne', 'texte' ) then
if citation then
enligne.insert(
wiki.minsert( ' :<blockquote>« ', citation, ' »</blockquote>' )
References.enLigne{
end
lien = validArg( 'url texte', 'url', 'lire en ligne', 'texte' ),
texte = 'texte intégral',
if validArg( 'plume' ) then
} .. ( References.indicationDeFormat( args.format ) or '' )
local point
)
if not citation and not ponctuation then
end
point = '.'
if validArg( 'consulté le', 'accessdate', 'consulté' ) then
enligne.insert( 'consulté le ' .. Outils.nobr( validArg( 'consulté le', 'accessdate', 'consulté' ) ) )
end
end
 
wiki.minsert( point, Commun.plume )
wiki.minsert( ' <small>', mw.text.nowiki( '[' ), enligne.concat( ', ' ),  ']</small>' )
end
end
-- fin des span (COinS et id) et de la description de l'article
wiki.insert( '</span></span>' )
-- citation et commentaire de cet ouvrage
if validArg( 'extrait', 'quote' ) then
wiki.minsert( ' :<blockquote>', args.extrait, '</blockquote>' )
end 
wiki.minsert( Commun.commentaire( args ) )
wiki.minsert( Commun.commentaire( args ) )
if mw.title.getCurrentTitle().namespace == 0 then
if mw.title.getCurrentTitle().namespace == 0 then
wiki.minsert(  
wiki.minsert(
categAuteur and '[[Catégorie:Utilisation du paramètre auteur dans le modèle article]]',
args.categ.coauteur and '[[Catégorie:Recension temporaire pour le modèle Article|coauteur]]',
categCoauteur and '[[Catégorie:Recension temporaire pour le modèle Article]]',
args.categ.langue  and '[[Catégorie:Page du modèle Article comportant une erreur|langue]]',
( categLangue or categTitre or categPeriodique ) and '[[Catégorie:Page du modèle Article comportant une erreur]]'
args.categ.titre and '[[Catégorie:Page du modèle Article comportant une erreur|titre]]',
args.categ.periodique and '[[Catégorie:Page du modèle Article comportant une erreur|périodique]]',
args.categ.date and '[[Catégorie:Page du modèle Article comportant une erreur|date]]',
args.categ.lienExterne and '[[Catégorie:Page du modèle Article comportant une erreur|externe]]',
args.categ.isbnInvalid and '[[Catégorie:Page avec ISBN invalide]]',
args.categ.issnInvalid and '[[Catégorie:Page avec ISSN invalide]]'
)
)
end
if codeLangue then
if Langue.directionLangue( codeLangue ) == 'rtl' then
wiki.minsert( '[[Catégorie:Recension temporaire pour le modèle Article|rtl]]' )
end
end
end

Dernière version du 22 avril 2017 à 08:18

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' )


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['périodique'] = validArg( 'périodique', 'revue', 'journal' ) args.titre = validArg( 'titre', 'title' ) args.passage = validArg( 'pages', 'page', 'passage', 'p.', 'pp.' ) args['format électronique'] = 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 ) 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 ) 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( '') end

local titre, sousTitre = args.titre, validArg( 'sous-titre' ) if sousTitre then titre = titre .. ' : ' .. sousTitre end titre = Commun.fusionTexteLien( titre, args['lien titre'], args.categ )

wiki.minsert( '« ', titre, ' »', codeLangue and '' ) else args.categ.titre = true wiki.minsert( Outils.erreur( '[[Modèle:Article|{{Article}} : paramètre « titre » manquant, paramètre « périodique » manquant, paramètre « année » ou « date » manquant]] : paramètre « titre » manquant' ) ) end

-- Titre original et traducteur local traductionTitre = validArg( 'traduction titre', 'titre original' ) if traductionTitre and traductionTitre ~= args.titre then wiki.minsert( ' [« ', traductionTitre, ' »]' ) 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['lien périodique'], 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( ', ', periodiqueEtLien, '' ) end

else args.categ.periodique = true if args.categ.titre then wiki.minsert( ', ', Outils.erreur( 'paramètre « périodique » manquant' ) ) else wiki.minsert( ', ', Outils.erreur( '[[Modèle:Article|{{Article}} : paramètre « titre » manquant, paramètre « périodique » manquant, paramètre « année » ou « date » manquant]] : paramètre « périodique » 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, 'e$') 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 « année » ou « date » manquant' ) ) else wiki.minsert( ', ', Outils.erreur( '[[Modèle:Article|{{Article}} : paramètre « titre » manquant, paramètre « périodique » manquant, paramètre « année » ou « date » manquant]] : paramètre « année » ou « date » 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, '^[%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'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 Discussion_modèle:Ouvrage/Archive_5#.C3.89volution_documentation

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( ' :

« ', citation, ' »

' )

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