You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			37 lines
		
	
	
		
			819 B
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			37 lines
		
	
	
		
			819 B
		
	
	
	
		
			Python
		
	
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
 |