Дії з кодом
Коли графа не вистачає, блок Code виконує скрипт.
Доступні сім мов, і всі вони виконуються у вбудованій пісочниці WebAssembly: жодного інтерпретатора на вашій машині не потрібно, а скрипт не має доступу до вашої файлової системи.
| Мова | Рушій |
|---|---|
| TypeScript | QuickJS (типи прибираються під час компіляції) |
| JavaScript | QuickJS |
| Python | Pyodide (CPython, скомпільований у WebAssembly) |
| Lua | Lua 5.4 у WebAssembly |
| Ruby | CRuby у WebAssembly |
| R | WebR |
| C# | .NET у WebAssembly з Roslyn |
Мова за замовчуванням — TypeScript.
Спільний контракт
Section titled “Спільний контракт”Хоч би якою була мова, блок надає те саме:
| Входи | value (має назву input), code (рядок) |
| Виходи | result |
| Конфігурація | language, code, timeout, packages |
input— значення, отримане на вхідному порту.vars— змінні запуску.- Стандартний вивід мови (
console.log,print,puts,cat,Console.WriteLine) живить журнал виконання. - Повернене значення вирушає на порт
result. Помилка або перевищення часу очікування йде наerror.
Час очікування
Section titled “Час очікування”timeout у секундах: типово 5, максимум 60. Скрипт, який його
перевищує, переривається, а виконання йде на порт error.
Зовнішні пакети
Section titled “Зовнішні пакети”Поле packages приймає перелік { ім'я, версія }. Точні версії слугують
ключем кешу: залежності розв’язуються під час першого виконання,
кешуються, а потім під час кожного наступного виконання під’єднуються
офлайн — зокрема й у CI.
| Мова | Джерело |
|---|---|
| TypeScript / JavaScript | npm (усе запаковується разом) |
| Python | Суто пайтонівські колеса з PyPI |
| Lua | LuaRocks (суто Lua-джерела) |
| Ruby | Суто рубінові gem-и |
| R | CRAN через репозиторій WebAssembly від WebR |
| C# | Немає — лише стандартна бібліотека .NET |
Коли не варто писати код
Section titled “Коли не варто писати код”Багато потреб уже покривають блоки — читабельніші й швидші:
| Потреба | Блок |
|---|---|
| Вилучити значення з відповіді | Селектор зв’язку |
| Відформатувати рядок | Шаблон |
| Відфільтрувати, відсортувати, агрегувати список | Списки |
| Захешувати, закодувати, підписати | Кодування |
| Перевірити структуру | Перевірка схеми |
Тримайте блок Code для справді специфічної логіки.