QNext. Макрос switch
!{switch|
type: number;
path: profile.Points.value;
defaultValue: Не известно;
case: 1; value: Одно очко;
case: 2; value: Два очка;
case: 3; value: Три очка;
}
Параметр type может принимать значения:
- bool
- string
- number
Параметр path - это путь до проверяемого значения. Обраnbте внимание, параметр path должен быть простой строкой без ${...}. Вместо path можно в параметре left указать конкретное значение.
Параметры case и value - это проверяемое значение и результат соответственно. Каждому case должен соответствовать свой value.
Параметр defaultValue - значение по умолчанию, если ни один из case не сработал.
Диапазон значений
Если вы хотите в макросе проверить диапазон текстовых значений, используйте макрос:
!{switch| type: string; path: update.message.text;
case: test1,test2; value: Вы ввели test 1 или 2;
case: test3,test4; value: Вы ввели test 3 или 4;
defaultValue: Не известная команда;
}
В этом макросе если вы указали значения test1 или test2, на выходе вы получите строку "Вы ввели test 1 или 2". Обратите внимание внутри блока case мы указали несколько проверяемых значений, разделенных символом ",". Если у вас строки включают этот символ, вы можете макросу другой разделитель:
!{switch| type: string; path: update.message.text;
caseSplitter: @;
case: test1 @ test2; value: Вы ввели test 1 или 2;
case: test3 @ test4; value: Вы ввели test 3 или 4;
defaultValue: Не известная команда;
}
Если вам необходимо проверить диапазон числовых значений, вы можете использовать аналогичную запись, а можете указать диапазон числовых значений, используя символ дефис "-", например так:
!{switch| type: number; path: update.message.text;
case: *-0; value: Вы ввели число 0 или меньше;
case: 1-9; value: Вы ввели число от 1 до 9;
case: 10-*; value: Вы ввели число 10 или больше;
defaultValue: Не известное число;
}
Регулярные выражения
Если вы используете тип string, вы можете проверять значения с помощью регулярных выражений, для этого текст регулярки в поле case необходимо записать с помощью конструкции вида /.../, например так:
!{switch| type: string; path: update.message.text;
case: /^0-9$/; value: Вы ввели число;
case: /^a-z$/i; value: Вы ввели строку из символов a-z;
case: /(\/.+)/; value: Вы команду %(exec.1);
defaultValue: Не известная команда;
}
Обратите внимание на третий case, в нем используется локальная переменная макрос $(exec.1) - здесь будет значение из регулярки этого кейса. Вы так можете использовать локальную переменную макроса %(config...) который будет ссылаться на значения, переданные в макрос, например так:
!{switch|
type: string;
path: update.message.text; TestVar: abc;
case: /(\/.+)/; value: Вы команду %(exec.1), $(TestVar);
defaultValue: Не известная команда;
}