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

Contenu supprimé Contenu ajouté
databaseExterne et toutes les fonctions qui l'appelle : Retour à la version Base Numéro dans la base ; affichageLiensExternes : simplification associées
issn : correction bug lorsque le code contiens un espace ; affichageLiensExternes : accepte DOI, PMID conformément à la doc et l'usage ; améliorations mineures
Ligne 32 :
-- Determines whether an ISBN string is valid
function References.checkisbn( isbn_str )
if type( isbn_str ) ~= 'string' then
if isbn_str:find( '[^0-9Xx%s-]' ) then -- fail if isbn_str contains anything but digits, hyphens, or X
return false
end
isbn_str = isbn_str:gsub( '[-%s]', '' ):gsub( 'x', 'X' ) -- remove hyphens and spaces
local len = isbn_str:len()
if len == 10 and isbn_str:match( '^%d+X?$' ) then
if isbn_str:match( '^%d*X?$' ) == nil then
return false
end
return References.is_valid_isxn( isbn_str, 10 )
elseif len == 13 and isbn_str:match( '^%d+$' ) then
local temp = 0
if isbn_str:match( '^%d*$' ) == nil then -- isbn13 or EAN13 contains only numbers
return false
end
isbn_str = { isbn_str:byte( 1, len ) }
for i, v= in ipairs(1, #isbn_str ) do
temp = temp + ( 3 - 2 * ( i % 2 ) ) * tonumber( string.char( visbn_str[i] ) )
end
return temp % 10 == 0
else
return false
end
end
Ligne 71 ⟶ 63 :
local isbn = validArg( 'isbn', 'ISBN', 'isbn1', 'ISBN1' )
if isbnErr or isbn then
iflocal isbnErrSanitised = isbnErr and isbnErr:findmatch( '[%dXx -]+' ) then
if isbnErrSanitised then
local lien
local lien = '[[Spécial:Ouvrages de référence/' .. isbnErr:match( '[%dXx -]*' )isbnErrSanitised
if isbnErr:find( '[%[\127]' ) then
lien = isbnErr .. ' (édité erroné)'
else
lien = '[[Spécial:Ouvrages de référence/' .. isbnErr:match( '[%dXx -]*' )
.. '|<span class="nowrap">' .. isbnErr .. '</span>]] (édité erroné)'
end
table.insert( liste, lien )
end
Ligne 117 ⟶ 105 :
if issn then
-- on réduit la chaine aux caractères qui peuvent être dans un code issn (pas de test de longueur)
local issnValid = string.match( string.gsub( issn, ' ', '' ), '[%dXx -]*' )
while issnValidissn do
local lien = '<span class="plainlinks noarchive">[http://worldcat.org/issn/'
.. mw.uri.encodeissn:gsub( issn' ', '' ) .. '&lang=fr ' .. issn.. ']</span>'
table.insert( liste, lien )
 
i = i + 1
issn = validArg( 'issn' .. i, 'ISSN' .. i )
issnValid = issn and string.match( string.gsub( issn, ' ', '' ), '[%dXx -]*' )
end
Ligne 280 ⟶ 266 :
end
end
url = string.url:gsub ( string.gsub ( url, '%[', '%%5B' ),:gsub( '%]', '%%5D' )
local texte = validArg( 'texte' ) or 'en ligne'
Ligne 308 ⟶ 294 :
References.lccn( args.lccn ),
References.dnb ( args.dnb ),
References.pmid( args.validArg( 'pmid', 'PMID' ) ),
References.pmcid ( validArg( 'pmcid', 'pmc' ) ),
References.doi( args.validArg( 'doi', 'DOI' ) ),
References.jstor( args.jstor ),
References.bibcode( args.bibcode ),
Ligne 353 ⟶ 339 :
consult = string.sub( consult, 1, -2)
end
if (string.match(consult, '^.-%w+[ /-].-%w+[ /-].*%w')) then
consulteLe = 'consulté le '
else
Ligne 424 ⟶ 410 :
return References.indicationDeFormat( ext ) .. ' ' .. texte
else
return ' ' .. mw.text.nowiki( '[&#91;' ) .. format .. mw.text.'&#93;' -- '&#91;' = '<nowiki(>[</nowiki>', ']&#93;' )= '<nowiki>]</nowiki>',
end
end