mirror of
https://github.com/nexus-stc/hyperboria
synced 2024-12-11 20:27:50 +01:00
fff80cd4e7
- 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
61 lines
1.3 KiB
Python
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,
|
|
}
|