Руководтсво администратора/разработчика

Документация

Язык быстрой разработки

Функции

output

Формирование значений

Функция output производит извлечение свойств переменной конфигурации и формирует значение на основании полученных в контексте данных.

Формат

output element congiguration data type

element - название элемента конфигурации
congiguration - объект конфигурации
data - контекст (объект данных, на основании которого будет формироваться значение
type - формат ответа.

  • по-умолчанию (пустое значение) - тестовый форма вывода.
  • html - выводит преобразованный в формат html. Необходимо в случае наличия в ответе HTML-разметки, в противном случае данный HTML-ответ будет экранирован для обеспечения требований безопасности.

Пример:

{{$f1 := output "field" . $data ""}}

В данном примере в переменную $f1 передается значение, которое было описано в элементе field конфигурации. В качестве данных для его получения был использован текущий контекст (.). Данные выводятся в текстовом формате.

datetotext

Преобразование даты в формат

Функция на вход получает текстовую строку в формате времени, на выходе - приведенная дата с русскоязычным месяцем.

Например:

{{ datetotext "2013-12-24" }}

>> 24 января 2013

parseparam

Обработка вложенных операций

При разработке когфигурации Блока возникают ситуации, когда необходимо значение одного параметра вложить в другой. Это делается инструацией %параметр%

Пример конфигуации:

{
    "id":{"type":"text","source":"123-123-123"},
    "url":{"type":"text","source":"/path=%id%"}
}

В этом примере видно, что в переменную id было положено значение "123-123-123" и оно будет передано в переменную url в том месте, где указана конструкция %id%.

Для обработке переменной url в Шаблоне необходимо "распарсить" данную переменную, т.е. произвести вычисление переменной id и вставить ее в необходимое место в переменной url, исходя из текущего контекста:

{{ parseparam "переменная" "конфигурация" "данные" "тип_вывода"}}
  • переменная - название переменной из конфигуации, которая содержит внутри себя конструкцию %...% будет "распарсена"
  • конфигурация - объект конфигурации текущего блока
  • данные - объект данных, которые будут использоваться при преобразовании
  • тип вывода - данные могут быть получены в текстовом формате или в формате HTML

Пример

{{$parsedurl := parseparam "url" $.Configuration $data ""}}

Примечание: Данный пример упрощен для понятия, на самом деле можно просто вручную внести данные 123-123-123 :) Но как правило, переменная id может принимать значения данных полей из контекста.

timefresh

Триггер актуального времени

Фунция timefresh показывает - переданная дата до текущего времени?

Входные данные - любое значение в формате UTC
Выходные данные - "true" или "false" текстовое значение

Пример:

{{ $flag := timefresh "2006-01-02 15:04:05 +0000 UTC"}}

"true" - переданная дата "свежая", т.е. еще не наступила

"false" - переданная дата уже прошла.

contains

Вхождение подстроки в строку

Функция contains производить поиск подстроки в строке и в выводит различные варианты ответа.

Формат

contains str substr message messageelse

str - строка, в которой осуществляется поиск
substr - подстрока, которая ищется
message - сообщение, которое будет возвращено в случае нахождения
messageelse - сообщение, если ничего не найдено

Пример

{{ contains "Ехал Грека через Реку", "Грек", "Грека", "Василий" }}

Примечание: Удобно использовать при управлении выводом стилей, в зависимости от наличия в строке требуемого условия.

Варианты использования:

{{$f1 := output "field" . $data ""}}
{{$order_value = contains $f1 "asc" "desc" "asc"}}

replace

Заменяем в строке

Функция replace производит заменю подстроки в строке и имеет следующий форма

replace str old new n

str - строка в которой осуществляется поиск
old - что ищем
new - на что меняем
n (число) - количество замен (-1 - заменить все совпадения)

Пример:

{{ replace "Ехал Грека через реку" "Грека" "Василий" -1 }}

>> Ехал Василий чере реку

compare

Сравниваем два текстовых значения

Фукнция compare сравнивает два значения и вы водит текст, если они равны. Данные стравниваются в текстовом формате, чтобы избежать ошибок преобразования. Возможно потребуется использовать функцию приведения типов (tostring)

