Salta ai contenuti

Azioni di codice

Quando il grafo non basta, il riquadro Code esegue uno script.

Sono disponibili sette linguaggi, tutti eseguiti in una sandbox WebAssembly integrata: non è richiesto nessun interprete sulla macchina, e lo script non ha accesso al file system.

LinguaggioMotore
TypeScriptQuickJS (tipi rimossi in fase di compilazione)
JavaScriptQuickJS
PythonPyodide (CPython compilato in WebAssembly)
LuaLua 5.4 in WebAssembly
RubyCRuby in WebAssembly
RWebR
C#.NET in WebAssembly con Roslyn

Il linguaggio predefinito è TypeScript.

Qualunque sia il linguaggio, il riquadro espone la stessa cosa:

Inputvalue (denominato input), code (stringa)
Outputresult
Configurazionelanguage, code, timeout, packages
  • input — il valore ricevuto sulla porta di input.
  • vars — le variabili di run.
  • Lo standard output del linguaggio (console.log, print, puts, cat, Console.WriteLine) alimenta il log dell’esecuzione.
  • Il valore restituito parte sulla porta result. Un errore o un superamento del timeout parte su error.

timeout, in secondi: 5 per impostazione predefinita, 60 al massimo. Uno script che lo supera viene interrotto e l’esecuzione parte sulla porta error.

Il campo packages accetta un elenco di { name, version }. Le versioni esatte servono da chiave di cache: le dipendenze vengono risolte alla prima esecuzione, messe in cache e poi montate offline a ogni esecuzione successiva — anche in CI.

LinguaggioSorgente
TypeScript / JavaScriptnpm (l’insieme viene impacchettato)
PythonWheel puramente Python da PyPI
LuaLuaRocks (sorgenti puramente Lua)
RubyGem puramente Ruby
RCRAN, tramite il repository WebAssembly di WebR
C#Nessuna — soltanto la libreria standard .NET

Molte esigenze sono già coperte da riquadri, più leggibili e più rapidi:

EsigenzaRiquadro
Estrarre un valore da una rispostaUn selettore di collegamento
Formattare una stringaTrasforma
Filtrare, ordinare, aggregare un elencoElenchi
Fare hash, codificare, firmareCodifica
Verificare una strutturaValida uno schema

Conviene riservare il riquadro Code alla logica realmente specifica.