Riven is a bare minimum flow-based programming framework (eg: math & conditional). Nodes have 2 ways of communicating with each other, one is a send/receive
pattern, the other, a request/answer
pattern. Despite its minimal toolset, it can be expanded into a complete web framework.
You are given a node selection tool Ø()
, you can type the character with alt+shift+O
(Alt +0216). If you are on Windows, or cannot easily type this character, try wrapping this function into a character of your choosing, like function R(a){ return Ø(a); }
.
Ø("template").create({x:2,y:2})
will create a template node at 2,2.
Ø("template")
will select the template node.
Ø("template").connect("parser")
will connect the template node to the parser node.
You can also connect to multiple nodes at once with Ø("template").connect(["parser","console"])
. The Ø("template").bind("parser")
will create both a connection and a syphon between the 2 nodes.
Ø("template").send("hello")
will send "hello" to all receiving connected nodes.
Ø("template").receive(q) => {}
, method is triggered by send().
Ø("template").request("cake")
will request "cake" from all answering connected nodes.
Ø("template").answer("cake")
, method is triggered by request().
Ø("template").bang()
, is a convenience method equivalent to .send(true)
, will send true to all receiving connected nodes.
Looks for a connected node(receiving/answering) with the parameter id, Ø("template").signal("parser").send("hello")
. Will send "hello", directly to the parser node.
You can group nodes into scopes with .mesh(pos,[nodes])
to visually groups the nodes into a single element that can be moved as one.
Ø("template").mesh({x:2,y:2},[
Ø("parser").create({x:1,y:2}),
Ø("header").create({x:2,y:3})
])
This framework does nothing else, but it does this well.
Enjoy.