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

Программное управление скриптами

Здесь представлены все методы программного управления engee.script. Для ознакомления с методами engee обратитесь к статье Публичные методы программного управления.

Методы script

engee.script.edit(path::String)

Открывает в редакторе интерактивный скрипт, расположенный по пути path (включая имя и расширение). Если такого файла нет, то по указанному пути создается пустой файл скрипта и открывается в редакторе. Если указанное в path расширение отличается от '.ngscript', то функция вернёт ошибку ErrorException("path should end with '.ngscript' extension").

Примеры

# Открывает скрипт file.ngscript в Редакторе скриптов Engee
engee.script.edit( "file.ngscript" )
engee.script.run(path::String; isolate::Bool = false)

Запускает скрипт по указанному пути. Возвращает результат последнего верхнеуровневого выражения в скрипте.

Аргументы

  • path::String: абсолютный путь до скрипта.

  • isolate::Bool = false: если равен true, то скрипт выполняется в изолированном окружении. По умолчанию равен false. При равном false скрипт выполняется в основном пользовательском окружении (модуль Main). Все переменные, объявленные глобально или на верхнем уровне, сохраняются после выполнения. При равном true скрипт исполняется во временном изолированном окружении. Все переменные, созданные во время исполнения, не сохраняются после завершения скрипта.

Примеры

Рассмотрим файл foo.ngscript с единственной кодовой ячейкой:

x = 10
y = try
    push!(a, :foo)  # Пытаемся добавить :foo в существующий массив `a`
    5               # Если все хорошо — присваиваем y значение 5
catch _
    3               # Если произошла ошибка — присваиваем y значение 3
end
x + y               # Возвращаем сумму x и y

Исполнение в пользовательском окружении (isolate = false) изменит переменные x и y, а также добавит :foo в массив а:

a = Symbol[:bar, :baz]  # Исходный массив
x = y = 0               # Переменные до запуска скрипта
(engee.script.run("foo.ngscript"), x, y, a)
# ⇒ (15, 10, 5, [:bar, :baz, :foo])
# Скрипт изменил переменные x и y, а также добавил :foo в массив a

При исполнении в изолированном окружении (isolate = true) скрипт не повлияет на внешние переменные и изменения не сохранятся:

# Исходный массив
a = Symbol[:bar, :baz]

# Переменные до запуска скрипта
x = y = 0
(engee.script.run("foo.ngscript"; isolate = true), x, y, a)
# ⇒ (13, 0, 0, [:bar, :baz])
# Скрипт не повлиял на внешние переменные — изменения не сохранились