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

Contenu supprimé Contenu ajouté
Correction de bugs ; responsabiliteSecondaire : ajout postface
COinS : réécriture
Ligne 232 :
end
 
-- voir Modèle:COinS bibliographique
function Biblio.COinS ( frame )
local args = extractArgs ( frame )
-- la table field contient les couples 'nom Coins normalisé' - 'nom du paramètre du modèle' correspondant.
local fields = {
chapitre = { 'book', { '.genre=', 'bookitem' }, { 'btitle', 'titre'}, { 'atitle', 'titre section' } },
article = { 'journal', { 'genre', 'article' }, { 'atitle', 'titre'}, { 'jtitle', 'périodique' } },
ouvrage = { 'book', { 'genre', 'bookitem' }, { 'btitle', 'titre'}, { 'atitle', 'titre section' } },
soustitre = { '.stitle=', 'sous-titre' },
{ '.volume=', 'volume' },
{ '.issue=', 'numéro' },
{ '.pages=' , 'pages' },
{ '.spage=', 'page début' },
{ '.tpages=', 'pages totales' },
{ '.place=', 'lieu' },
{ '.pub=', 'éditeur' },
{ '.edition=' , 'édition' },
{ '.isbn=', 'isbn' },
{ '.issn=', 'issn' },
{ '_id=info:doi/', 'doi' },
{ '_id=info:pmid/', 'pmid' },
{ '_id=info:oclcnum/' , 'oclc' },
{ '_id=', 'url' },
wikipedia = { '_id=info:sid/fr.wikipedia.org:', mw.title.getCurrentTitle().fullText }
}
local liste = { }
local wikiText = '<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=' .. mw.uri.encode ( 'info:ofi/fmt:kev:mtx:' )
-- la fonction insert liste ajoute à la table 'liste' un couple 'nom Coins normalisé' - 'donnédonnée'
-- en fonction des donnée contenu dans tab.
-- Si istexte = true, le deuxième élément de tab est considéré comme du texte,
-- sinon comme le nom d'un paramètre.
local function insertList ( tabkey, istextevalue, prefix )
localprefix param= prefix or ''
if istexteoption thenand option ~= '' then
table.insert ( liste, tab[1]key .. '=' .. mw.uri.encode ( paramprefix .. option ) )
param = tab[2]
else
param = args [ tab[2] ] or ''
end
if param ~= '' then
table.insert ( liste, tab[1] .. mw.uri.encode ( param ) )
return true
end
end
-- norme du COinS
insertList ( datePub'ctx_ver', 'Z39.88-2004' )
-- genre, titre et sous-titre
local fieldstabGenre = {
chapitre = { 'book', { '.genre=', 'bookitem' }, { 'rft.btitle', 'titre'}, { 'rft.atitle', 'titre section' } },
article = { 'journal', { 'genre', 'article' }, { 'rft.atitle', 'titre'}, { 'rft.jtitle', 'périodique' } },
ouvrage = { 'book', { 'genrebook', 'bookitem' }, { 'rft.btitle', 'titre'}, { 'rft.atitle', 'titre section' } },
}
local genre = fields [ args.genre ]
if not genre then
return ''
end
table.insertinsertList ( liste'rft_val_fmt', genre [1], 'info:ofi/fmt:kev:mtx:' )
insertList ( 'rft.genre', genre [2], true)
insertList ( genre [3], args.titre )
insertList ( genre [4], args [ genre [5] ] )
insertList ( fields'rft.soustitrestitle', args ['sous-titre'] )
-- liste des auteur, noms - prénoms
if insertList ( 'rft.aulast', args.nom1 ) then
insertList ( 'rft.aufirst', args [ 'prénom1' ] )
end
insertList ( 'rft.au', args.auteur )
for i = 1, 10 do
iflocal insertListnom (= {args 'aulast',[ 'nom' .. i } ) then]
if nom == nil insertListor (nom {== 'aufirst', 'prénom' .. i } )then
parambreak = tab[2]
else
paramlocal prenom = args [ tab[2]'prénom' .. i] or ''
if paramprenom and prenom ~= '' then
prenom = ', ' .. prenom
end
insertList ( 'rft.au', nom .. prenom )
end
end
-- date
local datePub = Date.dateISO { args [ 'dateannée' ], 'date'args.mois, args.jour }
if datePub then
if args [ 'année' ] and args [ 'année' ] ~= '' then
localinsertList mois, jour =( 'rft.date', ''datePub )
else
if args.mois and args.mois ~= '' then
insertList mois =( '-rft.date' .. Date.prepend (, args.mois, '0',date 2)
end
if args.jour and args.jour ~= '' then
jour = '-' .. Date.prepend ( args.jour, '0', 2)
end
datePub = { 'date', args [ 'année' ] .. mois .. jour }
end
insertList ( datePub )
-- doonée phisique de la publication
-- autres renseignements (non nommé dans le table fields
insertList {( 'rft.volume=', 'args.volume' },)
for i = 1, #fields do
insertList ( fields'rft.issue', args [i 'numéro' ] )
insertList {( 'rft.pages=' , 'args.pages' },)
end
insertList {( 'rft.spage=', args [ 'page début' },] )
insertList {( 'rft.tpages=', args [ 'pages totales' },] )
-- donnée sur l'éditeur
insertList {( 'rft.place=', 'args.lieu' },)
insertList {( 'rft.pub=', args [ 'éditeur' },] )
insertList {( 'rft.edition=' , args [ 'édition' },] )
-- pageréférences Wikipediainternationales
insertList ( fields'rft.wikipediaisbn', trueargs.isbn )
insertList {( 'rft.issn=', 'args.issn' },)
insertList ( 'rft_id', args.doi, 'info:doi/' )
insertList ( 'rft_id', args.pmid, 'info:pmid/' )
insertList ( 'rft_id', args.oclc, 'info:oclcnum/' )
insertList ( 'rft_id', args.url )
-- referer : page Wikipedia ou se trouve cette référence
wikiText = wikiText .. table.concat ( liste, '&rft') .. '">&thinsp;</span>'
insertList ( wikipedia = {'rfr_id', '_id=info:sid/fr.wikipedia.org:', .. mw.title.getCurrentTitle().fullText, 'info:sid/' })
wikiTextreturn '<span class="Z3988" wikiTexttitle="' .. table.concat ( liste, '&rft') .. '">&thinsp;</span>'
return wikiText
end