add dashes option to Ox.formatISBN

This commit is contained in:
rlx 2016-01-16 20:28:43 +05:30
parent cec3e63880
commit 13d505cbc1

View file

@ -644,12 +644,12 @@ Ox.formatISBN <f> Formats a string as an ISBN of a given length (10 or 13)
(isbn, length) -> <s> ISBN (isbn, length) -> <s> ISBN
isbn <s> ISBN isbn <s> ISBN
length <n> length (10 or 13) length <n> length (10 or 13)
> Ox.formatISBN('0-306-40615-2', 13) > Ox.formatISBN('0-306-40615-2', 13, true)
'9780306406157' '978-0-306-40615-7'
> Ox.formatISBN('978-0-306-40615-7', 10) > Ox.formatISBN('978-0-306-40615-7', 10)
'0306406152' '0306406152'
@*/ @*/
Ox.formatISBN = function(isbn, length) { Ox.formatISBN = function(isbn, length, dashes) {
var ret = ''; var ret = '';
function getCheckDigit(isbn) { function getCheckDigit(isbn) {
var mod = isbn.length == 10 ? 11 : 10 var mod = isbn.length == 10 ? 11 : 10
@ -676,7 +676,13 @@ Ox.formatISBN = function(isbn, length) {
ret = isbn.slice(0, -1) + getCheckDigit(isbn); ret = isbn.slice(0, -1) + getCheckDigit(isbn);
} }
} }
return ret; return dashes ? [
ret.slice(-13, -10),
ret.slice(-10, -9),
ret.slice(-9, -6),
ret.slice(-6, -1),
ret.slice(-1)
].join('-').replace(/^-/, '') : ret;
}; };
/*@ /*@