gj
Описание
gj предоставляет интерфейс для компиляции исходного gj-кода в обычный JavaScript-код.
gj-код представляет собой обычный JavaScript-код с несколькими улучшениями:
- Код может разделяться на несколько шагов, каждый из которых выполняет определенное асинхронное действие и передает управление следующему шагу.
- В gj-коде доступны несколько инструкций, которые заменяются актуальными значениями во время компиляции, например
$doneи$next.
Пример
Код gj:
// Код шага 1
>
// Код шага 2
$next();
>
// Код шага 3
$done();Скомпилированный JavaScript-код:
// Код шага 1
__gj__step2();
function __gj__step2() {
// Код шага 2
__gj__step3();
}
function __gj__step3() {
__gj__callback();
}Формат кода
Код gj представляет собой набор шагов.
Строки-разделители
Каждый шаг (кроме первого) начинается со строки-разделителя. Каждая строка-разделитель должна содержать знак >, который может дополняться именем шага и/или списком аргументов.
Анонимный шаг без аргументов:
>Анонимный шаг с аргументами:
> (arg1, arg2)Именованный шаг без аргументов:
> nameИменованный шаг с аргументами:
> name (arg1, arg2)Код шага
Код первого шага выполняется в области видимости объемлющей функции, поэтому может содержать объявления переменных, общих для всех шагов.
Код остальных шагов выполняется в области видимости, локальной для шага.
Внутри каждого шага доступны следующие специальные инструкции:
$next: Представляет ссылку на следующий шаг. В последнем шаге имеет значение, идентичное инструкции$done.$done: Представляет ссылку на функцию обратного вызова, переданную объемлющей функции.$name: Представляет ссылку на шаг с именемname.
Если первый шаг не содержит ни одной инструкции $next или $done, его код автоматически дополняется инструкцией $next().
API
compile(source, [options]): Компилирует исходный кодsourceи возвращает JavaScript-код. Параметрoptionsможет указывать дополнительные аргументы:callbackName: Определяет имя функции обратного вызова, вызываемой при обращении к инструкции$done. По умолчанию имеет значениеcallback.stepPrefix: Определяет префикс имени функции-обертки кода шага.
12 years ago