« Module:Biblio/Références » : différence entre les versions

Contenu supprimé Contenu ajouté
unstrip sur la date avant de la passer à découpage (consulté le). But : reconnaître la forme "1{{er}}" → il faudrait généraliser
issn : Ajout vérification longeur et clé sur l'ISSN ; affichageLiensExternes : simplification des tests sur 1er avec prise en compte des améliorations du module Date
Ligne 11 :
 
 
 
--[[
ISBN-10 and ISSN validator code calculates checksum across all isbn/issn digits including the check digit. ISBN-13 is checked in checkisbn().
Ligne 30 :
return temp % 11 == 0 -- returns true if calculation result is zero
end
 
-- Teste si une chaine ISBN est valide
function References.checkisbn( isbn_str )
Ligne 38 :
isbn_str = isbn_str:gsub( '[-%s]', '' ):gsub( 'x', 'X' ) -- supprime les traits d’union et espaces
local len = isbn_str:len()
if len == 10 and isbn_str:match( '^%d+X?$' ) then
return References.is_valid_isxn( isbn_str, 10 )
Ligne 50 :
end
end
 
function References.checkissn( issn_str )
if type( issn_str ) ~= 'string' then
return false
end
issn_str = issn_str:gsub( '[%s]', '' )
if issn_str:match( '^%d%d%d%d%-%d%d%d[%dxX]$' ) then
issn_str = issn_str:gsub( '-', '' ):gsub( 'x', 'X' ) -- supprime les traits d’union et espaces
return References.is_valid_isxn( issn_str, 8 )
end
end
 
-- voir Modèle:ISBN
Ligne 70 ⟶ 80 :
table.insert( liste, lien )
end
-- boucle sur les isbn2, 3...
while isbn do
Ligne 83 ⟶ 93 :
else
table.insert( liste, isbn .. avertissementInvalid )
if type( args.categIsbnInvalidcateg ) == 'table' truethen
args.categ.isbnInvalid = true
end
end
i = i + 1
isbn = validArg( 'isbn' .. i, 'ISBN' .. i )
Ligne 102 ⟶ 114 :
local liste = { }
local i = 1
local avertissementInvalid = '<sup style="color:red">[à vérifier : [[:Catégorie:Page avec ISSN invalide|ISSN invalide]]]</sup>'
local issn = validArg( 'issn', 'ISSN', 'issn1', 'ISSN1' )
Ligne 108 ⟶ 121 :
while issn do
-- vérifivation de la validité de l'ISSN
local lien = '<span class="plainlinks noarchive">[http://worldcat.org/issn/'
local issnValid = References.checkissn(issn)
.. issn:gsub( ' ', '' ) .. '&lang=fr ' .. issn.. ']</span>'
table.insert( liste, lien )
-- préparation du texte à afficher
 
if issnValid then
local lien = '<span class="plainlinks noarchive">[http://worldcat.org/issn/'
.. issn:gsub( ' ', '' ) .. '&lang=fr ' .. issn.. ']</span>'
table.insert( liste, lien )
else
table.insert( liste, issn .. avertissementInvalid )
if type( args.categ ) == 'table' then
args.categ.issnInvalid = true
end
end
i = i + 1
issn = validArg( 'issn' .. i, 'ISSN' .. i )
Ligne 131 ⟶ 155 :
.. ( texteAffiche or num )
.. ']</span>'
return adresse
end
Ligne 183 ⟶ 207 :
-- le paramètre ne semble pas un ark valide
category = '[[Catégorie:Recension temporaire pour le modèle Ouvrage|bnf]]'
end
-- dans tous les cas on renvoie l'adresse, on catégorise juste pour vérifier ce qui ne va pas
Ligne 288 ⟶ 312 :
-- 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', 'zbl', 'arxiv' ) then
-- if validArg( 'isbn', 'lire en ligne', 'présentation en ligne', 'oclc', 'url', 'lccn', 'issn', 'bnf', 'ISBN', 'isbn1', 'isbn erroné', 'ISSN', 'wikisource', 'dnb', 'doi', 'pmid', 'jstor', 'bibcode', 'math reviews', 'zbl', 'arxiv', 'url texte', 'résumé' ) then
local liensExternes = TableBuilder.new( )
Ligne 331 ⟶ 355 :
local consult = validArg( 'consulté le', 'accessdate', 'Consulté le', 'consulté', 'consultée le' )
if consult then
consult = mw.text.unstrip (consult)
consult = mw.ustring.gsub(consult, '[<][^>]*[>]', '')
if string.sub( consult, -1,-1) == '.' then
consult = string.sub( consult, 1, -2)
Ligne 339 ⟶ 361 :
local test, tdate = Date.separationJourMoisAnnee( consult )
if test then
consult = TableBuilder.new()
.minsert( tdate.jour, tdate.mois, tdate.annee )
.concat( ' ' )
if tdate.jour then
consulteLe = 'consulté le '
-- si leif tdate.jour est== 1, remplaçons-le par 1er, avec l'exposant et l'abréviation discrète accessiblethen
if ( tdate.jour == Outils.abr( '1)<sup>er</sup>', then'premier' )
local jourPremier = mw.getCurrentFrame():expandTemplate{ title = "abrd", args = { "1<sup>er</sup>", "premier" } }
consult = jourPremier .. string.sub( consult, 2 )
end
end
consult = TableBuilder.new()
.minsert( tdate.jour, tdate.mois, tdate.annee )
.concat( '  ' )
end
liensExternes.minsert( consulteLe .. Outils.nobr( consult:lower() ) )