Przejdź do głównej zawartości

Akcje kodu

Gdy graf nie wystarcza, blok Kod uruchamia skrypt.

Dostępnych jest siedem języków, wszystkie uruchamiane we wbudowanej piaskownicy WebAssembly: na komputerze użytkownika nie jest wymagany żaden interpreter, a skrypt nie ma dostępu do systemu plików.

JęzykSilnik
TypeScriptQuickJS (typy usuwane na etapie kompilacji)
JavaScriptQuickJS
PythonPyodide (CPython skompilowany do WebAssembly)
LuaLua 5.4 w WebAssembly
RubyCRuby w WebAssembly
RWebR
C#.NET w WebAssembly z Roslynem

Domyślnym językiem jest TypeScript.

Niezależnie od języka blok udostępnia to samo:

Wejściavalue (o nazwie input), code (ciąg znaków)
Wyjściaresult
Konfiguracjalanguage, code, timeout, packages
  • input — wartość odebrana na porcie wejściowym.
  • varszmienne uruchomienia.
  • Standardowe wyjście danego języka (console.log, print, puts, cat, Console.WriteLine) zasila dziennik wykonania.
  • Zwrócona wartość trafia na port result. Błąd albo przekroczenie limitu czasu trafia na port error.

timeout, w sekundach: 5 domyślnie, 60 maksymalnie. Skrypt, który go przekroczy, zostaje przerwany, a wykonanie trafia na port error.

Pole packages przyjmuje listę wpisów { name, version }. Dokładne wersje służą jako klucz pamięci podręcznej: zależności są rozwiązywane przy pierwszym uruchomieniu, zapisywane w pamięci podręcznej, a następnie montowane offline przy każdym kolejnym uruchomieniu — również w CI.

JęzykŹródło
TypeScript / JavaScriptnpm (całość jest pakowana)
PythonPakiety wheel w czystym Pythonie z PyPI
LuaLuaRocks (źródła w czystym Lua)
RubyGemy w czystym Ruby
RCRAN, przez repozytorium WebAssembly projektu WebR
C#Brak — wyłącznie biblioteka standardowa .NET

Wiele potrzeb pokrywają już gotowe bloki, czytelniejsze i szybsze:

PotrzebaBlok
Wyodrębnienie wartości z odpowiedziSelektor połączenia
Sformatowanie ciągu znakówTransform template
Filtrowanie, sortowanie, agregowanie listyListy
Haszowanie, kodowanie, podpisywanieKodowanie
Sprawdzenie strukturyWalidacja schematu

Blok Kod warto zachować dla logiki naprawdę specyficznej.