Update regexp checking function.
This commit is contained in:
parent
97ff0edbb3
commit
df8d5e68cf
|
@ -559,6 +559,40 @@ class Passe(Markdownizable):
|
|||
def __str__(self):
|
||||
return f"{self.label} ({self.number_of_skill} | {self.difficulty})"
|
||||
|
||||
@staticmethod
|
||||
def is_valid_regexp_one_arg(arg):
|
||||
"""Vérifie une regexp avec un paramètre."""
|
||||
if arg == "WC":
|
||||
return True
|
||||
|
||||
if re.match(r"[1-9]+\|", arg):
|
||||
return True
|
||||
|
||||
if not Passe.is_valid_dot(arg):
|
||||
return False
|
||||
|
||||
value = arg.replace(".", "")
|
||||
is_valid_routine = Passe.is_valid_routine_type(value)
|
||||
|
||||
if is_valid_routine:
|
||||
return True
|
||||
|
||||
return Passe.is_valid_subset(arg)
|
||||
|
||||
@staticmethod
|
||||
def is_valid_regexp_two_args(arg1, arg2):
|
||||
"""Vérifie une regexp avec deux paramètres."""
|
||||
if not Passe.is_valid_dot(arg1):
|
||||
return False
|
||||
|
||||
value = arg1.replace(".", "")
|
||||
is_valid_routine = Passe.is_valid_routine_type(value)
|
||||
|
||||
if is_valid_routine:
|
||||
return Passe.is_valid_subset(arg2)
|
||||
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def is_valid_dot(pattern):
|
||||
"""Reçoit une chaine de caratère et vérifie que si elle contient un point (.), il se trouve
|
||||
|
@ -627,49 +661,30 @@ class Passe(Markdownizable):
|
|||
- x| (x entier)
|
||||
|
||||
Exemples :
|
||||
- Q1R1 True (si educatives.count() vide)
|
||||
- Q1R2 [2-8] True (si educatives.count() vide)
|
||||
- Q1R1 [8-2] False
|
||||
- Q1R1 [-] False (not working)
|
||||
- Q2R1 [-5] True (si educatives.count() vide)
|
||||
- SF [6-] True (si educatives.count() vide)
|
||||
- FS [3-7] True (si educatives.count() vide)
|
||||
- Q1R1. True (si educatives.count() == 1) (NOT WOKRING)
|
||||
- .Q1R2 True (si educatives.count() == 1) (NOT WOKRING)
|
||||
- WC True (si educatives.count() >= 2)
|
||||
- 1| True (si educatives.count() >= 1)
|
||||
- Q1R1 True
|
||||
- Q1R2 [2-8] True
|
||||
- Q2R1 [-5] True
|
||||
- SF [6-] True
|
||||
- FS [3-7] True
|
||||
- Q1R1. True
|
||||
- .Q1R2 True
|
||||
- Q1R1. [-4] True
|
||||
- .Q1R2 [4-] True
|
||||
- .FS [3-7] True
|
||||
- [2-8] True
|
||||
- [-5] True
|
||||
- WC True
|
||||
- 1| True
|
||||
"""
|
||||
operation_list = regexp.split(" ")
|
||||
argument_list = regexp.split(" ")
|
||||
|
||||
if len(operation_list) >= 3:
|
||||
if len(argument_list) >= 3:
|
||||
return False
|
||||
|
||||
if len(operation_list) == 2:
|
||||
if not Passe.is_valid_dot(operation_list[0]):
|
||||
return False
|
||||
|
||||
value = operation_list[0].replace(".", "")
|
||||
is_valid_routine = Passe.is_valid_routine_type(value)
|
||||
|
||||
if is_valid_routine:
|
||||
return Passe.is_valid_subset(operation_list[1])
|
||||
if len(argument_list) == 2:
|
||||
return Passe.is_valid_regexp_two_args(argument_list[0], argument_list[1])
|
||||
else:
|
||||
if operation_list[0] == "WC":
|
||||
return True
|
||||
|
||||
if re.match(r"[1-9]+\|", operation_list[0]):
|
||||
return True
|
||||
|
||||
if not Passe.is_valid_dot(operation_list[0]):
|
||||
return False
|
||||
|
||||
value = operation_list[0].replace(".", "")
|
||||
is_valid_routine = Passe.is_valid_routine_type(value)
|
||||
|
||||
if is_valid_routine:
|
||||
return True
|
||||
|
||||
return Passe.is_valid_subset(operation_list[0])
|
||||
return Passe.is_valid_regexp_one_arg(argument_list[0])
|
||||
|
||||
return False
|
||||
|
||||
|
|
Loading…
Reference in New Issue