hyperboria/nexus/meta_api/query_extensionner/checks.py
the-superpirate fff80cd4e7 - feat(nexus): Bump versions
- fix(nexus): Preparing configs to be published
  - feat(nexus): Various fixes for opening left sources
  - fix(nexus): Fine-tune versions
1 internal commit(s)

GitOrigin-RevId: 6c834cd3f4f5f18109a159a73503700dac63b0bb
2021-04-23 18:32:56 +03:00

61 lines
1.3 KiB
Python

import re
from enum import Enum
from nexus.nlptools.regex import (
DOI_REGEX,
ISBN_REGEX,
NID_REGEX,
URL_REGEX,
)
# ToDo: redo all, code is logically incorrect now
class QueryClass(Enum):
Default = 'default'
DOI = 'doi'
ISBN = 'isbn'
NID = 'nid'
URL = 'url'
def check_doi(query) -> (QueryClass, str):
# ToDo: rewrite normally, just hotfixed
if query.startswith('references:'):
return
if r := re.search(DOI_REGEX, query):
doi = (r[1] + '/' + r[2]).lower()
return {
'doi': doi,
'query': f'doi:"{doi}"',
'class': QueryClass.DOI,
}
def check_isbn(query: str) -> (QueryClass, str):
if r := re.search(ISBN_REGEX, query):
isbn = r[1].replace('-', '')
return {
'isbn': isbn,
'query': 'isbns:' + isbn,
'class': QueryClass.ISBN
}
def check_nid(query: str) -> (QueryClass, str):
if r := re.search(NID_REGEX, query):
return {
'id': r[1],
'query': 'id:' + r[1],
'class': QueryClass.NID,
}
def check_url(query: str) -> (QueryClass, str):
if r := re.search(URL_REGEX, query):
return {
'url': r[0],
'query': r[0],
'class': QueryClass.URL,
}