Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2011-09-20 22:52:03 +0200
committerArthur de Jong <arthur@arthurdejong.org>2011-09-20 22:52:03 +0200
commitc4ad09983a812210b4e42547c83da673ca843684 (patch)
tree241ad4504f1522cf96318b6d40b99051b522bd33
parent1c7c198fcd0404ea01ec2e1eb77462243c25ec86 (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.py15
-rw-r--r--tests/test_isbn.doctest2
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')