Sembra che si tratti del sistema di espressioni JavaScript di Discourse Workflows, valutato lato server in un ambiente sandbox, anziché di un linguaggio di template separato come Liquid o Handlebars.
Quindi, ad esempio:
={{ $json.topic.title.toLowerCase() }}
funziona perché il contenuto di {{ ... }} viene valutato come JavaScript e toLowerCase() è il normale metodo stringa di JavaScript.
L’implementazione si trova in plugins/discourse-workflows/lib/discourse_workflows/expression_resolver.rb; espone globali specifiche per i workflow come $json, $input, $itemIndex, $trigger, $execution e $().
La sintassi e i concetti sono piuttosto simili a quelli di n8n. In realtà, esiste un riferimento esplicito a n8n altrove nel sorgente di Workflows:
il commit oneboxed di seguito ha aggiunto il comportamento di combinazione del nodo merge e include un test descritto come:
defaults clash handling to add_suffix (matches n8n position combine)
Quindi ci sono prove che alcune parti di Workflows corrispondano deliberatamente al comportamento di n8n, sebbene non sia riuscito a trovare nulla che affermi esplicitamente che il linguaggio di espressione stesso sia copiato o basato su n8n. Lo descriverei quindi come espressioni JavaScript sandbox fornite da Discourse Workflows, con alcune convenzioni simili a quelle di n8n.