node package manager
Painless code sharing. npm Orgs help your team discover, share, and reuse code. Create a free org »

gj

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: Определяет префикс имени функции-обертки кода шага.