Контекст
В языке Gentee отсутствуют глобальные переменные. Одним из способов обмена данными является специальный ассоциативный массив строк. Любая функция может безопасно добавлять туда пары ключ-значение или получать значение по ключу. Кроме этого, в контекст встроена возможность подстановки других существующих значений из контекста. Например, если определены пары "a": "String A" и "b": "String B", то "#a# and #b#" возвратит "String A and String B". Ниже описаны функции и операторы для работы с контекстом.

Операторы

Оператор
Результат
Описание
# ident
str
Тоже самое, что CtxGet(key), где ident является ключом контекста.
## str
str
Тоже самое, что Ctx(str). Указывается любое выражение, которое возвращает строку.
ident #= str
str
Тоже самое, что CtxSet(str key, str s), где ident - это ключ контекста.
ident #= bool
str
Тоже самое, что CtxSet(str key, bool b), где ident - это ключ контекста.
ident #= float
str
Тоже самое, что CtxSet(str key, float f), где ident - это ключ контекста.
ident #= int
str
Тоже самое, что CtxSet(str key, int i), где ident - это ключ контекста.
run str {
str s = ` #AºB#`
AºB #= `ººº`
b #= 71
CD #= `#AºB# #b# == `
return #CD + #b + ##s
}
// ººº 71 == 71 ººº

Функции

Ctx(str input) str

Функция Ctx заменяет в строке input подстроки #keyname# на значение соответствующего ключа, если он существует.
run str {
CtxSetBool(`qq`, true)
CtxSetFloat(`ff`, 3.1415)
CtxSet(`out`, "it is #qq# that PI equals #ff#")
return Ctx("#out#. #notexist#")
}
// it is true that PI equals 3.1415. #notexist#

CtxGet(str key) str

Функция CtxGet получает значение ключа key, заменяет в нём все вхождения других ключей и возвращает полученную строку. Если указанный ключ отсутствует, то возвратится пустая строка.
func init {
CtxSet(`a1`, `end`)
CtxSet(`a2`, `=#a1#=`)
CtxSet(`a3`, `+#a2#+#a1#`)
}
run str {
init()
return CtxGet(`a3`)
}
// +=end=+end

CtxIs(str key) bool

Функция CtxIs возвращает true, если в контексте существует значение с указанным ключом. В противном случае, возвращается false.

CtxSet(str key, str val) str

Функция CtxSet добавляет ключ и значение в контекст. Если ключ уже существует, то ему будет присвоено новое значение. Функция возвращает присвоенное значение ключа.

CtxSet(str key, bool b) str

Функция CtxSet добавляет ключ и логическое значение b в контекст. Логическое значение будет преобразовано к строке true или false. Функция возвращает присвоенное значение ключа.

CtxSet(str key, float f) str

Функция CtxSet добавляет ключ и число с плавающей точкой f в контекст. Число будет преобразовано в строку. Функция возвращает присвоенное значение ключа.

CtxSet(str key, int i) str

Функция CtxSet добавляет ключ и целое число i в контекст. Число будет преобразовано в строку. Функция возвращает присвоенное значение ключа.

CtxValue(str key) str

Функция CtxValue возвращает значение ключа key как есть. В отличие от функции CtxGet, она не заменяет вхождения других ключей. Если указанный ключ отсутствует, то возвратится пустая строка.
run str {
CtxSet(`test`, `?value`)
CtxSet(`param`, `#test# ==`)
return CtxValue(`param`) + CtxValue(`nop`) + CtxGet(`param`)
}
// #test# ==?value ==
Copy link
Outline
Операторы
Функции
Ctx(str input) str
CtxGet(str key) str
CtxIs(str key) bool
CtxSet(str key, str val) str
CtxSet(str key, bool b) str
CtxSet(str key, float f) str
CtxSet(str key, int i) str
CtxValue(str key) str