Формат:

compare var1 var2 message

var1 - значение 1
var2 - значение 2
message - выводимый текст, в случае равенства

Пример:

{{ compare "1" "1" "Равны" }}

>> Равны

Примечание: Используется для сравнение результатов предыдущих операций.

dict

Мультиплексирование параметров

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

dict  key1 value1 key2 value2 ....

key1 - ключ
value1 - значение
....  - количество пар может быть неограниченным

Пример мультиплексирования шаблоне:

{{template "sub-template" dict "Data" . "Values" $.Values}}

где, "sub-template" - название шаблона, в который передаются значения
"Data" - название параметра, в который будет передано значение_1
. - переданные значения (в данном примере - текущий контекст)
"Values" - название параметра, в который будут передано значение_2
$.Values - передаваемые значения (в данном примере структура Values из корневого контекста ($)

Пример создания переменной структуры:

{{ $new_structure := dict "param" "value" }}

set

Задать значение в структуре

Функция set создает новое/меняет значение в имеющейся структуре. Возвращает текущую структуру, в которую добавлялось поле.

Формат:

set struct key value

struct - структура
key - ключ в структуре (строка)
value - значение (любые значения)

Пример:

{ $_ := set $.Value "fisher" "Грека"}

В данном примере в структуру Value из полученного контекста мы добавили поле "fisher" и положили значение "Грека".

Примечание: Чтобы не отображать возвращаемое функцией значение мы присваеваем его нулевой переменной "$_"

get

Получение значения структуры

Функция get получает значение в имеющейся структуре. Возвращает текущуее значение поля.

Формат:

get struct key

struct - структура
key - ключ в структуре (строка)

Пример:

{ $res := get $.Value "fisher"}

>> Грека

В данном примере из структуры Value будет получено значение поля "fisher" - "Грека".

substring

Функция substr вырезает и возвращает подстроку из строки. Сама строка при этом не изменяется.

Формат

substring str from count
  • str (строка) - первым параметром функция принимает строку,
  • from (число) - позицию символа, откуда следует начинать вырезание,
  • count (число) - количество символов.

Учтите, что нумерация символов строки начинается с нуля.

Второй параметр count может быть отрицательным - в этом случае отсчет начнется с конца строки, таким образом, мы можем отрезать нужное количество символов слева.

Третий параметр можно не указывать - в этом случае отрезание произойдет до конца строки.

Пример:

Давайте вырежем 3 символа из строки позиции 1 (со второго символа, так как первый имеет номер 0):

{{ substring "abcde" 1 3 }}
>> "bcd"

sum

Суммирование чисел

Функция sum  производит сложение двух переданых числовых значений и возвращает в чиловом формате.

Формат

sum i y

i,y - числовые значения

Пример:

{{ $res := sum $i 2 }}

В данном примере одно значение передано через значение переменной $i, а второе натуральным числом.

cut

Обрезать по кол-ву слов

Функция cut позволяет образать строку по заданному количеству символов. После последнего слова будет добавлено троеточие (...)

Формат:

cut string count sep

string - строка
count - количество слов в ответе
sep - символы для завершения образаной строки (например ...)

Пример

{{ cut "Ехал Грека чере реку" 2 }}

>> Ехал Грека...

tostring

Преобразование в строку

Фукнция tostring преобразовывает из числового формата в текстовый. Возвращает текстовое значение.

Формат:

tostring value

value - числовое значение

Пример:

{{ tostring 12 }}

>> "12"

toint

Преобразуем в числовой формат

Фукнция toint преобразовывает из текстового формата в числовой. Возвращает числовое значение. Если преобразование невозможно - возвращает -1

Формат:

toint value

value -  текстовое значение

Пример:

{{ toint "12" }}

>> 12

{{ toint "a12" }}

>> -1

concatination

Объединение строк

Функция concatination производит объединение тестовых значение в одну строку. Возвращает объединенную строку. Количество аргументов не ограничено.

Формат

concatination value1 value2 ....

Пример

{{ concatination "Ехал " "Грека " "через " "реку"}}

>> Ехал Грека через реку

marshal

Преобразуем в JSON

Фукнция marshal преобразует переданный объект в строковое значение в формате JSON.

Формат

marshal object

object - переданных объект

Пример

{{ $s := marshal $.Value }}

В данном примере в переменную $s передается сериализованное значение объекта Value из текущего контекста ($.)

split

Преобразование строки (с разделителями) в массив

Функция split производить преобразовать строку с заданными разделителями в объект массива.

Формат

split str dec

str - строка
dec - разделители в строке, по которым происходит разделение

Пример

{{ split "Грека,Василий,Егор" ","}}

>> ["Грек", "Грека", "Василий"]

unmarshal

Преобразуем значение из JSON в объект

Фукнция unmarshal преобразует строковое значение в формате JSON в объект (структуру).

Формат

unmarshal string

string - строковое значение в формате JSON

Пример

{{ $textjson := {"key1":"value1"} }}
{{ $s := unmarshal $textjson }}

В данном примере в переменную $s возвращается объект (струкутура, содержащая одной значение с ключом "key1" и значением "value1".

timenow

Текущее время

Функция timenow возвращает текущую дату/время в формате времени UTC ().

Формат

timenow

Пример

{{ timenow }}

>> 2006-01-02 15:04:05 +0000 UTC

timeformat

Дата в заданном формате

Функция timeformat возвращает строковое значение в заданном формате. В случае невозможного преобразования возвращает текстовое значение ошибкиВозвращаемый тип - строка

Формат

timeformat input mask format

input - преобразуемая строка (любой тип)

mask - текстовое значение формата преобразуемой строки (см. timeparse)

format - текстовое значение формата даты, в которую преобразуем строку

Пример

{{ timeformat "2016-01-02 23:14:50 +0000" "2006-01-02 15:04:05 +0000" "2006.01.02" }}

>> 2016.01.02

timeyear

Возвращает текущий год

Функция timeyear возвращает год переданного времени (в формате времени).

Формат

timeyear time

time - значение, преобразованное в формат времени (как правило возращаемое фукнцией timeparse или timenow)

Пример

{{ timeyear timenow }}

>> 2019

timemount

Возвращаем месяц

Функция timemount возвращает месяц переданного времени (в формате времени).

Формат

timemount time

time - значение, преобразованное в формат времени (как правило возращаемое фукнцией timeparse или timenow)

Пример

{{ timemount timenow }}

>> November

confparse

Обработка @-функции внутри конфигурации

Функция confparse производит обработку @-функций внутри конфигурации.

Формат:

confparse ConfigurationRaw Request Data


ConfigurationRaw - системная переменная, содержащаю "сырую" конфигурацию (без обработки @-функций.

Request - системная переменная запроса

Data - переменная, которая содержит контекст данных, которые будут использованы при обработки @-функций конфигурации.

Пример:

{{$ConfigurationNew := confparse $.ConfigurationRaw $.Request $Data}}

 

Описание:

Конфигурация, доступная в переменной $.Configuration в HTML-шаблоне и имеющая @-функции, обрабатывается при генерации формы. При обработки выполняются все @-функции с использованием текущего контекста. В момент генерации формы этот контект - объект страницы формы.

Бывают ситуации, когда в конфигурации мы прописываем значения переменных для других вариантов вывода данных, например при выводе встроенной в форму таблицу блока.

В этом случае, значение переменной (например uid-объекта "uid":{"type":"text","source":"2019-12-20T10-33-43Z-ca7908"},) в конфигурации будет содежать uid-объекта формы, а нам необходимо получать uid-перебираемых объектов. (конечно, всегда можно напрямую обратиться к свойству uid объекта внутри HTML-шаблона, но предположим, что мы хотим это значение задавать через переменную конфигурации)

Для этих целей существует текстовая переменная контекста $.ConfigurationRaw, которая содержит конфигурацию, без обработанных @-фукнций.

Для ее обработки необходимо добавить ее в цикл получения объектов и выполнять обработку @-функций внутри конфигурации при каждой итерации с новым объектом.

timeday

Возвращает дату

Функция timeday возвращает число переданного времени (в формате времени).

Формат

timeday time

time - значение, преобразованное в формат времени (как правило возращаемое фукнцией timeparse или timenow)

Пример

{{ timeday timenow }}

>> 12

timeparse

Преобразование в формат даты

Функция timeparse возвращает значение в формате даты, преобразованное из строкового значения.  Возвращаемый тип - дата

Формат

timeparse input mask

input - преобразуемая строка (любой тип)

mask - текстовое значение формата преобразования

Описание параметра format

Для преобразование необходимо составить формат передаваемого значения даты использую таблицу:

stdLongMonth      = "January"
stdMonth          = "Jan"
stdNumMonth       = "1"
stdZeroMonth      = "01"
stdLongWeekDay    = "Monday"
stdWeekDay        = "Mon"
stdDay            = "2"
stdUnderDay       = "_2"
stdZeroDay        = "02"
stdHour           = "15"
stdHour12         = "3"
stdZeroHour12     = "03"
stdMinute         = "4"
stdZeroMinute     = "04"
stdSecond         = "5"
stdZeroSecond     = "05"
stdLongYear       = "2006"
stdYear           = "06"
stdPM             = "PM"
stdpm             = "pm"
stdTZ             = "MST"
stdISO8601TZ      = "Z0700"  // prints Z for UTC
stdISO8601ColonTZ = "Z07:00" // prints Z for UTC
stdNumTZ          = "-0700"  // always numeric
stdNumShortTZ     = "-07"    // always numeric
stdNumColonTZ     = "-07:00" // always numeric

Например:

"2006-02-01 15:04:05", где

2006 - показывает, что певым значенмем будет передан;
02 - через тире (-) месяц
01 - через тире (-) день
потом пробел
15 - часы в формате 24-часа
04 - минуты
05 - секунды

Таким образом, заданный формат преобразует переданное строковое значение в объект даты, иначе выдаст ошибку преобразования с описанием ошибки.

или использовать заданные варианты шаблонов:

UTC      = "2006-02-01 15:04:05 -0700 UTC" // по-умолчанию при создании текущей даты
ANSIC       = "Mon Jan _2 15:04:05 2006"
UnixDate    = "Mon Jan _2 15:04:05 MST 2006"
RubyDate    = "Mon Jan 02 15:04:05 -0700 2006"
RFC822      = "02 Jan 06 15:04 MST"
RFC822Z     = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
RFC850      = "Monday, 02-Jan-06 15:04:05 MST"
RFC1123     = "Mon, 02 Jan 2006 15:04:05 MST"
RFC1123Z    = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
RFC3339     = "2006-01-02T15:04:05Z07:00"
RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
Kitchen     = "3:04PM"
// Метки времени
Stamp      = "Jan _2 15:04:05"
StampMilli = "Jan _2 15:04:05.000"
StampMicro = "Jan _2 15:04:05.000000"
StampNano  = "Jan _2 15:04:05.000000000"

Например

"RFC3339"

В этом случае, к преобразуемой строке будет применен формат шаблона RFC3339,  а именно "2006-01-02T15:04:05Z07:00". Данный способ удобен, если мы знаем, что данные приходят (например из базы данных) в формате RFC3339.

Пример

{{ timeparse "2016-01-02 19:23:23" "2006-01-02 15:04:05" }}

>> 2016-01-02 19:23:23 +0000 UTC

dogparse

Обработка @-функций в шаблонизаторе

Функция dogparse позволяет обрабатывать системные @-функции внутри html-кода страницы применительно к строковым значениям.

Формат:

dogparse string request data

string - строка, в которой содержатся @-фукнции
request - системное значение состояния запроса ($.Request)
data - данные, которые могут быть использованы при обработки @-функции (как правило полученные из запроса)

Пример

{{ $str := "Идентификатор пользователя = @User(UID)" }}
{{ dogparse $str $.Request $.Data.default.Data }}

>> Идентификатор пользователя = cf8f33e4-1fed-4521-9515-23d5b77e0345