Tovább a tartalomhoz

Kódműveletek

Amikor a gráf nem elég, a Kód blokk lefuttat egy szkriptet.

Hét nyelv áll rendelkezésre, mindegyik beépített WebAssembly-sandboxban fut: a gépen nincs szükség értelmezőre, és a szkript nem éri el a fájlrendszert.

NyelvMotor
TypeScriptQuickJS (a típusok a fordításnál eltűnnek)
JavaScriptQuickJS
PythonPyodide (WebAssemblyre fordított CPython)
LuaLua 5.4 WebAssemblyben
RubyCRuby WebAssemblyben
RWebR
C#.NET WebAssemblyben, Roslynnal

Az alapértelmezett nyelv a TypeScript.

A nyelvtől függetlenül a blokk ugyanazt teszi közzé:

Bemenetekvalue (a neve input), code (karakterlánc)
Kimenetekresult
Beállításoklanguage, code, timeout, packages
  • input — a bemeneti porton kapott érték.
  • vars — a futásváltozók.
  • A nyelv standard kimenete (console.log, print, puts, cat, Console.WriteLine) a futtatási naplót táplálja.
  • A visszaadott érték a result portra kerül. A hiba vagy az időtúllépés az error portra.

A timeout másodpercben értendő: alapértelmezés szerint 5, legfeljebb 60. Az ezt túllépő szkript megszakad, a futtatás pedig az error portra kerül.

A packages mező { name, version } elemekből álló listát fogad el. A pontos verziók a gyorsítótár kulcsául szolgálnak: a függőségek az első futtatáskor oldódnak fel, gyorsítótárba kerülnek, majd minden további futtatásnál offline csatolódnak be — CI-ben is.

NyelvForrás
TypeScript / JavaScriptnpm (a teljes készlet egy bundle-be kerül)
PythonTisztán Python wheelek a PyPI-ról
LuaLuaRocks (tisztán Lua források)
RubyTisztán Ruby gemek
RCRAN, a WebR WebAssembly-tárházán keresztül
C#Nincs — csak a .NET standard könyvtára

Sok igényt már lefednek blokkok, amelyek olvashatóbbak és gyorsabbak:

IgényBlokk
Érték kinyerése egy válaszbólEgy élválasztó
Karakterlánc formázásaTransform template
Lista szűrése, rendezése, összesítéseListák
Hasítás, kódolás, aláírásKódolás
Struktúra ellenőrzéseSchema validate

A Kód blokkot a valóban egyedi logikára érdemes fenntartani.