| 123456789101112131415161718192021222324252627282930313233343536 |
- import re
- from typing import Dict
- from isoduration.constants import PERIOD_PREFIX, TIME_PREFIX, WEEK_PREFIX
- from isoduration.parser.exceptions import OutOfDesignators
- def is_period(ch: str) -> bool:
- return ch == PERIOD_PREFIX
- def is_time(ch: str) -> bool:
- return ch == TIME_PREFIX
- def is_week(ch: str) -> bool:
- return ch == WEEK_PREFIX
- def is_number(ch: str) -> bool:
- return bool(re.match(r"[+\-0-9.,eE]", ch))
- def is_letter(ch: str) -> bool:
- return ch.isalpha() and ch.lower() != "e"
- def parse_designator(designators: Dict[str, str], target: str) -> str:
- while True:
- try:
- key, value = designators.popitem(last=False) # type: ignore
- except KeyError as exc:
- raise OutOfDesignators from exc
- if key == target:
- return value
|