cond
Библиотека для создания логических условий
Основная идея
- все условия заключаются в скобки, даже верхнее
- все условия строятся по правилу: <команда> <первый элемент> [<второй элемент>]
- все элементы - строки, хотя для некоторых команд логика состоит в преобразовании в число
- если элемент состоит из нескольких слов, то его надо ограничить кавычками
- если внутри элемента тоже есть кавычки, то их надо экранировать
Публичные функции
Библиотека предоставляет одну публичную функцию
OK - функция проверки логического условия Входящие параметры in - логическая строка data - словарь переменных Выходные переменные bool - условие выполнено err - ошибка
ВАЖНО: переменные в логической строке указываются в виде
Примеры:
OK("(and (eq $$msisdn$$ 79876543210) (gt $$age$$ 22))",
map[string]string{"msisdn": "79876543210", "age": "22"})
В данном случае OK вернет false. Т.к. телефоны совпадают, а вот age равен, а д.б. больше.
Список команд
Строковые команды
- eq - элементы равны
- ne - элементы не равны
Числовые команды
Для данных команды мы переводим полученные строки в числа и дальше сравниваем числа
- gt - первый элемент больше второго
- lt - первый элемент меньше второго
- gte - первый элемент больше или равен второму
- lte - первый элемент меньше или равен второму
Логические команды
- and - Логическое И
- or - логическое ИЛИ
- not - отрицание
- эта команда принимаем только 1 элемент