Редактор скриптов
Скрипт (или интерактивный скрипт) — это файл, содержащий несколько последовательно выполняющихся команд.
Работа со скриптами в Engee происходит в окне редактора скриптов . Чтобы открыть редактор, нажмите иконку в рабочем пространстве:
Работа со скриптами
Создание скрипта
Чтобы создать скрипт, нажмите + в редакторе скриптов и выберите нужный формат:
→
По умолчанию скрипты Engee имеют формат
|
Можно создать скрипт с помощью файлового браузера . Кликните правой кнопкой мыши в пустом поле окна файлов для вызова контекстного меню. В меню выберите Создать и Скрипт:
Секции редактора скриптов
В редакторе скриптов можно создать кодовую или текстовую ячейки.
Для создания ячеек подведите указатель мыши к верхней кромке окна редактора скриптов для появления кнопки выбора ячейки:
-
+ Код — создает новую секцию с кодом (кодовую ячейку). В этой ячейке доступны все возможности написания кода на языке программирования Engee.
-
+ Текст — создает новую секцию с текстом (текстовая ячейка). В этой секции можно добавлять и форматировать любое описание, картинки, таблицы, ссылки и т.д.
Новые секции можно добавлять в любом месте рабочей области редактора скриптов (например, в начале, конце или между двумя другими секциями). |
Секция с кодом
Создадим секцию с кодом и рассмотрим ее интерфейс:
-
Выполнить и перейти — выполняет код в данной секции.
-
Выполнить до конца — выполняет все секции с кодом ниже выбранной секции.
-
Выполнить до ячейки — выполняет все секции с кодом выше выбранной секции.
-
Поменять положение результата работы кода — выбирает позицию для вывода. Имеет два варианта:
-
4.1. Вывод результата справа — выводит результат справа для конкретной секции.
-
4.2. Спрятать вывод результата — прячет выбор результата для конкретной секции.
-
-
Маска — добавляет маску для выбранной кодовой ячейки (подробнее см. ниже).
-
Переместить ниже — перемещает секцию на одну вниз.
-
Переместить выше — перемещает секцию на одну вверх.
-
Копировать — копирует секцию.
-
Вставить — вставляет секцию.
-
Удалить — удаляет секцию.
В кодовой ячейке также можно:
-
Выполнить выделенный участок кода (ПКМ по выделенной строке или горячая клавиша Shift+F7):
-
Выполнить текущую строку с курсором (Ctrl+Shift+F5 на Windows/Linux или Shift+⌘+F5 на macOS).
Секция с текстом
Создадим секцию с текстом:
Дважды кликнем по секции для открытия поля ввода, теперь можно вводить нужный текст в появившейся ячейке. Для форматирования текста используются языки разметки Markdown, LaTeX и HTML. Подробнее о разметке в текстовой ячейке читайте здесь.
Рассмотрим интерфейс текстовой секции:
-
Полужирный — выделяет текст полужирным шрифтом.
-
Курсив — делает выделенный текст курсивом.
-
Зачеркнутый — зачеркивает выделенный текст.
-
Показать/скрыть заголовок — добавляет заголовок с помощью знака решетки # или удаляет его.
-
Добавить маркированный список — добавляет два пункта маркированного списка.
-
Добавить нумерованный список — добавляет два пункта нумерованного списка.
-
Вставить таблицу — добавляет таблицу. Таблица может быть отредактирована в поле ввода секции.
-
Вставить цитату — вставляет шаблон для цитаты.
-
Вставить ссылку — вставляет шаблон для ссылки.
-
Вставить секцию с кодом — вставляет шаблон для кода. Данный код не может быть выполнен, поскольку не задан в секции с кодом и служит только для визуального восприятия.
-
Вставить картинку — открывает файловую систему вашего компьютера для выбора изображений.
-
Вставить горизонтальную линию — вставляет горизонтальную разделительную линию.
Аналогично секциям кода в текстовых ячейках использует следующие команды: перемещение, копирование, вставка и удаление.
Скрытие ячеек и содержание
Для скрытия ячеек в редакторе скриптов Engee, текстовая ячейка должна быть отмечена как параграф с помощью Markdown и иметь соответствующий уровень и расположение:
-
ячейка должна содержать заголовок в формате Markdown от 1 до 6 уровня (
#
,##
и т.д.). -
под заголовком верхнего уровня должна находиться ячейка с заголовком более низкого уровня.
В редакторе скриптов можно скрыть:
-
кодовые ячейки (имеют наименьший уровень заголовка);
-
текстовые ячейки без заголовков (также наименьший уровень);
-
текстовые ячейки с заголовками более низкого уровня.
Если у текстовой ячейки с заголовком первого уровня под ней находится, например, 10 кодовых ячеек — это образует одну секцию, которая будет скрыта. Когда появляется 11-я ячейка — новый параграф с заголовком первого уровня или такого же уровня, что и первая текстовая ячейка, то начинается новая секция.
Заголовки текстовых ячеек с первого по шестой уровень образуют Содержание :
В содержании можно:
-
Добавить вложенный параграф
— добавляет текстовую ячейку с заголовком на уровень выше. Например, если вложенный параграф добавляется к текстовой ячейке первого уровня (
#
), то он станет ячейкой второго уровня (##
). При достижении максимальной вложенности (последняя текстовая ячейка имеет заголовок шестого уровня) — кнопка недоступна. -
Запустить параграф
— запускает исполнение всех ячеек с кодом выбранного параграфа. Если параграф не содержит кодовых ячеек — кнопка недоступна.
-
Удалить параграф
— удаляет выбранный параграф. Заголовки и ячейки с кодом, вложенные в секцию параграфа, удалены не будут.
Запуск/остановка скриптов
Для запуска или остановки скрипта нажмите кнопку Пуск или Стоп. Кнопки находятся на панели запуска скрипта:
Чтобы запустить секцию с кодом, нажмите на кнопку Выполнить. Результат отобразится ниже под секцией:
Можно свернуть вывод исполнения кода в более компактную форму в случае, если он занимает слишком много места. Для этого воспользуйтесь кнопкой Ограничить вывод :
Чтобы вернуть вывод в прежнее состояние используйте кнопку Раскрыть вывод .
Чтобы очистить результаты выполнения секций с кодом в скрипте, нажмите на иконку Очистить результаты на панели запуска скрипта.
Автосохранение
Функция автосохранения позволяет автоматически сохранять изменения в интерактивных скриптах, предотвращая потерю данных. Чтобы включить эту функцию, откройте окно редактора скриптов или любой интерактивный скрипт, нажмите на троеточие в правом верхнем углу и включите автосохранение:
В меню доступны три варианта автосохранения:
-
afterDelay — скрипт автоматически сохраняется через определенное время задержки. При выборе этого параметра, задержка по умолчанию составляет 1000 мс.
-
onFocusChange — скрипт автоматически сохраняется после потери фокуса редактором. Это означает, что при переключении на другое окно Engee, изменения в редакторе скриптов будут сохранены;
-
onWindowChange — скрипт автоматически сохраняется при переключении с вкладки браузера, на которой открыт Engee, на другую вкладку. Это означает, что при смене вкладки браузера с Engee на любую другую, изменения в редакторе скриптов будут сохранены.
Маски кодовых ячеек
Для более удобной параметризации и наглядного представления кода зачастую используются интерактивные элементы управления. Ими могут выступать различные поля ввода данных, списки, слайдеры и т.д. В Engee такие элементы реализуются с помощью масок кодовых ячеек.
Работа с масками кодовых ячеек подробно рассмотрена в примере Маскирование кодовых ячеек интерактивных скриптов |
Маска кодовых ячеек — это инструмент, который превращает переменные в кодовых ячейках скриптов Engee в интерактивные элементы управления. Наложение маски позволяет полностью скрыть код ячеек, при этом сохранив их полную работоспособность.
Для создания маски кодовой ячейки наведите курсор на кодовую ячейку и в инструментах выберите Маска и Добавить поле:
Добавление поля откроет интерактивное меню. В зависимости от типа поля, меню добавления меняет свои опции (меняются доступные типы переменной и/или появляются дополнительные настройки). Всего доступно четыре типа:
-
Выпадающий список (dropdown) — это выпадающий список опций с выбором одного варианта. При нажатии на выпадающий список дается выбрать нужный вариант.
Пример выпадающего списка
Создадим пустую кодовую ячейку и добавим маску выпадающего списка со следующими настройками:
После сохранения кодовая ячейка сменит свой вид:
При этом содержимое кодовой ячейки заполнит следующий код:
dropdown_variable = "1" # @param ["1","2","3"] {allow-input:true}
Изменяя этот код можно менять содержимое маски без обращения к инструменту Маска
.
-
Поле ввода (input) — это окно для ввода данных.
Пример поля ввода
Создадим пустую кодовую ячейку и добавим маску поля ввода со следующими настройками:
Здесь плейсхолдер — это текст, который отображается внутри поля ввода, пока не будут введены какие-либо данные. Обычно используется, чтобы дать подсказку о том, какую информацию нужно ввести. Например, для поля даты отлично подойдет вариант
Введите дату в формате ГГГГ-ММ-ДД
.Получим следующий вариант:
При этом содержимое кодовой ячейки заполнит следующий код:
date_of_birth = "2025-01-16" # @param {type:"date",placeholder:"Введите дату в формате ГГГГ-ММ-ДД"}
Исходя из названия переменной нам нужно дату рождения, а не сегодняшнюю дату (проставленную системой автоматически), поэтому поменяем дату на нужную. Поменять дату можно как в маске, так и в самой кодовой ячейке, просто выставив корректную дату вместо указанных
"2025-01-16"
.При удалении даты маски можно увидеть, что плейсхолдер работает корректно и улучшает пользовательский опыт:
-
Markdown — это представление разметки на языке Markdown для реализации кодовых масок.
Пример Markdown
Создадим пустую кодовую ячейку и добавим маску Markdown со следующими настройками:
# Построение синусойды Для построения простой синусойды используйте следующие блоки: |Блоки в модели|Описание| | --------- | -------- | |[Sine wave](https://engee.com/helpcenter/stable/ru/base-lib-sources/sine-wave.html)|Генератор синусоидального сигнала.| |[Terminator](https://engee.com/helpcenter/stable/ru/base-lib-sinks/terminator.html)|Заглушка выходного порта.|
Получим следующий вариант:
При этом содержимое кодовой ячейки заполнит следующий код:
# @markdown # Построение синусойды # @markdown # @markdown Для построения простой синуосойды используйте следующие блоки: # @markdown # @markdown |Блоки в модели|Описание| # @markdown | --------- | -------- | # @markdown |[Sine wave](https://engee.com/helpcenter/stable/ru/base-lib-sources/sine-wave.html)|Генератор синусоидального сигнала.| # @markdown |[Terminator](https://engee.com/helpcenter/stable/ru/base-lib-sinks/terminator.html)|Заглушка выходного порта.|
-
Слайдер (slider) — это представление ползунка (слайдера) с выбором значений из заданного диапазона. Выбор значения из диапазона реализован перемещением ползунка по шкале.
Пример слайдера
Создадим пустую кодовую ячейку и добавим маску слайдера со следующими настройками:
Получим следующий вариант:
При этом содержимое кодовой ячейки заполнит следующий код:
уровень_громкости = 0 # @param {type:"slider",min:0,max:100,step:1}
Для редактирования наложенной маски наведите на нее курсор мыши и нажмите иконку . Поскольку код маскированных ячеек является полностью рабочим — можно редактировать не только маску, но и код ячейки.
Для добавления нового поля, скрытия кода или скрытия маски повторно воспользуйтесь контекстным меню маски :
Создание масок без интерфейса редактора
В разделе описаны некоторые особенности синтаксиса маскированных ячеек, которые могут быть полезны в вашей практике. Рекомендуем ознакомиться с разделом даже в том случае, если вы не планируете создавать маски вручную. |
В некоторых случаях может быть удобнее создавать маску не прибегая к контекстному меню создания маски , поэтому рассмотрим этот процесс подробнее.
Для создания масок вручную нужно самостоятельно воссоздать синтаксис, состоящий из:
-
Имени элемента управления. Некоторые из элементов имеют свои параметры для настройки поведения.;
-
Комментария
#
и параметра, начинающегося с@
.
Элементы управления масок кодовых ячеек уже описаны выше, их всего четыре. Для ручного создания каждого элемента свой собственный подход. Рассмотрим примеры для каждого из них:
Описание типов и подтипов выпадающего списка
|
Описание типов окна вводаМожно использовать различные типы полей ввода для сбора информации, и каждый тип подходит для определенного рода данных.
|
Описание типов слайдера
|
Описание возможностей markdownС помощью кодовой маски
|
Методы программного управления
С помощью публичных методов engee.script можно управлять скриптами Engee не прибегая к интерфейсу редактора скриптов. Эти команды предназначены для работы с файлами редактора скриптов и вызываются через engee.script
. Рассмотрим каждый из этих методов:
@include — включает (встраивает) код скрипта вместо вызова макроса.
Например, у нас есть скрипт с именем new.ngscript, в котором написан код — a = 1
. Создадим другой скрипт new_1.ngscript, в котором обратимся к первому по абсолютному пути через @include:
engee.script.@include("/user/new.ngscript")
Результат выполнения кода первого скрипта a = 1
будет включен во второй скрипт и будет равен 1
.
Команда @include и встраиваемый им код не должны находиться в одном скрипте. В ином случае возникнет ошибка циклической зависимости, когда @include должен вызвать сам себя. |
edit — открывает скрипт на редактирование.
Открывает скрипт для редактирования по указанному пути. Если файла скрипта нет, то он создается автоматически.
engee.script.edit("/user/new.ngscript")
Если указано расширение иное от .ngscript , то выведет ошибку ErrorException("path should end with.ngscriptextension") .
|
extract_code — извлекает код по указанному пути.
Извлекает код из скрипта по указанному пути. Например, для скрипта new.ngscript с кодом a = 1
:
engee.script.extract_code("/user/new.ngscript")
Вывод:
:($(Expr(:toplevel, :(#= none:1 =#), :(a = 1))))
Подробнее о других публичных методах, применяемых в скриптах, читайте в статье.