Exemple #1
0
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
Exemple #2
0
 def test_is4(self):
     """unpure isbn10"""
     self.assertIn(
         '* {{یادکرد کتاب | نام خانوادگی=حافظ | نام=شمس الدین محمد |'
         ' دیگران= رضا نظرزاده (به اهتمام) |'
         ' عنوان=دیوان کامل حافظ همراه با فالنامه |'
         ' ناشر=دیوان | سال=1385 |'
         ' ماه=آذر | شابک=964-92962-6-3 | زبان=fa}}',
         isbn_sfn_cit_ref('choghondar 964-92962-6-3 شلغم')[1])
Exemple #3
0
 def test_is3(self):
     """exists in both"""
     self.assertIn(
         '* {{یادکرد کتاب | دیگران=سحر معصومی (به اهتمام) |'
         ' عنوان=راز گل سرخ: نقد و گزیده شعرهای سهراب سپهری |'
         ' ناشر=نگاه | سال=1386 | ماه=بهمن |'
         ' شابک=964-6736-34-3 | زبان=fa}}',
         isbn_sfn_cit_ref('964-6736-34-3 ')[1],
     )
Exemple #4
0
 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],
     )
Exemple #5
0
 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])
Exemple #6
0
 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])
Exemple #7
0
 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])
Exemple #8
0
 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])
Exemple #9
0
 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])