solo-auswertung/src/solo_turnier/competition_class.py

48 lines
1.4 KiB
Python

import re
class CompetitionClass:
def __init__(self, text: str):
self.name = text
def __repr__(self):
return self.name
class CombinedCompetitionClass:
def __init__(self, clsA: CompetitionClass, clsB: CompetitionClass):
self.clsA = clsA
self.clsB = clsB
def __repr__(self):
return f'{self.clsA}/{self.clsB}'
class CompetitionClassParser:
def __init__(self):
self.NEWC = CompetitionClass('Newc.')
self.BEG = CompetitionClass('Beg.')
self.ADV = CompetitionClass('Adv.')
self.mapNames = {
'Newc': self.NEWC,
'Newc.': self.NEWC,
'Newcomer': self.NEWC,
'Beg': self.BEG,
'Beg.': self.BEG,
'Beginner': self.BEG,
'Adv': self.ADV,
'Adv.': self.ADV,
'Advanced': self.ADV,
}
def parseClass(self, cls: str) -> CompetitionClass|CombinedCompetitionClass:
match = re.compile('^(\\w+\\.?)/(\\w+\\.?)$').match(cls)
if match is not None:
clsA = self.mapNames[match.group(1)]
clsB = self.mapNames[match.group(2)]
return CombinedCompetitionClass(clsA, clsB)
else:
return self.mapNames[cls]
def isPureClass(self, cls: str) -> bool:
parsedClass = self.parseClass(cls)
return isinstance(parsedClass, CompetitionClass)