« Module:Biblio/Ouvrage » : différence entre les versions

De Lagny-sur-Marne Wiki
Aller à la navigation Aller à la recherche
0x010D (discussion | contributions)
m A protégé « Module:Biblio/Ouvrage » : Modèle très utilisé ([Modifier=Autoriser uniquement les utilisateurs auto-confirmés] (infini) [Renommer=Autoriser uniquement les utilisateurs auto-confirmés] (infini))
0x010D (discussion | contributions)
ajout « traduction titre » et « nature ouvrage », paramètre « nolien » considéré catégorisé comme une erreur.
Ligne 22 : Ligne 22 :
args['titre chapitre'] = false
args['titre chapitre'] = false
args.chap = false
args.chap = false
args['sous-titre chapitre'] = validArg( 'sous-titre chapitre', 'sous-titre' )  
args['sous-titre chapitre'] = validArg( 'sous-titre chapitre', 'sous-titre' )
args['sous-titre'] = validArg( 'sous-titre ouvrage', 'sous-titre' )  
args['sous-titre'] = validArg( 'sous-titre ouvrage', 'sous-titre' )
if args['sous-titre chapitre'] == args['sous-titre'] then
if args['sous-titre chapitre'] == args['sous-titre'] then
args['sous-titre'] = false
args['sous-titre'] = false
Ligne 34 : Ligne 34 :
function Ouvrage.ouvrage( args, chapitre )
function Ouvrage.ouvrage( args, chapitre )
-- La table wiki va recevoir tout les petits bouts de texte, et sera concaténtée à la fin.
-- 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  
-- 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  
-- librairy table comme des mèthodes. minsert permet d'insérer plusieurs élément en une
-- seule fois en, ignorant les paramètre nil.
-- seule fois en, ignorant les paramètre nil.
local wiki = TableBuilder.new()
local wiki = TableBuilder.new()
Ligne 70 : Ligne 70 :
if validArg( 'auteurs' ) then
if validArg( 'auteurs' ) then
wiki.minsert( args.auteurs )
wiki.minsert( args.auteurs )
else  
else
wiki.minsert( Commun.responsabilitePrincipale( args, validArg, true ) )
wiki.minsert( Commun.responsabilitePrincipale( args, validArg, true ) )
end
end
local coauteur = validArg( 'co-auteur', 'coauteurs', 'coauteur', 'coauthors' )
local coauteur = validArg( 'co-auteur', 'coauteurs', 'coauteur', 'coauthors' )
Ligne 125 : Ligne 125 :
end
end
wiki.minsert( args.titre )  
wiki.minsert( args.titre )
local sousTitre = validArg( 'sous-titre' )
local sousTitre = validArg( 'sous-titre' )
if sousTitre then
if sousTitre then
wiki.minsert( ( codeLangue and ': ' ) or ' : ', sousTitre )
wiki.minsert( ( codeLangue and ': ' ) or ' : ', sousTitre )
end
end
if lienTitre then
if lienTitre then
wiki.minsert( ']]' )
wiki.minsert( ']]' )
end
end
wiki.minsert( '</cite>' )
wiki.minsert( '</cite>' )
Ligne 149 : Ligne 149 :
end
end
end
end
-- titre original et traducteur
-- titre original et traducteur
local original = validArg( 'titre original', 'titre vo' )
local original = validArg( 'titre original', 'titre vo', 'traduction titre' )
if original and original ~= args.titre then
if original and original ~= args.titre then
wiki.minsert( ' [« ', original, ' »]' )
wiki.minsert( ' [« ', original, ' »]' )
Ligne 181 : Ligne 181 :
Langue = Langue or require( 'Module:Langue' )
Langue = Langue or require( 'Module:Langue' )
wiki.minsert( Langue.lang{ codeLangue, titreVolTome },  [['']] )
wiki.minsert( Langue.lang{ codeLangue, titreVolTome },  [['']] )
else  
else
wiki.minsert( titreVolTome,  [['']] )
wiki.minsert( titreVolTome,  [['']] )
end
end
Ligne 196 : Ligne 196 :
if lienEditeur then
if lienEditeur then
wiki.minsert( ', [[', lienEditeur, '|', editeur, ']]' )
wiki.minsert( ', [[', lienEditeur, '|', editeur, ']]' )
else  
else
wiki.minsert( ', ', editeur )
wiki.minsert( ', ', editeur )
  end
