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.
| Linguaggio | Motore |
|---|---|
| TypeScript | QuickJS (tipi rimossi in fase di compilazione) |
| JavaScript | QuickJS |
| Python | Pyodide (CPython compilato in WebAssembly) |
| Lua | Lua 5.4 in WebAssembly |
| Ruby | CRuby in WebAssembly |
| R | WebR |
| C# | .NET in WebAssembly con Roslyn |
Il linguaggio predefinito è TypeScript.
Il contratto comune
Section titled “Il contratto comune”Qualunque sia il linguaggio, il riquadro espone la stessa cosa:
| Input | value (denominato input), code (stringa) |
| Output | result |
| Configurazione | language, 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 suerror.
Il timeout
Section titled “Il timeout”timeout, in secondi: 5 per impostazione predefinita, 60 al massimo. Uno
script che lo supera viene interrotto e l’esecuzione parte sulla porta error.
I pacchetti esterni
Section titled “I pacchetti esterni”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.
| Linguaggio | Sorgente |
|---|---|
| TypeScript / JavaScript | npm (l’insieme viene impacchettato) |
| Python | Wheel puramente Python da PyPI |
| Lua | LuaRocks (sorgenti puramente Lua) |
| Ruby | Gem puramente Ruby |
| R | CRAN, tramite il repository WebAssembly di WebR |
| C# | Nessuna — soltanto la libreria standard .NET |
Quando non scrivere codice
Section titled “Quando non scrivere codice”Molte esigenze sono già coperte da riquadri, più leggibili e più rapidi:
| Esigenza | Riquadro |
|---|---|
| Estrarre un valore da una risposta | Un selettore di collegamento |
| Formattare una stringa | Trasforma |
| Filtrare, ordinare, aggregare un elenco | Elenchi |
| Fare hash, codificare, firmare | Codifica |
| Verificare una struttura | Valida uno schema |
Conviene riservare il riquadro Code alla logica realmente specifica.