Логические операторы if, elif, else

Все что описано в этой статье доступно с версии модуля SimplePars 4.8 и новее!
Обратите внимание что эта статья идет как часть статьи об Логические и Арифметические операторы в парсинге в интернет магазин и вынесена отдельно только по причине своей сложности и низкой востребованности.

IF - Очень важный оператор разветвления, благодаря нему в языках программирования можно строить разные сценарии выполнения в зависимости от данных.
По сути, сам перевод этого оператора много говорит за себя "Если". Поскольку у нас парсер, то при помощи этого оператора мы можем посмотреть что есть в границе парсинга и в зависимости от этого использовать одну или другую границу.

Доступные операторы группы if

{if[]} - Если. Блок указания условия.
{elif[]} - Альтернативное ЕСЛИ. Проверяется в случаи если условие в блоке {if[]} не правдиво.
{else} - Иначе. Значение по умолчанию, устанавливается если {if[]} и все последующие {elif[]} не правдивы.

Обратите внимание на квадратные скобки в {if[]} и {elif[]} В них записывается условие.

Форма записи в модуле

Если в каком то поле вы хотите использовать логические операторы группы if, то поле должно начинаться с оператора {if[]} и никак иначе.
Пример
Только в таком случае SimplePars поймет что здесь есть разветвление и нужно правильно обработать это поле.

Структура записи

Запись логического оператора состоит из двух частей.

  1. Условие - В этой части мы записываем условие. Если условие правдиво, то значение в теле условия будет записано в товар. Если условие не правдиво, то управление передастся в блоки {elif[]} или {else}
  2. Тело - Значение которое попадет в товар если условие будет правдиво.

Условие - Условие может быть как одно значение, так и два значения разделенные специальными логическими операторами.
Доступные логические операторы в условии.

  1. {=} - Значение слева равно значению справа.
  2. {>} - Значение слева больше значения справа
  3. {<} - Значение слева меньше значения справа

Если в условии только одно значение без доп. операторов, то правдивым условием считается любое не пустое значение, и значение не равное 0 !!!

Примеры

Давайте для наглядности представим что примеры мы показываем в поле цена товара
Одно значение в условии
{if[1]}100 - В этом случае цена товара будет установлена 100, поскольку 1 это не пусто, и не равно 0. Значит условие правдиво и тело условия записано в цену товара.

{if[{gran_17}]}100 - Допустим что в границе {gran_17} пусто, а это значит что условие if не правдиво, и модуль ничего не передаст в цену. Это эквивалентно ситуации когда вы ничего не указали в поле цена товара.

Два значения с дополнительными операторами
Теперь давайте представим что у нас есть две границы парсинга, {gran_1} в ней цифра 100 И {gran_2} в ней цифра 50
{if[{gran_1}{=}{gran_2}]}100 - В данном случае мы сравниваем значение из двух границ, модуль возьмет их содержимое, а именно 100 и 50 и проверит 100 = 50 ? Ответ нет, значит условие не выполняется.
{if[{gran_1}{>}{gran_2}]}100 - По аналогии с равно, 100 > 50 ? Да, значит тело оператора будет передано в цену товара.
{if[{gran_1}{<}{gran_2}]}100 - Так же и тут 100 < 50 ? Нет, значит Тело не будет передано.

Сравнение текста

При сравнении цифр, все банально просто, но если вы будете использовать сравнение текста то учтите:

  1. {=} - В этом случае будет проверятся равен ли текст с левой стороны к тексту с правой стороны от оператора {=}.
  2. {>} и {<} - В этом случае производится Лексикографическое сравнение это отдельная история кому нужно можете загуглить что это такое, от себя рекомендую не использовать знаки больше и меньше в сравнении текста. Если вы не знаете зачем вам это.

Зачем нам {elif[]} и {else} ?

Благодаря этим операторам вы можете делать разветвление.
{elif[]} - Тоже самое что и {if[]}, Разница только в том, что {elif[]} будет проверятся только в том случаи если {if[]} не правдив. Так же {elif[]} может быть неограниченное количество, а вот {if[]} только одно и в начале.
{else} - Это что то на подобие значения по умолчанию, если {if[]} не правдив, и все {elif[]} то же не правдивы, то модуль смотрит если у вас запись {else} Если она есть, тогда модуль берет тело этого блока и записывает в товар. Аналог значения по умолчанию.

Пример.

Обратите внимание что {elif[]} может быть сколько угодно, не только один как представлено на скриншоте выше, а и два или десять.
К примеру эта запись полностью правильная и рабочая.
{if[{gran_1}{<}{gran_2}]}100{elif[{gran_1}{=}{gran_2}]}200{elif[{gran_1}{>}{gran_2}]}300{else}400

Тело условия.

А вот что может быть указано в теле условия вы можете прочитать в этой статье.
Логические и Арифметические операторы в парсинге в интернет магазин

Единственное покажу что теперь можно все это комбинировать и указывать даже такую жесть.
{if[{gran_1}{<}{gran_2}]}666{+}34{*}100{-}70000{|}0{+}12{*}10{/}2{|}100{*}12{else}777
И даже больше скажу, это теперь вполне приемлемая для модуля SimplePars запись которая будет обработана и в зависимости от ваших потребностей выбрано правильное значение и записано в поле.