www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 524af03570c8502e92e0b44f104b273080de9969
parent 4b09137402ebbaa5ebfdb4ca26cfb704c5280211
Author: aurimasv <aurimas.dev@gmail.com>
Date:   Fri, 23 Nov 2012 23:06:47 -0600

Make cleanISBN less aggressive. Should yield fewer false-positives.

Diffstat:
Mchrome/content/zotero/xpcom/utilities.js | 13+++++--------
1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/chrome/content/zotero/xpcom/utilities.js b/chrome/content/zotero/xpcom/utilities.js @@ -277,7 +277,10 @@ Zotero.Utilities = { * Return isbn if valid, otherwise return false */ "cleanISBN":function(/**String*/ isbn) { - isbn = isbn.replace(/[^x\d]+/ig, '').toUpperCase(); + isbn = isbn.replace(/[^0-9a-z]+/ig, '').toUpperCase() //we only want to ignore punctuation, spaces + .match(/(?:97[89][0-9]{10}|[0-9]{9}[0-9X])/); //13 digit or 10 digit + if(!isbn) return false; + isbn = isbn[0]; if(isbn.length == 10) { // Verify ISBN-10 checksum @@ -292,17 +295,11 @@ Zotero.Utilities = { return (sum % 11 == 0) ? isbn : false; } - isbn = isbn.replace(/X/g, ''); //get rid of Xs - if(isbn.length == 13) { - // ISBN-13 should start with 978 or 979 i.e. GS1 for book publishing industry - var prefix = isbn.slice(0,3); - if (prefix != "978" && prefix != "979") return false; - // Verify checksum var sum = 0; for (var i = 0; i < 12; i+=2) sum += isbn[i]*1; //to make sure it's int - for (i = 1; i < 12; i+=2) sum += isbn[i]*3; + for (var i = 1; i < 12; i+=2) sum += isbn[i]*3; sum += isbn[12]*1; //add the check digit return (sum % 10 == 0 )? isbn : false;