Alterator/shell: различия между версиями
Строка 3: | Строка 3: | ||
== alterator-sh-functions == | == alterator-sh-functions == | ||
===Простейший бакенд=== | |||
Простейший бакенд выглядит следующим образом: | Простейший бакенд выглядит следующим образом: | ||
Строка 25: | Строка 27: | ||
Имена входных и выходных параметров могут состоять только из латинских букв, цифр и символа подчёркивания. Использование других символов '''недопустимо'''. | Имена входных и выходных параметров могут состоять только из латинских букв, цифр и символа подчёркивания. Использование других символов '''недопустимо'''. | ||
=== Глобальные переменные=== | |||
{| class="standard" | {| class="standard" | ||
!переменная | !переменная | ||
Строка 41: | Строка 43: | ||
|} | |} | ||
=== Вывод === | |||
====_==== | |||
Синтаксис: ''_ <строка> [<домен>]''<br/> | Синтаксис: ''_ <строка> [<домен>]''<br/> | ||
Строка 49: | Строка 51: | ||
Перевод осуществляется в зависимости от значения входного параметра language. Если домен не указан, используется значение глобальной переменной po_domain. | Перевод осуществляется в зависимости от значения входного параметра language. Если домен не указан, используется значение глобальной переменной po_domain. | ||
====write_error==== | |||
Синтаксис: ''write_error <сообщение>''<br> | Синтаксис: ''write_error <сообщение>''<br> | ||
Вывод сообщения об ошибке. | Вывод сообщения об ошибке. | ||
Строка 55: | Строка 57: | ||
После вывод ошибки '''обязательно должна''' стоять инструкция для выхода из функции. | После вывод ошибки '''обязательно должна''' стоять инструкция для выхода из функции. | ||
====write_string_param==== | |||
Синтаксис: ''write_string_param <имя> <значение>''<br> | Синтаксис: ''write_string_param <имя> <значение>''<br> | ||
Вывод значения параметра строкового типа. | Вывод значения параметра строкового типа. | ||
====write_bool_param==== | |||
Синтаксис: ''write_bool_param <имя> <значение>''<br> | Синтаксис: ''write_bool_param <имя> <значение>''<br> | ||
Вывод значения параметра логического типа. <значения> отличные от yes, no, on, true или 1 (в любом регистре) считаются ложными. | Вывод значения параметра логического типа. <значения> отличные от yes, no, on, true или 1 (в любом регистре) считаются ложными. | ||
====write_enum_item==== | |||
Синтаксис: ''write_enum_item <ключ> [<метка>]''<br> | Синтаксис: ''write_enum_item <ключ> [<метка>]''<br> | ||
Вывод элемента списка значений для параметра перечислимого типа. | Вывод элемента списка значений для параметра перечислимого типа. | ||
Строка 81: | Строка 83: | ||
... $in_enum ... ;; # обработка варианта выбранного пользователем, переменная равна или a или b</pre> | ... $in_enum ... ;; # обработка варианта выбранного пользователем, переменная равна или a или b</pre> | ||
====write_enum==== | |||
Синтаксис: ''write_enum''<br> | Синтаксис: ''write_enum''<br> | ||
Трансляция потока в вывод списка значений для параметра перечислимого типа. | Трансляция потока в вывод списка значений для параметра перечислимого типа. | ||
Строка 89: | Строка 91: | ||
Вид <разделителя> управляется при помощи переменной среды IFS. | Вид <разделителя> управляется при помощи переменной среды IFS. | ||
====write_table_item==== | |||
Синтаксис: ''write_table_item <параметр1> <значение1> <параметр2> <значение2> ...''<br> | Синтаксис: ''write_table_item <параметр1> <значение1> <параметр2> <значение2> ...''<br> | ||
Вывод информации для строки таблицы. | Вывод информации для строки таблицы. | ||
Строка 95: | Строка 97: | ||
Так же как и вывод информации для enum, вывод строк таблицы выполняется отдельно (в действии list). | Так же как и вывод информации для enum, вывод строк таблицы выполняется отдельно (в действии list). | ||
=== Отладка === | |||
====write_debug==== | |||
Синтаксис: write_debug <формат> [<параметры...>]<br> | Синтаксис: write_debug <формат> [<параметры...>]<br> | ||
Если выставленая переменная среды DEBUG, то печатается отладочная информация, иначе никакого вывода не происходит. Параметры такие же как и у функции printf. | Если выставленая переменная среды DEBUG, то печатается отладочная информация, иначе никакого вывода не происходит. Параметры такие же как и у функции printf. |
Версия от 16:45, 1 сентября 2008
alterator-sh-functions
Простейший бакенд
Простейший бакенд выглядит следующим образом:
#!/bin/sh alterator_api_version=1 po_domain="alterator-text" . alterator-sh-functions on_message() { case "$in_action" in read) write_string_param name value ;; esac } message_loop on_message
message_loop - основной цикл работы бакенда, on_message - вызывается при каждом новом запросе к бакенду. Входные параметры передаются через глобальные переменные с префиксом in_ (например $in_action). Результатом работы функции on_message является печать выходных параметров постредством функций с префиксом write_.
Имена входных и выходных параметров могут состоять только из латинских букв, цифр и символа подчёркивания. Использование других символов недопустимо.
Глобальные переменные
переменная | значение по умолчанию | описание |
---|---|---|
alterator_api_version | 0 | Версия API. переменная должна обязательно определяться во всех новых модулях. Текущее значение версии '1'. |
po_domain | alterator-<бакенд> | Словарь используемый для переводя сообщений на родной язык пользователя |
Вывод
_
Синтаксис: _ <строка> [<домен>]
Перевод строки на язык пользователя
Перевод осуществляется в зависимости от значения входного параметра language. Если домен не указан, используется значение глобальной переменной po_domain.
write_error
Синтаксис: write_error <сообщение>
Вывод сообщения об ошибке.
После вывод ошибки обязательно должна стоять инструкция для выхода из функции.
write_string_param
Синтаксис: write_string_param <имя> <значение>
Вывод значения параметра строкового типа.
write_bool_param
Синтаксис: write_bool_param <имя> <значение>
Вывод значения параметра логического типа. <значения> отличные от yes, no, on, true или 1 (в любом регистре) считаются ложными.
write_enum_item
Синтаксис: write_enum_item <ключ> [<метка>]
Вывод элемента списка значений для параметра перечислимого типа.
Вывод списка значений перечислимого типа обрабатывается отдельно. Недопустимо смешивать вывод значений перечислимого типа и других.
<ключ> -- имя, один из вариантов текущего значения перечислимого типа которым пользуется бакенд . Вывод текущего значения осуществляется в отдельной секции при помощи функции write_string_param.
<метка> -- описание значения, выводимое пользователю. Если метка не задана, то она считается равной <ключу>.
Пример:
list) write_enum_item "a" "variant a" write_enum_item "b" "variant b" ;; read) write_string_param "enum" "a" ;; #вывод текущего значения параметра по имени enum write) ... $in_enum ... ;; # обработка варианта выбранного пользователем, переменная равна или a или b
write_enum
Синтаксис: write_enum
Трансляция потока в вывод списка значений для параметра перечислимого типа.
Работает аналогично write_enum_item, но позволяет вывести сразу несколько вариантов. Cписок принимается на стандартный ввод в виде строк вида: <ключ><разделитель><метка> Вид <разделителя> управляется при помощи переменной среды IFS.
write_table_item
Синтаксис: write_table_item <параметр1> <значение1> <параметр2> <значение2> ...
Вывод информации для строки таблицы.
Так же как и вывод информации для enum, вывод строк таблицы выполняется отдельно (в действии list).
Отладка
write_debug
Синтаксис: write_debug <формат> [<параметры...>]
Если выставленая переменная среды DEBUG, то печатается отладочная информация, иначе никакого вывода не происходит. Параметры такие же как и у функции printf.