diff options
author | Arthur de Jong <arthur@arthurdejong.org> | 2011-09-20 22:52:03 +0200 |
---|---|---|
committer | Arthur de Jong <arthur@arthurdejong.org> | 2011-09-20 22:52:03 +0200 |
commit | c4ad09983a812210b4e42547c83da673ca843684 (patch) | |
tree | 241ad4504f1522cf96318b6d40b99051b522bd33 | |
parent | 1c7c198fcd0404ea01ec2e1eb77462243c25ec86 (diff) |
fix a problem with an ISBN13 with a valid check digit but with an unknown bookland prefix
git-svn-id: http://arthurdejong.org/svn/python-stdnum/python-stdnum@78 9dea7c4f-944c-4273-ac1a-574ede026edc
-rw-r--r-- | stdnum/isbn.py | 15 | ||||
-rw-r--r-- | tests/test_isbn.doctest | 2 |
2 files changed, 9 insertions, 8 deletions
diff --git a/stdnum/isbn.py b/stdnum/isbn.py index d2fbe4d..382b13d 100644 --- a/stdnum/isbn.py +++ b/stdnum/isbn.py @@ -120,19 +120,18 @@ def split(number, convert=False): # clean up number number = compact(number, convert) # get Bookland prefix if any + delprefix = False if len(number) == 10: - oprefix = '' - prefix = '978' - else: - oprefix = prefix = number[:3] - number = number[3:] + number = '978' + number + delprefix = True # split the number - result = numdb.get('isbn').split(prefix + number[:-1])[1:] - itemnr = result.pop() + result = numdb.get('isbn').split(number[:-1]) + itemnr = result.pop() if result else '' + prefix = result.pop(0) if result else '' group = result.pop(0) if result else '' publisher = result.pop(0) if result else '' # return results - return (oprefix, group, publisher, itemnr, number[-1]) + return ('' if delprefix else prefix, group, publisher, itemnr, number[-1]) def format(number, separator='-', convert=False): diff --git a/tests/test_isbn.doctest b/tests/test_isbn.doctest index 84143ec..a14a15d 100644 --- a/tests/test_isbn.doctest +++ b/tests/test_isbn.doctest @@ -59,3 +59,5 @@ Regrouping tests. ('', '99996', '', '7827', '0') >>> isbn.split('979-20-1234567-8') ('979', '', '', '201234567', '8') +>>> isbn.split('5413170121522') # valid checkdigit, unknown prefix +('', '', '', '541317012152', '2') |