aboutsummaryrefslogtreecommitdiff
path: root/utils.py
diff options
context:
space:
mode:
authorAlban Gruin2018-02-10 00:30:47 +0100
committerAlban Gruin2018-02-10 00:31:52 +0100
commit786fd4fc9bcff1534ea30fb516d5c1b3136aebef (patch)
tree9c2ce14926c2ae21b480bea986b8dfdd54c3d1f6 /utils.py
parentfc923a36e7e203689458d156107ef94c0479449f (diff)
Correction de la regex pour parser correctement les groupes ne
possédant pas de semestre. Les tests rajoutés au commit précédent passent donc avec succès.
Diffstat (limited to 'utils.py')
-rw-r--r--utils.py33
1 files changed, 17 insertions, 16 deletions
diff --git a/utils.py b/utils.py
index 839d8bc..080768b 100644
--- a/utils.py
+++ b/utils.py
@@ -53,18 +53,19 @@ def group_courses(courses):
def parse_group(name):
# Explication de la regex
#
- # ^(.+?)\s*(s(\d)\s+)?((CM|TD|TP|G)(\w\d{0,3}))?(\s+\(.+\))?$
- # ^ début de la ligne
- # (.+?) correspond à au moins un caractère
- # \s* éventuellement un ou plusieurs espaces
- # (s(\d)\s+)? éventuellement un s suivi d’un nombre et d’un ou plusieurs espaces
- # ((CM|TD|TP|G) « CM » ou « TD » ou « TP » ou « G »
- # (\w\d{0,3}) suivi d’un caractère puis entre 0 et 3 chiffres
- # )? groupe optionnel
- # (\s+ un ou plusieurs espaces
- # \(.+\))? un ou pliseurs caractères entre parenthèses
- # $ fin de la ligne
- group_regex = re.compile(r"^(.+?)\s*(s(\d)\s+)?((CM|TD|TP|G)(\w\d{0,3}))?(\s+\(.+\))?$")
+ # ^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\w\d{0,3}))?(\s+\(.+\))?$
+ # ^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\w\d{0,3}))?(\s+\(.+\))?$
+ # ^ début de la ligne
+ # (.+?) correspond à au moins un caractère
+ # \s* éventuellement un ou plusieurs espaces
+ # (s(\d)\s+ un s suivi d’un nombre et d’un ou plusieurs espaces
+ # (CM|TD|TP|G) « CM » ou « TD » ou « TP » ou « G »
+ # (\w\d{0,3}) suivi d’un caractère puis entre 0 et 3 chiffres
+ # )? groupe optionnel
+ # (\s+ un ou plusieurs espaces
+ # \(.+\))? un ou pliseurs caractères entre parenthèses
+ # $ fin de la ligne
+ group_regex = re.compile(r"^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\w\d{0,3}))?(\s+\(.+\))?$")
search = group_regex.search(name)
if search is None:
return name, None, None
@@ -72,14 +73,14 @@ def parse_group(name):
parts = search.groups()
# On retourne la section (parts[0]), le semestre (parts[2]) et le
- # groupe (parts[5])
+ # groupe (parts[4])
if parts[2] is not None:
- return parts[0], int(parts[2]), parts[5]
+ return parts[0], int(parts[2]), parts[4]
else:
# Si jamais le semestre n’est pas présent dans la chaine parsée,
# parts[2] sera à None et sa conversion vers un int va provoquer
- # une erreur.
- return parts[0], None, parts[5]
+ # une erreur. parts[4] devrait être une chaîne vide ici.
+ return parts[0], None, parts[4]
def tz_now():