Alterator/shell: различия между версиями
(Import from freesource.info) |
(→Вывод) |
||
Строка 33: | Строка 33: | ||
Перевод осуществляется в зависимости от значения входного параметра language. Если домен не указан, используется значение глобальной переменной po_domain. | Перевод осуществляется в зависимости от значения входного параметра language. Если домен не указан, используется значение глобальной переменной po_domain. | ||
=====write_error===== | |||
''write_error <сообщение>'' | ''write_error <сообщение>'' | ||
вывод сообщения об ошибке. | вывод сообщения об ошибке. | ||
Строка 63: | Строка 64: | ||
''write_enum'' | ''write_enum'' | ||
трансляция потока в вывод списка значений для параметра перечислимого типа. | трансляция потока в вывод списка значений для параметра перечислимого типа. | ||
Работает аналогично write_enum_item, но позволяет вывести сразу несколько вариантов. | Работает аналогично write_enum_item, но позволяет вывести сразу несколько вариантов. | ||
Cписок принимается на стандартный ввод в виде строк вида: ''<ключ><разделитель><метка>'' | Cписок принимается на стандартный ввод в виде строк вида: ''<ключ><разделитель><метка>'' | ||
Вид <разделителя> управляется при помощи переменной среды IFS. | Вид <разделителя> управляется при помощи переменной среды IFS. | ||
''write_table_item <параметр1> <значение1> <параметр2> <значение2> ...'' | |||
вывод информации для строки таблицы. | |||
==== Отладка ==== | ==== Отладка ==== | ||
write_debug <формат> [<параметры...>] | write_debug <формат> [<параметры...>] | ||
если выставленая переменная среды DEBUG, то печатается отладочная информация, иначе никакого вывода не происходит. Параметры такие же как и у функции printf. | если выставленая переменная среды DEBUG, то печатается отладочная информация, иначе никакого вывода не происходит. Параметры такие же как и у функции printf. |
Версия от 16:31, 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 - версия API, переменная обязательно должна определяться во всех новых бакендах. Текущее значение версии - 1.
Вывод
_ <строка> [<домен>] перевод строки
Перевод осуществляется в зависимости от значения входного параметра language. Если домен не указан, используется значение глобальной переменной po_domain.
write_error
write_error <сообщение> вывод сообщения об ошибке.
После вывод ошибки обязательно должна стоять инструкция для выхода из функции.
write_string_param <имя> <значение> вывод значения параметра строкового типа.
write_bool_param <имя> <значение> вывод значения параметра логического типа. <значения> отличные от yes, no, on, true или 1 (в любом регистре) считаются ложными.
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_item, но позволяет вывести сразу несколько вариантов.
Cписок принимается на стандартный ввод в виде строк вида: <ключ><разделитель><метка>
Вид <разделителя> управляется при помощи переменной среды IFS.
write_table_item <параметр1> <значение1> <параметр2> <значение2> ... вывод информации для строки таблицы.
Отладка
write_debug <формат> [<параметры...>] если выставленая переменная среды DEBUG, то печатается отладочная информация, иначе никакого вывода не происходит. Параметры такие же как и у функции printf.