/cond

Библиотека для создания логических условий

Primary LanguageGoMIT LicenseMIT

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 элемент