]>
gitweb.pimeys.fr Git - bots/josh.git/blob - isit.py
4 """ Des fonctions utilitaire pour savoir si on est dans tel ou tel cas. """
11 def regex_join(liste
, avant
=u
".*(?:^| )", apres
=u
"(?:$|\.| |,|;).*"):
12 """Fabrique une regexp à partir d'une liste d'éléments à matcher."""
13 return avant
+ u
"(" + u
"|".join(liste
) + u
")" + apres
15 def is_something(chain
, regexp
=None, matches
=[], avant
=u
".*(?:^| )", apres
=u
"(?:$|\.| |,|;).*",
16 case_sensitive
=False):
17 """Vérifie si chain contient un des éléments de ``matches``.
18 Si ``regexp`` est fournie, c'est simplement elle qui est testée"""
19 if not case_sensitive
:
24 regexp
= regex_join(matches
, avant
, apres
)
25 regexp
= re
.compile(regexp
)
26 o
= regexp
.match(chain
)
30 """Compilation des regexp à partir de la conf.
31 Place les résultats dans le namespace de ``config``"""
32 config
.allah_regexp
= regex_join(config
.allah_triggers
, avant
=".*", apres
="$")
33 config
.allah_regexp_compiled
= re
.compile(config
.allah_regexp
)
35 config
.tag_regexp
= regex_join(config
.tag_triggers
, avant
=".*", apres
="$")
36 config
.tag_regexp_compiled
= re
.compile(config
.tag_regexp
)
41 """Vérifie si ``chain`` demande de fermer sa gueule."""
42 return is_something(chain
, config
.tag_regexp_compiled
)
45 """Vérifie si ``chain``est du allah-spam."""
46 return is_something(chain
, config
.allah_regexp_compiled
)