API docs for “spamfighter.core.rules.RulesFactory”

# Class s.c.r.RulesFactory(object):

Part of spamfighter.core.rules View Source View In Hierarchy

Фабрика правил анализа сообщений. Регистрирует правила и выдает их по требованию.

Правило анализа сообщений может быть:

- функцией
- классом

В случае функции правило должно иметь вид:

     def rule(domain, message, arg1, arg2=33)

где:

- `domain` (`spamfighter.interfaces.IDomain`) - текущий домен;
- `message` (`spamfighter.interfaces.IMessage`) - обрабатываемое сообщение;
- `arg1`, `arg2` - дополнительные параметры правил анализа;
- именем правила будет имя функции (`rule`).

Класс должен иметь следующий вид:

     class Rule(object):
         def __init__(self, arg1, arg2=33):
            ...
         def analyze(domain, message):
            ...

Смысл полей аналогично случаю функции, именем правила будет имя класса.

Instance Variables | rules | хэш по имени зарегистрированных правил (type: `dict` )

Method | __init__ | Конструктор.
Method | registerRule | Добавить новое правило (зарегистрировать).
Method | unregisterRule | Удалить ранее зарегистрированное правило.
Method | instanciateRule | Инстанциировать правило, создать его экземпляр с указанными параметрами.
Method | getRuleNames | Получить имена всех правил.

def __init__(self): (source)
Конструктор.

def registerRule(self, rule): (source)
Добавить новое правило (зарегистрировать).

Parameters | rule | новое правило (type: `func` или `class` )
Raises | DuplicateRuleError | если правило с таким же именем уже было зарегистрировано

def unregisterRule(self, rule): (source)
Удалить ранее зарегистрированное правило.

Parameters | rule | новое правило (type: `func` или `class` )
Raises | RuleNotFoundError | правило с указанным имененем не обнаружено

def instanciateRule(self, name, **kwargs): (source)
Инстанциировать правило, создать его экземпляр с указанными параметрами.

Возвращает функцию, в которой должно остаться только два свободных параметра: домен и сообщение.

Parameters | name | имя правила (type: `str` )
Returns | инстанциированное правило (type: `func` )
Raises | RuleNotFoundError | правило с указанным имененем не обнаружено

def getRuleNames(self): (source)
Получить имена всех правил.

Returns | список имен правил (type: `list(str)` )