Медиавики:Gadget-wfIsbnLite.js

Мавод аз Википедиа — донишномаи озод

Эзоҳ: Баъди захира намудан, Шумо метавонед тағйиротҳои худро аз хотираи браузер гузариш карда, бубинед. Дар браузерҳои Mozilla / Firefox / Safari: тугмаи Shift-ро пахш намуда бо мушак Reload-ро пахш кунед, ё Ctrl-Shift-R-ро пахш намоед (Cmd-Shift-R барои компютерҳои Apple Mac); дар браузери IE: тугмаи Ctrl-ро пахш намуда бо мушак Refresh-ро пахш намоед, ё Ctrl-F5-ро пахш намоед; дар браузери Konqueror:: бо мушак Reload-ро пахш кунед, ё тугмаи F5-ро пахш намоед; дар браузери Opera ба Шумо пурра тоза кардани хотираи браузер ба воситаи Tools→Preferences лозим аст.

wfPlugins = window.wfPlugins || [];
wfPlugins.push(function(txt,r){
'use strict';

var isbn_rule = {
 0:{'0-1':2,'2-6':3,'7-84':4,'85-89':5,'90-94':6,'95-99':7},
 1:{'0':2,'1-3':3,'4-54':4,'55-8697':5,'8698-998':6,'999':7},
 2:{'0-1':2,'2-34':3,'35-39':5,'4-6':3,'7-83':4,'84-89':5,'90-94':6,'95-99':7},
 3:{'00-02':2,'030-033':3,'034-036':4,'037-039':5,'04-1':2,'2-6':3,'7-84':4,
   '85-89':5,'90-94':6,'950-953':7,'954-96':5,'97-98':7,'99':5},
 4:{'0-1':2,'2-6':3,'7-84':4,'85-89':5,'90-94':6,'95-99':7},
 5:{'0-1':2,'2-420':3,'421-429':4,'430':3,'431-439':4,'440':3,'441-449':4,
   '45-6':3,'7-84':4,'85-89':5,'90':6,'91':5,'92':4,'93-94':5,'9500':7,
   '9501-97':4,'98':5,'990':7,'991-999':4},
 7:{'0-0':2,'1-4':3,'5-7':4,'8-8':5,'9-9':6}
};

r(/ISBN\s*([\d-]{9,16})([0-9XХ])/gi, function(s, id, d10){
 id = id.toString().replace(/-/g, '');
 var pre = '';
 if (id.length === 12) {
  pre = id.substr(0, 3);
  id = id.substr(3);
 }
 if ((pre !== '' && pre !== '978') || id.length !== 9) { return s; }
 var d1 = Math.floor(parseFloat(id) / 100000000);
 var id2 = parseFloat(id) % 100000000;
 if (typeof isbn_rule[d1] === 'undefined') { return s; }
 var len = 0;
 for (var r in isbn_rule[d1]) {
  var lim = r.split('-');
  var min = lim[0];
  var max = (lim.length === 2) ? lim[1] : lim[0];
  while (min.length < 8) { min += '0'; }
  while (max.length < 8) { max += '9'; }
  min = parseFloat(min);
  max = parseFloat(max);
  if (min <= id2 && id2 <= max) {
   len = isbn_rule[d1][r];
   break;
  }
 }
 if (/[Ххx]/.test(d10)) { d10 = 'X'; } // ru->en
 if (len == 0) { return s; }
 return 'ISBN ' + (pre !== '' ? pre + '-' : '') + d1 + '-' +
        id.substr(1, len) + '-' + id.substr(len + 1) + '-' + d10;
});

});