Что такое функции

Функции позволяют вычислять значения переменных, которые необходимы в логике вашего скрипта. Также они позволяют проверить, истинно ли некоторое выражение (что используется в условиях).

Пример

Пример использования функции — 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 ответе сервера