import re | |
from src.rule_based_system.Rule import Rule | |
from src.rule_based_system.TextLengthRule import TEXT_SIZE_LIMIT | |
from src.rule_based_system.Verdict import Verdict | |
class PersonalDetailsRule(Rule): | |
def __init__(self, regexes: list, strict: bool): | |
self.regexes = regexes | |
self.strict = strict | |
def get_verdict(self, comment_text: str) -> Verdict: | |
comment_text = comment_text[0:TEXT_SIZE_LIMIT] | |
personal_details = self.find_personal_details(comment_text) | |
return Verdict(len(personal_details) == 0, personal_details) | |
def find_personal_details(self, text: str) -> list: | |
details = [] | |
for regex in self.regexes: | |
matches = re.findall(regex, text) | |
details += matches | |
return details | |
def is_strict(self) -> bool: | |
return self.strict | |
def get_rule_description() -> str: | |
return 'Personal details were mentioned in text' | |