end
end
-- nature du document
local nature = validArg( 'nature ouvrage' )
if nature then
wiki.minsert( ' (', nature, ')')
end
end
Ligne 213 : Ligne 219 :
local numeroCollection = validArg( 'numéro dans collection', 'numéro dans la collection' )
local numeroCollection = validArg( 'numéro dans collection', 'numéro dans la collection' )
if numeroCollection then
if numeroCollection then
wiki.minsert( ' (', Commun.numero, numeroCollection, ')' )  
wiki.minsert( ' (', Commun.numero, numeroCollection, ')' )
end
end
-- date, réimpression et éditions
-- date, réimpression et éditions
Ligne 247 : Ligne 253 :
local reference = validArg( 'référence' )
local reference = validArg( 'référence' )
if reference then
if reference then
wiki.minsert( ' ', Commun.detailEditions( reference ) )
wiki.minsert( ' ', Commun.detailEditions( reference ) )
end
end
local refSimple = validArg( 'référence simplifiée', 'ref' )
local refSimple = validArg( 'référence simplifiée', 'ref' )
if refSimple then
if refSimple then
wiki.minsert( ' ', Commun.detailEdition( refSimple ) )  
wiki.minsert( ' ', Commun.detailEdition( refSimple ) )
end
end
Ligne 267 : Ligne 273 :
References.doi( validArg( 'doi' ) ),
References.doi( validArg( 'doi' ) ),
References.pmid( validArg( 'pmid' ) ),
References.pmid( validArg( 'pmid' ) ),
References.jstor( validArg( 'jstor' ) )  
References.jstor( validArg( 'jstor' ) )
)
)
local url = validArg( 'lire en ligne', 'url', 'url texte' )
local url = validArg( 'lire en ligne', 'url', 'url texte' )
if url then
if url then
enligne.insert( References.enLigne{  
enligne.insert( References.enLigne{
lien = url,  
lien = url,
texte = 'lire en ligne',
texte = 'lire en ligne',
} )
} )
Ligne 279 : Ligne 285 :
local ecouterEnLigne = validArg( 'écouter en ligne' )
local ecouterEnLigne = validArg( 'écouter en ligne' )
if ecouterEnLigne then
if ecouterEnLigne then
enligne.insert( References.enLigne{  
enligne.insert( References.enLigne{
lien = ecouterEnLigne,  
lien = ecouterEnLigne,
texte = 'écouter en ligne',
texte = 'écouter en ligne',
} )
} )
Ligne 286 : Ligne 292 :
local resume = validArg( 'présentation en ligne', 'résumé' )
local resume = validArg( 'présentation en ligne', 'résumé' )
if resume then
if resume then
enligne.insert( References.enLigne{  
enligne.insert( References.enLigne{
lien = resume,
lien = resume,
texte = 'présentation en ligne',
texte = 'présentation en ligne',
Ligne 298 : Ligne 304 :
end
end
]=]
]=]
 
