def url_doi_isbn_to_sfn_cit_ref(user_input, date_format) -> tuple: en_user_input = unquote(uninum2en(user_input)) # Checking the user input for dot is important because # the use of dotless domains is prohibited. # See: https://features.icann.org/dotless-domains if '.' in en_user_input: # Try predefined URLs # Todo: The following code could be done in threads. if not user_input.startswith('http'): url = 'http://' + user_input else: url = user_input tldless_netloc = urlparse(url)[1].rpartition('.')[0] resolver = TLDLESS_NETLOC_RESOLVER( tldless_netloc[4:] if tldless_netloc. startswith('www.') else tldless_netloc) if resolver: return resolver(url, date_format) # DOIs contain dots m = DOI_SEARCH(unescape(en_user_input)) if m: return doi_sfn_cit_ref(m[1], pure=True, date_format=date_format) return urls_sfn_cit_ref(url, date_format) else: # We can check user inputs containing dots for ISBNs, but probably is # error prone. m = ISBN_10OR13_SEARCH(en_user_input) if m: try: return isbn_sfn_cit_ref(m[0], True, date_format) except IsbnError: pass return UNDEFINED_INPUT_SFN_CIT_REF
def test_is4(self): """unpure isbn10""" self.assertIn( '* {{یادکرد کتاب | نام خانوادگی=حافظ | نام=شمس الدین محمد |' ' دیگران= رضا نظرزاده (به اهتمام) |' ' عنوان=دیوان کامل حافظ همراه با فالنامه |' ' ناشر=دیوان | سال=1385 |' ' ماه=آذر | شابک=964-92962-6-3 | زبان=fa}}', isbn_sfn_cit_ref('choghondar 964-92962-6-3 شلغم')[1])
def test_is3(self): """exists in both""" self.assertIn( '* {{یادکرد کتاب | دیگران=سحر معصومی (به اهتمام) |' ' عنوان=راز گل سرخ: نقد و گزیده شعرهای سهراب سپهری |' ' ناشر=نگاه | سال=1386 | ماه=بهمن |' ' شابک=964-6736-34-3 | زبان=fa}}', isbn_sfn_cit_ref('964-6736-34-3 ')[1], )
def test_is1(self): """not found in adinebook""" self.assertIn( '* {{یادکرد کتاب | نام خانوادگی=Adkins | نام=Roy |' ' عنوان=The war for all the oceans : ' 'from Nelson at the Nile to Napoleon at Waterloo |' ' ناشر=Abacus | مکان=London | سال=2007 |' ' شابک=978-0-349-11916-8 | زبان=en}}', isbn_sfn_cit_ref('9780349119168', pure=True)[1], )
def test_is2(self): """not found in ottobib""" self.assertIn( '* {{یادکرد کتاب | دیگران=بدیل بن علی خاقانی ' '(شاعر)، جهانگیر منصور (به اهتمام)' ' و بدیع الزمان فروزانفر (مقدمه) |' ' عنوان=دیوان خاقانی شروانی | ناشر=نگاه |' ' سال=1389 | ماه=مرداد |' ' شابک=978-964-6736-71-9 |' ' زبان=fa}}', isbn_sfn_cit_ref('978-964-6736-71-9', pure=True)[1])
def test_is3(self): """exists in both""" i = '964-6736-34-3 ' o = isbn_sfn_cit_ref(i) e = ('* {{cite book ' '| others=سحر معصومی (به اهتمام) ' '| title=راز گل سرخ: نقد و گزیده شعرهای سهراب سپهری ' '| publisher=نگاه ' '| year=1386 ' '| isbn=964-6736-34-3 ' '| language=fa ' '| ref={{sfnref | نگاه | 1386}}') self.assertIn(e, o[1])
def test_is2(self): """not found in ottobib""" i = '978-964-6736-71-9' o = isbn_sfn_cit_ref(i, pure=True) e = ('* {{cite book ' '| others=بدیل بن علی خاقانی (شاعر), جهانگیر منصور (به اهتمام),' ' and بدیع الزمان فروزانفر (مقدمه) ' '| title=دیوان خاقانی شروانی ' '| publisher=نگاه ' '| year=1389 ' '| isbn=978-964-6736-71-9 ' '| language=fa ' '| ref={{sfnref | نگاه | 1389}}') self.assertIn(e, o[1])
def test_is4(self): """unpure isbn10 not found in ottobib""" i = 'choghondar 964-92962-6-3 شلغم' o = isbn_sfn_cit_ref(i) e = ('* {{cite book ' '| last=حافظ ' '| first=شمس الدین محمد ' '| others= رضا نظرزاده (به اهتمام) ' '| title=دیوان کامل حافظ همراه با فالنامه ' '| publisher=دیوان ' '| year=1385 ' '| isbn=964-92962-6-3 ' '| language=fa ' '| ref=harv') self.assertIn(e, o[1])
def test_is1(self): """not found in adinebook""" i = '9780349119168' o = isbn_sfn_cit_ref(i, pure=True) e = ('* {{cite book ' '| last=Adkins ' '| first=Roy ' '| title=The war for all the oceans : ' 'from Nelson at the Nile to Napoleon at Waterloo ' '| publisher=Abacus ' '| publication-place=London ' '| year=2007 ' '| isbn=978-0-349-11916-8 ' '| ref=harv}}') self.assertIn(e, o[1])