Документация Engee

Публичные методы программного управления Genie

Пример создания простого приложения с помощью фреймворка Genie также представлен в Сообществе Engee.

Здесь представлены все публичные методы программного управления genie для работы с фреймворком Genie. Для их использования в приложениях Genie, подключите библиотеку инструментов Engee с помощью команды using Engee внутри вашего кода (app.jl).

Методы genie

engee.genie.eval(code::AbstractString)

Выполняет указанный код в рабочем пространстве Engee вне контекста запущенного приложения Genie. Используется для запуска отдельных выражений, отладки или динамического выполнения кода без необходимости перезапуска приложения.

Аргументы

code::AbstractString: строка с кодом на Julia, который будет выполнен в рабочем пространстве Engee.

Примеры

engee.genie.eval("x = 5")
include([mapexpr::Function,] path::AbstractString)

Evaluate the contents of the input source file in the global scope of the containing module. Every Module (except those defined with baremodule) has a private 1-argument definition of include, which evaluates the file in that module, for use inside that module. Returns the result of the last evaluated expression of the input file. During including, a task-local include path is set to the directory containing the file. Nested calls to include will search relative to that path. This function is typically used to load source interactively, or to combine files in packages that are broken into multiple source files. The argument path is normalized using normpath which will resolve relative path tokens such as .. and convert / to the appropriate path separator.

The optional first argument mapexpr can be used to transform the included code before it is evaluated: for each parsed expression expr in path, the include function actually evaluates mapexpr(expr). If it is omitted, mapexpr defaults to identity.

Use Base.include to evaluate a file into another module.

Julia’s syntax lowering recognizes an explicit call to a literal include at top-level and inserts an implicit @Core.latestworld to make any include’d definitions visible to subsequent code. Note however that this recognition is syntactic. I.e. assigning const myinclude = include may require and explicit @Core.latestworld call after myinclude.

Совместимость: Julia 1.5

Julia 1.5 is required for passing the mapexpr argument.

engee.genie.list()

Выводит список всех запущенных приложений Genie.

Примеры

engee.genie.list()
engee.genie.recv(wsVarName::AbstractString; context::Module=GenieAPI )

Возвращает значение переменной из указанного контекста (модуля) в рабочем пространстве Engee во время выполнения приложения Genie.

По умолчанию переменная ищется в модуле GenieAPI, но при необходимости можно явно указать другой модуль через параметр context. Так, если переменная определена в другом модуле, то используется параметр context, указывающий, в каком пространстве имен ее искать.

Аргументы

  • wsVarName::AbstractString: имя переменной, значение которой нужно получить.

  • context::Module=GenieAPI: модуль, в котором производится поиск переменной. Указывается явно, если переменная не принадлежит модулю GenieAPI.

Примеры

# Получение значения переменной x из модуля Main
engee.genie.recv("x", Main)

# Получение значения переменной a из модуля по умолчанию
engee.genie.recv("a")

# Получение значения переменной value из пользовательского модуля
engee.genie.recv("value"; context=MyModule)
engee.genie.send(wsVarName::AbstractString, value::Any)

Сохраняет значение value в переменную wsVarName в рабочем пространстве Engee во время выполнения приложения на Genie.

Если переменная с таким именем ранее не существовала, то она будет создана автоматически. Функция удобна для передачи промежуточных результатов или пользовательских данных из приложения Genie в сессию Engee.

Аргументы

  • wsVarName::AbstractString: имя переменной, которой присваивается значение.

  • value::Any: значение, которое будет сохранено в переменной. Может быть любого типа.

Примеры

# Присвоение переменной x значение 124
engee.genie.send("x", 124)

# Сохранение строки в переменной message
engee.genie.send("message", "Hello")
engee.genie.start(app_path::String; devel::Bool=false, log_file::String="", open_url::Bool=false)

Запускает приложение Genie по указанному пути.

После запуска функция возвращает GenieApplicationStatus, в котором доступна ссылка на приложение (также выводится в консоль в виде ... at 'https://.../genie/<AppName>/'). Ссылку можно открыть в новой вкладке/окне или скопировать для открытия вручную.

Перед использованием команды engee.genie.start убедитесь, что если приложение представляет собой директорию, то в ней есть файл с кодом приложения и расширением .jl. Также удалите файлы config и *.toml (если они присутствуют).

Аргументы

  • app_path::String: путь до директории приложения. Может быть относительным или абсолютным.

  • devel::Bool=false: параметр для включения режима разработки, при котором изменения в коде применяются без перезапуска приложения.

  • log_file::String="": параметр для указания пути к файлу логов. Если не задан, то логи не сохраняются отдельно.

  • open_url::Bool=false: если true, то Engee автоматически откроет URL приложения в браузере (ссылка также доступна в возвращаемом статусе).

Примеры

# Запуск Genie через файл приложения app.jl, без режима разработки и сохранения логов
engee.genie.start("/user/app.jl")

# Запуск Genie через файл приложения app.jl, с режимом разработки и сохранением логов
engee.genie.start("/user/app.jl", devel=true, log_file="/user/logs.txt")

# Запуск и автоматическое открытие приложения в браузере
engee.genie.start("RadarCalculate", open_url=true)
engee.genie.stop(app_path::String)

Останавливает запущенное приложение Genie.

Аргументы

app_path::String: путь до директории приложения. Может быть относительным или абсолютным.

Примеры

# Остановка приложения по абсолютному пути
engee.genie.stop("/user/app.jl")

# Остановка приложения по относительному пути
engee.genie.stop("app.jl")