wiki.minsert( ' <small>', mw.text.nowiki( '(' ), enligne.concat( ', ' ),  ')</small>' )
wiki.minsert( ' <small>', mw.text.nowiki( '(' ), enligne.concat( ', ' ),  ')</small>' )
end
end
Ligne 322 : Ligne 328 :
wiki.minsert( ', « ', titreChapitre, ' »' )
wiki.minsert( ', « ', titreChapitre, ' »' )
end
end
end
end
local passage = validArg( 'passage', 'page' )
local passage = validArg( 'passage', 'page' )
if passage then
if passage then
wiki.minsert( ', ', Commun.page, passage )
wiki.minsert( ', ', Commun.page, passage )
end
end
-- ajout des méthadonnées COinS (ContextObjects in Spans)
-- ajout des méthadonnées COinS (ContextObjects in Spans)
Ligne 332 : Ligne 338 :
-- fin du span (id) et de la description de l'ouvrage
-- fin du span (id) et de la description de l'ouvrage
wiki.minsert( '</span>' )
wiki.minsert( '</span>' )
-- citation et commentaire de cet ouvrage  
-- citation et commentaire de cet ouvrage
local citation = validArg( 'extrait', 'citation' )
local citation = validArg( 'extrait', 'citation' )
if citation then
if citation then
wiki.minsert( ' :<blockquote>« ', citation, ' »</blockquote>' )
wiki.minsert( ' :<blockquote>« ', citation, ' »</blockquote>' )
end
end
if validArg( 'plume' ) then
if validArg( 'plume' ) then
wiki.minsert( Commun.plume )
wiki.minsert( Commun.plume )
Ligne 344 : Ligne 350 :
wiki.minsert( Commun.commentaire( args ) )
wiki.minsert( Commun.commentaire( args ) )
if mw.title.getCurrentTitle().namespace == 0 and modeNormal then
if mw.title.getCurrentTitle().namespace == 0 and modeNormal then
wiki.minsert(  
wiki.minsert(
categLangue and '[[Catégorie:Page du modèle Ouvrage comportant une erreur|langue]]',
categLangue and '[[Catégorie:Page du modèle Ouvrage comportant une erreur|langue]]',
categTitre and '[[Catégorie:Page du modèle Ouvrage comportant une erreur|titre]]',
categTitre and '[[Catégorie:Page du modèle Ouvrage comportant une erreur|titre]]',
Ligne 352 : Ligne 358 :
categTitreOuvrage and '[[Catégorie:Page du modèle Chapitre comportant une erreur|Ouvrage]]'
categTitreOuvrage and '[[Catégorie:Page du modèle Chapitre comportant une erreur|Ouvrage]]'
)
)
if args.nolien then
wiki.minsert( '[[Catégorie:Page du modèle Ouvrage comportant une erreur|nolien]]' )
end
end
end



Version du 23 octobre 2013 à 13:16

local Ouvrage = { }


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 Ouvrage.chapitre( args ) -- 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, ... ) end

-- titreChap est un paramètre différents de ceux du modèle ouvrage pour utilisé le même programme args.titreChap = validArg( 'titre chapitre', 'chap', 'titre' ) if args.titre == args.titreChap then args.titre = false end args.titre = validArg( 'titre ouvrage', 'ouvrage', 'titre' ) or false args['titre chapitre'] = false args.chap = false args['sous-titre chapitre'] = validArg( 'sous-titre chapitre', 'sous-titre' ) args['sous-titre'] = validArg( 'sous-titre ouvrage', 'sous-titre' ) if args['sous-titre chapitre'] == args['sous-titre'] then args['sous-titre'] = false end args['lien titre'] = validArg( 'lien titre ouvrage', 'lien titre' ) return Ouvrage.ouvrage( args, true ) end


function Ouvrage.ouvrage( args, chapitre ) -- 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, ... ) end local genre = ( chapitre and 'chapitre' ) or 'ouvrage'

--Variables servant à la catégorisation local categTitre, categTitreChapitre, categTitreOuvrage, categLangue local modeNormal = not validArg( 'nocat' )

-- clarification paramètre nécéssaire pour les coins args.titre = validArg( 'titre', 'title' ) or false args['pages totales'] = validArg( 'pages totales', 'pages' ) args.pages =


-- span initial (id) et libelé wiki.minsert( Commun.spanInitial ( args, validArg ) ) local libelle = validArg( 'libellé' ) if libelle then wiki.minsert( '[', libelle, '] ' ) end

-- indication de langue local incdicLangue, codeLangue, categLangue = Commun.indicationDeLangue ( args, validArg ) wiki.minsert( incdicLangue, ' ' )

