Alterator/shell
Материал из ALT Linux Wiki
(→Вывод) |
(→Глобальные переменные) |
||
(31 промежуточная версия не показана) | |||
Строка 1: | Строка 1: | ||
- | [[ | + | [[Категория:Sisyphus]] |
- | + | ||
== alterator-sh-functions == | == alterator-sh-functions == | ||
- | Простейший | + | === Простейший бэкенд === |
- | < | + | |
+ | Простейший бэкенд выглядит следующим образом: | ||
+ | <source lang="bash"> | ||
+ | #!/bin/sh | ||
alterator_api_version=1 | alterator_api_version=1 | ||
Строка 19: | Строка 21: | ||
} | } | ||
- | message_loop on_message</ | + | message_loop on_message |
- | ''message_loop'' | + | </source> |
- | Результатом работы функции ''on_message'' является печать выходных параметров постредством функций с префиксом ''write_''. | + | |
+ | === Глобальные переменные === | ||
+ | {| class="standard" | ||
+ | !переменная | ||
+ | !значение по умолчанию | ||
+ | !описание | ||
+ | |- | ||
+ | |alterator_api_version | ||
+ | |0 | ||
+ | |Версия API. переменная должна обязательно определяться во всех новых модулях. Текущее значение версии '1'. | ||
+ | |- | ||
+ | |po_domain | ||
+ | |alterator-<бэкенд> | ||
+ | |Словарь используемый для перевода сообщений на родной язык пользователя | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | === Ввод === | ||
+ | |||
+ | ==== message_loop ==== | ||
+ | Синтаксис: ''message_loop [<обработчик>]''<br /> | ||
+ | Основной цикл работы бэкенда, ''on_message'' — вызывается при каждом новом запросе к бэкенду. Входные параметры передаются через глобальные переменные с префиксом ''in_'' (например ''$in_action''). | ||
+ | Результатом работы функции ''on_message'' является печать выходных параметров постредством функций с префиксом ''write_''. | ||
Имена входных и выходных параметров могут состоять только из латинских букв, цифр и символа подчёркивания. Использование других символов '''недопустимо'''. | Имена входных и выходных параметров могут состоять только из латинских букв, цифр и символа подчёркивания. Использование других символов '''недопустимо'''. | ||
- | + | === Вывод === | |
- | ==== | + | ==== _ ==== |
- | ''_ | + | |
- | + | Синтаксис: ''_ <строка> [<домен>]''<br /> | |
+ | Перевод строки на язык пользователя | ||
Перевод осуществляется в зависимости от значения входного параметра language. Если домен не указан, используется значение глобальной переменной po_domain. | Перевод осуществляется в зависимости от значения входного параметра language. Если домен не указан, используется значение глобальной переменной po_domain. | ||
- | + | ==== write_error ==== | |
- | ''write_error <сообщение>'' | + | Синтаксис: ''write_error <сообщение>''<br /> |
- | + | Вывод сообщения об ошибке. | |
- | После | + | После вывода ошибки '''обязательно должна''' стоять инструкция для выхода из функции. |
- | ''write_string_param <имя> <значение>'' | + | ==== write_string_param ==== |
- | + | Синтаксис: ''write_string_param <имя> <значение>''<br /> | |
+ | Вывод значения параметра строкового типа. | ||
- | ''write_bool_param <имя> <значение>'' | + | ==== write_bool_param ==== |
- | + | Синтаксис: ''write_bool_param <имя> <значение>''<br /> | |
+ | Вывод значения параметра логического типа. <значения>, отличные от yes, no, on, true или 1 (в любом регистре), считаются ложными. | ||
- | ''write_enum_item <ключ> [<метка>]'' | + | ==== write_enum_item ==== |
- | + | Синтаксис: ''write_enum_item <ключ> [<метка>]'' | |
- | Вывод списка значений перечислимого типа | + | Вывод элемента списка значений для параметра перечислимого типа. |
- | <ключ> | + | Вывод списка значений перечислимого типа обрабатывается отдельно. Недопустимо смешивать вывод значений перечислимого типа и других. |
- | + | ||
+ | <ключ> — имя, один из вариантов текущего значения перечислимого типа которым пользуется бэкенд. Вывод текущего значения осуществляется в отдельной секции при помощи функции ''write_string_param''. | ||
+ | |||
+ | <метка> — описание значения, выводимое пользователю. Если метка не задана, то она считается равной <ключу>. | ||
Пример: | Пример: | ||
- | < | + | <source lang="bash"> |
+ | list) write_enum_item "a" "variant a" | ||
write_enum_item "b" "variant b" | write_enum_item "b" "variant b" | ||
;; | ;; | ||
- | + | read) | |
- | + | write_string_param "enum" "a" ;; #вывод текущего значения параметра по имени enum | |
- | + | write) | |
- | ... $in_enum ... ;; # обработка варианта выбранного пользователем, переменная равна или a или b</ | + | ... $in_enum ... ;; # обработка варианта выбранного пользователем, переменная равна или a или b |
- | + | </source> | |
- | + | ||
- | + | ||
+ | ==== write_enum ==== | ||
+ | Синтаксис: ''write_enum''<br /> | ||
+ | Трансляция потока в вывод списка значений для параметра перечислимого типа. | ||
Работает аналогично write_enum_item, но позволяет вывести сразу несколько вариантов. | Работает аналогично write_enum_item, но позволяет вывести сразу несколько вариантов. | ||
Строка 70: | Строка 102: | ||
Вид <разделителя> управляется при помощи переменной среды IFS. | Вид <разделителя> управляется при помощи переменной среды IFS. | ||
- | ''write_table_item <параметр1> <значение1> <параметр2> <значение2> | + | ==== write_table_item ==== |
- | + | Синтаксис: ''write_table_item <параметр1> <значение1> <параметр2> <значение2> …''<br /> | |
+ | Вывод информации для строки таблицы. | ||
+ | |||
+ | Так же как и вывод информации для enum, вывод строк таблицы выполняется отдельно (в действии list). | ||
+ | |||
+ | === Отладка === | ||
+ | |||
+ | ==== write_debug ==== | ||
+ | Синтаксис: write_debug <формат> [<параметры...>]<br /> | ||
+ | Если выставленая переменная среды ALTERATOR_DEBUG, то печатается отладочная информация, иначе никакого вывода не происходит. Параметры такие же как и у функции printf. | ||
+ | Переменная ALTERATOR_DEBUG автоматически выставляется при запуске любого интерфейса alterator в отладочном режиме. | ||
+ | |||
+ | |||
+ | === Отличия в версиях API === | ||
+ | Версия 0 полностью совместима с библиотекой /usr/share/alterator/build/backend3.sh | ||
+ | |||
+ | Начиная с версии 1, стандартный вывод перенаправлен в стандартный вывод ошибок. Для ответа из бэкенда следует пользоваться '''только''' стандартными функциями серии write_. Поскольку начиная с этой версии библиотека сама формирует ответ, то нет необходимости в выводе символов '(' и ')', а также наличия "обработчика по умолчанию". Версию '''необходимо''' указывать до включения файла с библиотекой. | ||
+ | |||
+ | Было: | ||
+ | <source lang="bash"> | ||
+ | . alterator-sh-functions. | ||
+ | |||
+ | on_message() | ||
+ | { | ||
+ | case "$in_action" | ||
+ | a) | ||
+ | echo '(' | ||
+ | printf 'a "%s"' "b" | ||
+ | echo ')' | ||
+ | ;; | ||
+ | *) | ||
+ | echo '#f' | ||
+ | ;; | ||
+ | esac | ||
+ | } | ||
+ | |||
+ | message_loop | ||
+ | </source> | ||
+ | |||
+ | Стало: | ||
+ | <source lang="bash"> | ||
+ | |||
+ | alterator_api_version=1 | ||
+ | . alterator-sh-functions | ||
+ | |||
+ | on_message() | ||
+ | { | ||
+ | case "$in_action" | ||
+ | a) | ||
+ | write_string_param a b | ||
+ | ;; | ||
+ | esac | ||
+ | } | ||
+ | |||
+ | message_loop | ||
+ | </source> | ||
+ | |||
- | === | + | {{Category navigation|title=Alterator|category=Alterator|sortkey={{SUBPAGENAME}}}} |
- | + | ||
- | + |
Текущая версия на 03:57, 5 июля 2016
Содержание |
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
Глобальные переменные
переменная | значение по умолчанию | описание |
---|---|---|
alterator_api_version | 0 | Версия API. переменная должна обязательно определяться во всех новых модулях. Текущее значение версии '1'. |
po_domain | alterator-<бэкенд> | Словарь используемый для перевода сообщений на родной язык пользователя |
Ввод
message_loop
Синтаксис: message_loop [<обработчик>]
Основной цикл работы бэкенда, on_message — вызывается при каждом новом запросе к бэкенду. Входные параметры передаются через глобальные переменные с префиксом in_ (например $in_action).
Результатом работы функции on_message является печать выходных параметров постредством функций с префиксом write_.
Имена входных и выходных параметров могут состоять только из латинских букв, цифр и символа подчёркивания. Использование других символов недопустимо.
Вывод
_
Синтаксис: _ <строка> [<домен>]
Перевод строки на язык пользователя
Перевод осуществляется в зависимости от значения входного параметра 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 <формат> [<параметры...>]
Если выставленая переменная среды ALTERATOR_DEBUG, то печатается отладочная информация, иначе никакого вывода не происходит. Параметры такие же как и у функции printf.
Переменная ALTERATOR_DEBUG автоматически выставляется при запуске любого интерфейса alterator в отладочном режиме.
Отличия в версиях API
Версия 0 полностью совместима с библиотекой /usr/share/alterator/build/backend3.sh
Начиная с версии 1, стандартный вывод перенаправлен в стандартный вывод ошибок. Для ответа из бэкенда следует пользоваться только стандартными функциями серии write_. Поскольку начиная с этой версии библиотека сама формирует ответ, то нет необходимости в выводе символов '(' и ')', а также наличия "обработчика по умолчанию". Версию необходимо указывать до включения файла с библиотекой.
Было:
. alterator-sh-functions. on_message() { case "$in_action" a) echo '(' printf 'a "%s"' "b" echo ')' ;; *) echo '#f' ;; esac } message_loop
Стало:
alterator_api_version=1 . alterator-sh-functions on_message() { case "$in_action" a) write_string_param a b ;; esac } message_loop