isbn3
Version:
ISBN utils: parse, validate, format, audit
38 lines (29 loc) • 871 B
JavaScript
const fill = require('./fill')
const splitIsbnParts = require('./split_isbn_parts')
module.exports = value => {
if (value == null) return null
value = value.toString()
const source = value
if (!value) return null
value = value
.replace(/\s/g, '')
// Dropping all hyphens, as the hyphens might be wrong
// Ex: only one can be true of 978-88-3282-181-9 and 978-88-328-2181-9
.replace(/-/g, '')
let data = splitIsbnParts(value)
if (!data) return null
data.source = source
if (value.length === 13) {
data.prefix = value.substring(0, 3)
data.isIsbn13 = true
data.isIsbn10 = false
} else {
data.isIsbn10 = true
data.isIsbn13 = false
}
data = fill(data)
if (!data) return null
data.isValid = data.check === (data.isIsbn13 ? data.check13 : data.check10)
if (data.isValid) return data
else return null
}