isISSN.js 1018 B

12345678910111213141516171819202122232425262728293031323334353637
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = isISSN;
  6. var _assertString = _interopRequireDefault(require("./util/assertString"));
  7. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  8. var issn = '^\\d{4}-?\\d{3}[\\dX]$';
  9. function isISSN(str) {
  10. var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  11. (0, _assertString.default)(str);
  12. var testIssn = issn;
  13. testIssn = options.require_hyphen ? testIssn.replace('?', '') : testIssn;
  14. testIssn = options.case_sensitive ? new RegExp(testIssn) : new RegExp(testIssn, 'i');
  15. if (!testIssn.test(str)) {
  16. return false;
  17. }
  18. var digits = str.replace('-', '').toUpperCase();
  19. var checksum = 0;
  20. for (var i = 0; i < digits.length; i++) {
  21. var digit = digits[i];
  22. checksum += (digit === 'X' ? 10 : +digit) * (8 - i);
  23. }
  24. return checksum % 11 === 0;
  25. }
  26. module.exports = exports.default;
  27. module.exports.default = exports.default;