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ęzyk | Silnik |
|---|---|
| TypeScript | QuickJS (typy usuwane na etapie kompilacji) |
| JavaScript | QuickJS |
| Python | Pyodide (CPython skompilowany do WebAssembly) |
| Lua | Lua 5.4 w WebAssembly |
| Ruby | CRuby w WebAssembly |
| R | WebR |
| C# | .NET w WebAssembly z Roslynem |
Domyślnym językiem jest TypeScript.
Wspólny kontrakt
Section titled “Wspólny kontrakt”Niezależnie od języka blok udostępnia to samo:
| Wejścia | value (o nazwie input), code (ciąg znaków) |
| Wyjścia | result |
| Konfiguracja | language, code, timeout, packages |
input— wartość odebrana na porcie wejściowym.vars— zmienne 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 porterror.
Limit czasu
Section titled “Limit czasu”timeout, w sekundach: 5 domyślnie, 60 maksymalnie. Skrypt, który go
przekroczy, zostaje przerwany, a wykonanie trafia na port error.
Pakiety zewnętrzne
Section titled “Pakiety zewnętrzne”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 / JavaScript | npm (całość jest pakowana) |
| Python | Pakiety wheel w czystym Pythonie z PyPI |
| Lua | LuaRocks (źródła w czystym Lua) |
| Ruby | Gemy w czystym Ruby |
| R | CRAN, przez repozytorium WebAssembly projektu WebR |
| C# | Brak — wyłącznie biblioteka standardowa .NET |
Kiedy nie pisać kodu
Section titled “Kiedy nie pisać kodu”Wiele potrzeb pokrywają już gotowe bloki, czytelniejsze i szybsze:
| Potrzeba | Blok |
|---|---|
| Wyodrębnienie wartości z odpowiedzi | Selektor połączenia |
| Sformatowanie ciągu znaków | Transform template |
| Filtrowanie, sortowanie, agregowanie listy | Listy |
| Haszowanie, kodowanie, podpisywanie | Kodowanie |
| Sprawdzenie struktury | Walidacja schematu |
Blok Kod warto zachować dla logiki naprawdę specyficznej.