Сообщество
FAQ
Логин
Пароль
Войти при помощи
Кстати, вы можете
Присоединиться к нам вконтакте
или почитать наш твиттер
Общение / Веб версия / Позволить не останавливаться на первом SMS правиле

Позволить не останавливаться на первом SMS правиле

Денис
3 октября 16:16
Здравтсвуйте,

Поскольку сервис останавливается при первом подходящем SMS правиле, то на N банковских карт и M категорий, нужно создать N*M правил.

Для примера майлер Thunderbird тоже раскидывает письма по ящикам, но там есть возможность попросить продолжить исполнять последующие правила. Таким образом одним правилом можно задать счет, а вторым категорию, тогда всего понадобится N + M правил.

Для реализации в интерфейсе потребуется все-лишь добавить галку "Продолжить исполнять правила"
Admin
3 октября 19:32
Срабатывание правила - означает в данном случае ввод операции по этому правилу.
Если сработает несколько правил, то должно быть внесено несколько операций, но этого не должно быть т.к. одна строка - одна операция.
Денис
4 октября 09:30
Я предлагаю измененить этот алгоритм

сейчас работает так
sms = "..."
for rule in rules:
operation = rule.match(sms):
if operation:
operation.do()
break # остановились на первом правиле
unprocessed_sms(sms)

а можно сделать так
sms = "..."
operation = operation(sms) # создаем болванку, заполняем минимальные данные - сумму и дату
for rule in rules:
if rule.match(sms):
operation.apply(rule) # поля операции меняются согласно правилу
if rule.stop_processing:
break # останавливаемсмя только если правило сработало и пользователь так его настроил
if operation.is_doable(): # проверяем, что все необходимые поля заполнены (тип, категория, источник)
operation.do()
else:
unprocessed_sms(sms)
Денис
4 октября 09:32
почему-то пробелы в начале строки удаляются в сообщениях :)

сейчас работает так
sms = "..."
for rule in rules:
..operation = rule.match(sms):
..if operation:
....operation.do()
....break # остановились на первом правиле
unprocessed_sms(sms)

а можно сделать так
sms = "..."
operation = operation(sms) # создаем болванку, заполняем минимальные данные - сумму и дату
for rule in rules:
..if rule.match(sms):
....operation.apply(rule) # поля операции меняются согласно правилу
....if rule.stop_processing:
......break # останавливаемсмя только если правило сработало и пользователь так его настроил
if operation.is_doable(): # проверяем, что все необходимые поля заполнены (тип, категория, источник)
..operation.do()
else:
..unprocessed_sms(sms)
Чтобы отвечать на сообщения - зарегистрируйтесь и войдите в личный кабинет.