Acțiuni de cod
Când graful nu este de ajuns, cutia Code execută un script.
Sunt disponibile șapte limbaje, toate rulate într-un mediu izolat WebAssembly încorporat: nu este necesar niciun interpretor pe mașina dumneavoastră, iar scriptul nu are acces la sistemul dumneavoastră de fișiere.
| Limbaj | Motor |
|---|---|
| TypeScript | QuickJS (tipurile sunt eliminate la compilare) |
| JavaScript | QuickJS |
| Python | Pyodide (CPython compilat în WebAssembly) |
| Lua | Lua 5.4 în WebAssembly |
| Ruby | CRuby în WebAssembly |
| R | WebR |
| C# | .NET în WebAssembly, cu Roslyn |
Limbajul implicit este TypeScript.
Contractul comun
Section titled “Contractul comun”Indiferent de limbaj, cutia expune același lucru:
| Intrări | value (denumită input), code (șir) |
| Ieșiri | result |
| Configurare | language, code, timeout, packages |
input— valoarea primită pe portul de intrare.vars— variabilele de rulare.- Ieșirea standard a limbajului (
console.log,print,puts,cat,Console.WriteLine) alimentează jurnalul execuției. - Valoarea returnată pleacă pe portul
result. O eroare sau o depășire a termenului pleacă peerror.
Timpul de expirare
Section titled “Timpul de expirare”timeout, în secunde: 5 implicit, 60 la maximum. Un script care depășește
această durată este întrerupt, iar execuția pleacă pe portul error.
Pachetele externe
Section titled “Pachetele externe”Câmpul packages acceptă o listă de { nom, version }. Versiunile exacte
servesc drept cheie de cache: dependențele sunt rezolvate la prima execuție,
puse în cache, apoi montate offline la fiecare execuție următoare — inclusiv
în CI.
| Limbaj | Sursă |
|---|---|
| TypeScript / JavaScript | npm (ansamblul este împachetat) |
| Python | Roți pur Python de la PyPI |
| Lua | LuaRocks (surse pur Lua) |
| Ruby | Gems pur Ruby |
| R | CRAN, prin depozitul WebAssembly al WebR |
| C# | Niciuna — doar biblioteca standard .NET |
Când să nu scrieți cod
Section titled “Când să nu scrieți cod”Multe nevoi sunt deja acoperite de cutii, mai lizibile și mai rapide:
| Nevoie | Cutie |
|---|---|
| Extragerea unei valori dintr-un răspuns | Un selector de legătură |
| Formatarea unui șir | Transformă |
| Filtrarea, sortarea, agregarea unei liste | Liste |
| Hașurare, codificare, semnare | Codificare |
| Verificarea unei structuri | Validează o schemă |
Păstrați cutia Code pentru logica cu adevărat specifică.