|
|
|
|
|
|
|
|
from typing import Optional, Dict, Any |
|
|
|
|
|
from .fallback import encode_fallback |
|
|
from .dict_utils import is_defined |
|
|
|
|
|
|
|
|
def encode_term(term_id: Optional[str], dictionaries: Dict[str, Any]) -> Optional[Dict[str, str]]: |
|
|
""" |
|
|
Returns a dict with: |
|
|
- human |
|
|
- compact |
|
|
- tokens |
|
|
|
|
|
If the term is not defined in any dictionary, fallback is used. |
|
|
""" |
|
|
if term_id is None: |
|
|
return None |
|
|
|
|
|
if not is_defined(term_id, dictionaries): |
|
|
return encode_fallback(term_id) |
|
|
|
|
|
upper = term_id.upper() |
|
|
|
|
|
return { |
|
|
"human": term_id, |
|
|
"compact": upper, |
|
|
"tokens": f"<{upper}>" |
|
|
} |
|
|
|
|
|
|