-- Liste des auteurs et de leur responsabilités (principale et secondaire) local auteur = validArg( 'nom1', 'nom', 'auteur1', 'auteur', 'auteurs', 'last1', 'last', 'author1', 'author' ) if auteur then if validArg( 'auteurs' ) then wiki.minsert( args.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

-- Pour le modèle chapitre : affichage du chapitre if chapitre then if args.titreChap then wiki.minsert( '« ', args.titreChap ) if args['sous-titre chapitre'] then wiki.minsert( ( codeLangue and ': ' ) or ' : ', args['sous-titre chapitre'] ) end wiki.minsert( ' »' ) elseif modeNormal then wiki.minsert( Outils.erreur( ' [[Modèle:Chapitre|Modèle:Chapitre]] : paramètre « titre chapitre » manquant' ) ) categTitreChapitre = true end

if args.titre then wiki.minsert( ', dans ' ) end

local auteurOuvrage = validArg( 'auteurs ouvrage', 'auteur ouvrage' ) if auteurOuvrage then wiki.minsert( auteurOuvrage, ', ' ) end end

-- titre if args.titre then if codeLangue then Langue = Langue or require( 'Module:Langue' ) local dir = Langue.directionLangue( codeLangue ) if dir == 'rtl' then dir = '" dir="rtl' else dir = nil end

wiki.minsert( '') else wiki.minsert( '') end local lienTitre = validArg( 'lien titre' ) if lienTitre then wiki.minsert( '' ) end wiki.minsert( args.titre ) local sousTitre = validArg( 'sous-titre' ) if sousTitre then wiki.minsert( ( codeLangue and ': ' ) or ' : ', sousTitre ) end if lienTitre then wiki.minsert( '' ) end wiki.minsert( '' )

elseif modeNormal then if chapitre then categTitreOuvrage = true if categTitreChapitre then wiki.minsert( Outils.erreur( 'paramètre « titre ouvrage » manquant' ) ) else wiki.minsert( Outils.erreur( '[[Modèle:Chapitre|Modèle:Chapitre]] : paramètre « titre ouvrage » manquant' ) ) end else categTitre = true --wiki.minsert( Outils.erreur( '  : paramètre « titre » manquant' ) ) end end

-- titre original et traducteur local original = validArg( 'titre original', 'titre vo', 'traduction titre' ) if original and original ~= args.titre then wiki.minsert( ' [« ', original, ' »]' ) end if not auteur then local responsabiliteSecondaire = Commun.responsabiliteSecondaire( args, validArg ) if responsabiliteSecondaire then wiki.minsert( ' ', responsabiliteSecondaire ) end end

-- volume, tome 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 titreVolTome = validArg( 'titre volume', 'titre tome' ) if titreVolTome then if volume or tome then wiki.minsert( '' ) else wiki.minsert( , '' ) end if codeLangue then Langue = Langue or require( 'Module:Langue' ) wiki.minsert( Langue.lang{ codeLangue, titreVolTome }, '' ) else wiki.minsert( titreVolTome, '' ) end end

-- lieu et éditeur local lieu = validArg( 'lieu', 'location' ) if lieu then wiki.minsert( ', ', lieu ) end local editeur = validArg( 'éditeur', 'édition', 'editeur', 'edition', 'publisher' ) if editeur then local lienEditeur = validArg( 'lien éditeur' ) if lienEditeur then wiki.minsert( ', ', editeur, '' ) else wiki.minsert( ', ', editeur ) end end

-- nature du document local nature = validArg( 'nature ouvrage' ) if nature then wiki.minsert( ' (', nature, ')') end

-- collecion et numéro local collection = validArg( 'collection' ) if collection then wiki.minsert( ', ', Commun.coll, '« ', collection ) local serie = validArg( 'série' ) if serie then wiki.minsert( ' / ', serie ) end wiki.minsert( ' »' ) end local numeroCollection = validArg( 'numéro dans collection', 'numéro dans la collection' ) if numeroCollection then wiki.minsert( ' (', Commun.numero, numeroCollection, ')' ) end

-- date, réimpression et éditions local annee = validArg( 'année', 'date' ) if annee then wiki.minsert( ', ', Commun.inscriptionDate( args ) ) end local publi = validArg( 'réimpression', 'publi' ) if publi then wiki.minsert( ' (', Commun.reimpr, publi, ')' ) end local numeroEdition = validArg( "numéro d'édition" ) if numeroEdition then wiki.minsert( ', ', Outils.ordinal( numeroEdition, true ), Commun.ed ) end local premiereEdition = validArg( 'année première édition', 'origyear' ) if premiereEdition then wiki.minsert( ' (', Commun.premiere, Commun.ed, ' ', premiereEdition, ')' ) end

-- format et pages local format = validArg( 'format' ) if format then wiki.minsert( ', ', format ) end local pages = validArg( 'pages totales', 'pages' ) if pages then wiki.minsert( ', ', pages, Commun.nbp ) end

-- références local reference = validArg( 'référence' ) if reference then wiki.minsert( ' ', Commun.detailEditions( reference ) ) end local refSimple = validArg( 'référence simplifiée', 'ref' ) if refSimple then wiki.minsert( ' ', Commun.detailEdition( refSimple ) ) end

-- références ISBN, oclc, lccn, bnf... et liens en ligne if validArg( 'isbn', 'lire en ligne', 'présentation en ligne', 'oclc', 'url', 'lccn', 'issn', 'bnf', 'ISBN', 'isbn1', 'ISSN', 'dnb', 'doi', 'jstor', 'url texte', 'pmid', 'résumé' ) then local enligne = TableBuilder.new( )

enligne.minsert( References.isbn( args, validArg ), References.issn( args, validArg ) )

enligne.minsert( References.oclc( validArg( 'oclc' ) ), References.bnf ( validArg( 'bnf' ) ), References.lccn( validArg( 'lccn' ) ), References.dnb ( validArg( 'dnb' ) ), References.doi( validArg( 'doi' ) ), References.pmid( validArg( 'pmid' ) ), References.jstor( validArg( 'jstor' ) ) )

local url = validArg( 'lire en ligne', 'url', 'url texte' ) if url then enligne.insert( References.enLigne{ lien = url, texte = 'lire en ligne', } ) end local ecouterEnLigne = validArg( 'écouter en ligne' ) if ecouterEnLigne then enligne.insert( References.enLigne{ lien = ecouterEnLigne, texte = 'écouter en ligne', } ) end local resume = validArg( 'présentation en ligne', 'résumé' ) if resume then enligne.insert( References.enLigne{ lien = resume, texte = 'présentation en ligne', } ) end

--[=[ consulté le n'est plus affiché, voir Discussion_modèle:Ouvrage#Évolution documentation local cousulteLe = validArg( 'consulté le', 'accessdate', 'consulté' ) if cousulteLe then enligne.insert( 'consulté le ' .. Outils.nobr( cousulteLe ) ) end ]=]

wiki.minsert( ' ', mw.text.nowiki( '(' ), enligne.concat( ', ' ), ')' ) end

-- précision sue le passage concerné local partie = validArg( 'partie' ) if partie then wiki.minsert( ', partie ', Commun.romain( partie ) ) end local numeroChapitre = validArg( 'numéro chapitre', 'numéro' ) if numeroChapitre then wiki.minsert( ', ', Commun.chap, numeroChapitre ) end local titreChapitre = validArg( 'titre chapitre', 'chap', 'chapitre', 'chapter' ) if titreChapitre then if codeLangue then Langue = Langue or require( 'Module:Langue' ) titreChapitre = Langue.lang{ codeLangue, titreChapitre } end if numeroChapitre then wiki.minsert( ' (« ', titreChapitre, ' »)' ) else wiki.minsert( ', « ', titreChapitre, ' »' ) end end local passage = validArg( 'passage', 'page' ) if passage then wiki.minsert( ', ', Commun.page, passage ) end

-- ajout des méthadonnées COinS (ContextObjects in Spans) wiki.minsert( Commun.COinS( args, validArg, genre ) )

-- fin du span (id) et de la description de l'ouvrage wiki.minsert( '' )

-- citation et commentaire de cet ouvrage local citation = validArg( 'extrait', 'citation' ) if citation then

wiki.minsert( ' :

« ', citation, ' »

' )

end if validArg( 'plume' ) then wiki.minsert( Commun.plume ) end wiki.minsert( Commun.commentaire( args ) )


if mw.title.getCurrentTitle().namespace == 0 and modeNormal then wiki.minsert( categLangue and , categTitre and , categTitreChapitre and , categTitreOuvrage and ) if args.nolien then wiki.minsert( ) end end


return wiki.concat() end


return Ouvrage