Функции позволяют вычислять значения переменных, которые необходимы в логике вашего скрипта. Также они позволяют проверить, истинно ли некоторое выражение (что используется в условиях).
Пример
Пример использования функции — empty($Text)
— вернет 1 в случае, если переменная $Text
пуста или отсутствует вовсе.
Это позволяет, к примеру, выполнить действие скрипта, если пользователь не сказал чего-то, что должно попасть в переменную $Text
из вашего шаблона.
Синтаксис
Вызов функции выглядит как имя функции, после которой идут круглые скобки, где перечисляются аргументы через запятую. Дуся использует движок JEP для процессинга всех выражений, поэтому более полное описание можно найти в документации проекта. Там же вы сможете найти перечень стандартных функций, которыми тоже можно пользоваться наряду с нижеперечисленными.
Список функций
upper
Принимает строку на вход и возвращает ее в верхнем регистре.
upper("привет")
- вернет строку ПРИВЕТ
upper($Text)
- вернет содержимое переменной $Text в верхнем регистре
lower
Принимает строку на вход и возвращает ее в нижнем регистре. Операция, обратная функции upper.
len
Принимает строку или массив и возвращает ее (его) длину (для массива — размер).
len("привет как дела")
- вернет число 15
len($http_html_texts)
- вернет размер массива $http_html_texts
empty
Принимает строку, массив или ассоциативный массив и возвращает 1, если переданный объект пустой или отсутствует вовсе, иначе 0.
Чаще всего эта функция используется в условии действия, когда нужно проверить, например, что пользователь не сказал ту часть фразы, которая относится к переменной $Text из вашего шаблона. Или например чтобы проверить, что в результате парсинга странички в действии «HTTP запрос» на странице не оказалось ни одного элемента, соответствующего CSS.
empty("привет")
- вернет 0
empty("")
- вернет 1
empty($Text)
- вернет 1, если переменная $Text отсутствует или содержит пустую строку или пустой массив
full
Принимает строку, массив или ассоциативный массив и возвращает 1, если переданный объект присутствует и не пустой, иначе 0. Операция, обратная функции empty.
eq
Принимает две строки и возвращает 1, если они одинаковые (игнорируя регистр), иначе 0.
Эта функция отличается от оператора == тем, что не учитывает регистр.
eq("привет", "Привет")
- вернет 1
eq("привет ", "привет")
- вернет 0
eq("привет", $Text)
- вернет 1, если переменная $Text состоит только из букв слова привет в любом регистре
starts
Принимает две строки и возвращает 1, если первая строка начинается со второй (игнорируя регистр), иначе 0.
starts("привет медвед", "привет")
- вернет 1
starts("привет", "привет медвед")
- вернет 0
starts($Text, "привет")
- вернет 1, если переменная $Text содержит значение, начинающееся со слова привет
ends
Принимает две строки и возвращает 1, если первая строка заканчивается на вторую (игнорируя регистр), иначе 0.
ends("привет медвед", "медвед")
- вернет 1
ends("привет", "привет медвед")
- вернет 0
ends($Text, "медвед")
- вернет 1, если переменная $Text содержит значение, заканчивающееся на слово медвед
has
Принимает две строки и возвращает 1, если первая строка содержит вторую, иначе 0.
has("привет медвед", "привет")
- вернет 1
has("привет медвед", "медвед")
- вернет 1
has($Text, "привет")
- вернет 1, если переменная $Text содержит строку привет
first
Принимает число и строку, возвращает ее подстроку из первых N символов.
first(5, "привет медвед")
- вернет привет
first(1, $Text)
- вернет первую букву из переменной $Text
last
Принимает число и строку, возвращает ее подстроку из последних N символов.
last(6, "привет медвед")
- вернет медвед
last(1, $Text)
- вернет последнюю букву из переменной $Text
num
Принимает строку и преобразует ее в число, если это возможно, а если нет — то возвращает 0.
num("5")
- вернет число 5
num("5.5")
- вернет число 5.5
num("привет")
- вернет число 0
num($Text)
- вернет число, если переменная $Text содержит строку, которую можно преобразовать к числу, а если нельзя, то вернет число 0
get
Принимает либо число и массив, либо любой ключ и ассоциативный массив, и возвращает либо значение из массива по индексу, либо значение из ассоциативного массива по ключу.
Чаще всего эта функция используется, когда вам нужно проанализировать в скрипте результат действия «HTTP запрос» и вытащить очередной элемент из переменной $http_html_text.
get(1, $http_html_text)
- вернет первый элемент массива $http_html_text
get("hello", json($http_html_body))
- вернет значение по ключу hello из ассоциативного массива, который получился в результате превращения ответа от сервера в json объект
css
Принимает CSS селектор и HTML строку и возвращает массив строк, полученных из найденных элементов.
Эта функция нужна, когда вам недостаточно вытащить элементы со странички тольк по одному css селектору в действии «HTTP запрос».
css("p", $http_content)
- вернет массив строк, который получен из найденных на странице элементов с тэгом p (по строке на каждый найденный элемент)
Далее можно использовать функцию get для получения строк из этого массива. Для прохождения по всему массиву используйте действие «Перезапуск», в котором каждый раз увеличивайте индекс на единицу до того момента, пока он не станет равным размеру массива.
fcss
Принимает CSS селектор и HTML строку и возвращает строку из самого первого найденного элемента. Эта функция аналогична функции css, только возвращает не массив, а строку из первого найденного элемента.
attr
Принимает имя атрибута, CSS селектор и HTML строку и возвращает массив значений (строк) атрибутов найденных элементов.
Эта функция нужна, так как CSS не позволяет вытащить значение из элемента на странице.
attr("href", "a", $http_content)
- вернет массив ссылок, полученных из всех найденных на странице тэгов a
fattr
Принимает имя атрибута, CSS селектор и HTML строку и возвращает значение (строку) атрибута самого первого найденного элемента.
Эта функция подобна функции fcss, но только для атрибутов. Потому что часто нужно получить значение атрибута первого найденного элемента на странице.
replace
Заменяет все что найдено в строке регулярным выражением на некоторую другую строку. Принимает три аргумента — строку, регулярное выражение и строку, на которую нужно заменить найденное. Возвращает новую строку.
replace("привет медвед", "привет", "ПРИВЕТ")
- вернет строку ПРИВЕТ медвед
replace("привет медвед", "\s+", " ")
- вернет строку привет медвед, заменив все повторяющиеся пробелы на один
regex
Принимает строку и регулярное выражение, возвращает массив подстрок, найденных в исходной строке с помощью регулярного выражения.
Эта функция бывает полезной, когда например сервер возвращает данные не в формате HTML или JSON, и нужно получить какие-то данные из этого ответа.
regex("номер телефона 8800100", "[0-9]+")
- вернет массив с единственным элементом 8800100
Для того чтобы пользоваться этими функциями, необходимо знать основы использования регулярных выражений. При этом следует использовать синтаксис, характерный для языка программирования Java.
json
Принимает строку в формате JSON и возвращает ассоциативный массив, из которого можно получать данные по ключу с помощью функции get.
Эта функция нужна чаще всего, когда сервер возвращает результат в формате HTML, в котором в тэге body например содержится строка в виде JSON, из которого нужно что-то получить. Если бы сервер сразу возвращал JSON строку вместо HTML, то Дуся сразу получила бы все данные из этого JSON и разложила бы по соответствующим переменным.
json($http_html_body)
- вернет ассоциативный массив, полученный из строки, которая содержится в HTML ответе от сервера
get("field", json($http_html_body))
- вернет значение поля filed из JSON объекта, полученного из строки JSON в HTML ответе сервера