Alterator/shell

Материал из ALT Linux Wiki

< Alterator(Различия между версиями)
Перейти к: навигация, поиск
(Import from freesource.info)
(Глобальные переменные)
 
(32 промежуточные версии не показаны)
Строка 1: Строка 1:
-
[[Category:Sisyphus]]
+
[[Категория:Sisyphus]]
-
{{MovedFromFreesourceInfo|AltLinux/Sisyphus/Alterator/shell}}
+
== alterator-sh-functions ==
== alterator-sh-functions ==
-
Простейший бакенд выглядит следующим образом:
+
=== Простейший бэкенд ===
-
<pre>#!/bin/sh
+
 
 +
Простейший бэкенд выглядит следующим образом:
 +
<source lang="bash">
 +
#!/bin/sh
alterator_api_version=1
alterator_api_version=1
Строка 19: Строка 21:
}
}
-
message_loop on_message</pre>
+
message_loop on_message
-
''message_loop'' - основной цикл работы бакенда, ''on_message'' - вызывается при каждом новом запросе к бакенду. Входные параметры передаются через глобальные переменные с префиксом ''in_'' (например ''$in_action'').  
+
</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_''.
Имена входных и выходных параметров могут состоять только из латинских букв, цифр и символа подчёркивания. Использование других символов '''недопустимо'''.
Имена входных и выходных параметров могут состоять только из латинских букв, цифр и символа подчёркивания. Использование других символов '''недопустимо'''.
-
''alterator_api_version'' - версия API, переменная обязательно должна определяться во всех новых бакендах. Текущее значение версии - 1.
+
=== Вывод ===
-
==== Вывод ====
+
==== _ ====
-
''_ <строка> [<домен>]''
+
 
-
перевод строки
+
Синтаксис: ''_ <строка> [<домен>]''<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 ====
-
вывод значения параметра логического типа. <значения> отличные от yes, no, on, true или 1 (в любом регистре) считаются ложными.
+
Синтаксис: ''write_bool_param <имя> <значение>''<br />
 +
Вывод значения параметра логического типа. <значения>, отличные от yes, no, on, true или 1 (в любом регистре), считаются ложными.
-
''write_enum_item <ключ> [<метка>]''
+
==== write_enum_item ====
-
вывод элемента списка значений для параметра перечислимого типа.
+
Синтаксис: ''write_enum_item <ключ> [<метка>]''
-
Вывод списка значений перечислимого типа обрабатывается отдельно. Недопустимо смешивать вывод значений перечислимого типа и других.  
+
Вывод элемента списка значений для параметра перечислимого типа.
-
<ключ> -- имя, один из вариантов текущего значения перечислимого типа которым пользуется бакенд  . Вывод текущего значения осуществляется в отдельной секции при помощи функции ''write_string_param''.
+
Вывод списка значений перечислимого типа обрабатывается отдельно. Недопустимо смешивать вывод значений перечислимого типа и других.
-
<метка> -- описание значения, выводимое пользователю. Если метка не задана, то она считается равной <ключу>.
+
 
 +
<ключ> — имя, один из вариантов текущего значения перечислимого типа которым пользуется бэкенд. Вывод текущего значения осуществляется в отдельной секции при помощи функции ''write_string_param''.
 +
 
 +
<метка> — описание значения, выводимое пользователю. Если метка не задана, то она считается равной <ключу>.
Пример:
Пример:
-
<pre>list) write_enum_item "a" "variant a"
+
<source lang="bash">
 +
    list) write_enum_item "a" "variant a"
           write_enum_item "b" "variant b"
           write_enum_item "b" "variant b"
           ;;
           ;;
-
  read)
+
    read)
-
        write_string_param "enum" "a"  ;; #вывод текущего значения параметра по имени enum
+
        write_string_param "enum" "a"  ;; #вывод текущего значения параметра по имени enum
-
  write)
+
    write)
-
         ... $in_enum ... ;; # обработка варианта выбранного пользователем, переменная равна или a или b</pre>
+
         ... $in_enum ... ;; # обработка варианта выбранного пользователем, переменная равна или a или b
 +
</source>
-
''write_enum''
+
==== write_enum ====
-
трансляция потока в вывод списка значений для параметра перечислимого типа.
+
Синтаксис: ''write_enum''<br />
 +
Трансляция потока в вывод списка значений для параметра перечислимого типа.
Работает аналогично write_enum_item, но позволяет вывести сразу несколько вариантов.
Работает аналогично write_enum_item, но позволяет вывести сразу несколько вариантов.
Строка 68: Строка 102:
Вид <разделителя> управляется при помощи переменной среды IFS.
Вид <разделителя> управляется при помощи переменной среды IFS.
-
==== Отладка ====
+
==== write_table_item ====
-
write_debug <формат> [<параметры...>]
+
Синтаксис: ''write_table_item <параметр1> <значение1> <параметр2> <значение2> …''<br />
-
если выставленая переменная среды DEBUG, то печатается отладочная информация, иначе никакого вывода не происходит. Параметры такие же как и у функции printf.
+
Вывод информации для строки таблицы.
 +
 
 +
Так же как и вывод информации для 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


 
Личные инструменты