2022-11-28 18:01:13 +00:00
|
|
|
import re
|
|
|
|
|
|
|
|
class Group:
|
|
|
|
def __init__(self, text: str):
|
|
|
|
self.name = text
|
|
|
|
|
|
|
|
def __repr__(self):
|
|
|
|
return self.name
|
|
|
|
|
|
|
|
class CombinedGroup:
|
|
|
|
def __init__(self, grpA: Group, grpB: Group):
|
|
|
|
self.clsA = grpA
|
|
|
|
self.clsB = grpB
|
|
|
|
|
|
|
|
def __repr__(self):
|
|
|
|
return f'{self.clsA}/{self.clsB}'
|
|
|
|
|
2022-12-03 19:40:41 +00:00
|
|
|
Group_t = Group | CombinedGroup
|
|
|
|
|
2022-11-28 18:01:13 +00:00
|
|
|
class GroupParser:
|
2022-12-03 20:43:21 +00:00
|
|
|
KIN = Group('Kin.')
|
|
|
|
JUN = Group('Jun.')
|
|
|
|
JUG = Group('Jug.')
|
2023-09-13 13:22:20 +00:00
|
|
|
HGR = Group('Hgr.')
|
|
|
|
MAS1 = Group('Mas. I')
|
|
|
|
MAS2 = Group('Mas. II')
|
|
|
|
MAS3 = Group('Mas. III')
|
|
|
|
MAS4 = Group('Mas. IV')
|
|
|
|
MAS5 = Group('Mas. V')
|
2022-12-03 20:43:21 +00:00
|
|
|
|
2022-11-28 18:01:13 +00:00
|
|
|
def __init__(self):
|
|
|
|
|
|
|
|
self.mapNames = {
|
|
|
|
'Kin': self.KIN,
|
|
|
|
'Kin.': self.KIN,
|
|
|
|
'Kinder': self.KIN,
|
2023-09-13 13:22:20 +00:00
|
|
|
|
2022-11-28 18:01:13 +00:00
|
|
|
'Jun': self.JUN,
|
|
|
|
'Jun.': self.JUN,
|
|
|
|
'Junioren': self.JUN,
|
2023-09-13 13:22:20 +00:00
|
|
|
|
2022-11-28 18:01:13 +00:00
|
|
|
'Jug': self.JUG,
|
|
|
|
'Jug.': self.JUG,
|
|
|
|
'Jugend': self.JUG,
|
2023-09-13 13:22:20 +00:00
|
|
|
|
|
|
|
'Hgr': self.HGR,
|
|
|
|
'HGr': self.HGR,
|
|
|
|
'Hgr.': self.HGR,
|
|
|
|
'HGr.': self.HGR,
|
|
|
|
'Hauptgruppe': self.HGR,
|
|
|
|
|
|
|
|
'Mas. I': self.MAS1,
|
|
|
|
'Mas. II': self.MAS2,
|
|
|
|
'Mas. III': self.MAS3,
|
|
|
|
'Mas. IV': self.MAS4,
|
|
|
|
'Mas. V': self.MAS5,
|
|
|
|
'Mas I': self.MAS1,
|
|
|
|
'Mas II': self.MAS2,
|
|
|
|
'Mas III': self.MAS3,
|
|
|
|
'Mas IV': self.MAS4,
|
|
|
|
'Mas V': self.MAS5,
|
|
|
|
'Masters I': self.MAS1,
|
|
|
|
'Masters II': self.MAS2,
|
|
|
|
'Masters III': self.MAS3,
|
|
|
|
'Masters IV': self.MAS4,
|
|
|
|
'Masters V': self.MAS5,
|
2022-11-28 18:01:13 +00:00
|
|
|
}
|
|
|
|
|
2022-12-03 19:40:41 +00:00
|
|
|
def parseClass(self, cls: str) -> Group_t:
|
2022-11-28 18:01:13 +00:00
|
|
|
match = re.compile('^(\\w+\\.?)/(\\w+\\.?)$').match(cls)
|
|
|
|
if match is not None:
|
|
|
|
grpA = self.mapNames[match.group(1)]
|
|
|
|
grpB = self.mapNames[match.group(2)]
|
|
|
|
return CombinedGroup(grpA, grpB)
|
|
|
|
else:
|
|
|
|
return self.mapNames[cls]
|
|
|
|
|
|
|
|
def isPureClass(self, cls: str) -> bool:
|
|
|
|
parsedClass = self.parseClass(cls)
|
|
|
|
return isinstance(parsedClass, Group)
|
2023-09-13 13:23:04 +00:00
|
|
|
|
|
|
|
def getGroups(self) -> list[Group]:
|
|
|
|
return[
|
|
|
|
GroupParser.KIN,
|
|
|
|
GroupParser.JUN,
|
|
|
|
GroupParser.JUG,
|
|
|
|
GroupParser.HGR,
|
|
|
|
GroupParser.MAS1,
|
|
|
|
GroupParser.MAS2,
|
|
|
|
GroupParser.MAS3,
|
|
|
|
GroupParser.MAS4,
|
|
|
|
GroupParser.MAS5
|
|
|
|
]
|
|
|
|
|
|
|
|
def getGroupsAsSortedList(self, groups) -> list[Group]:
|
|
|
|
return [x for x in self.getGroups() if x in groups]
|