Riven

Tiny Flow Based Framework

  • Owner: XXIIVV/riven
  • Platform:
  • License:: MIT License
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

Ø(Riven)

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.

The Ø Selector

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); }.

Create a node

Ø("template").create({x:2,y:2}) will create a template node at 2,2.

Select a node

Ø("template") will select the template node.

Connect a 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.

Communication

.Send()

Ø("template").send("hello") will send "hello" to all receiving connected nodes.

.Receive()

Ø("template").receive(q) => {}, method is triggered by send().

.Request()

Ø("template").request("cake") will request "cake" from all answering connected nodes.

.Answer()

Ø("template").answer("cake"), method is triggered by request().

Extras

.Bang()

Ø("template").bang(), is a convenience method equivalent to .send(true), will send true to all receiving connected nodes.

.Signal()

Looks for a connected node(receiving/answering) with the parameter id, Ø("template").signal("parser").send("hello"). Will send "hello", directly to the parser node.

Mesh

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})
])

That's it!

This framework does nothing else, but it does this well.

Enjoy.

Main metrics

Overview
Name With OwnerXXIIVV/riven
Primary LanguageJavaScript
Program languageHTML (Language Count: 3)
Platform
License:MIT License
所有者活动
Created At2018-02-23 01:49:27
Pushed At2022-10-20 02:33:17
Last Commit At2020-01-06 09:00:33
Release Count0
用户参与
Stargazers Count416
Watchers Count21
Fork Count32
Commits Count102
Has Issues Enabled
Issues Count7
Issue Open Count0
Pull Requests Count6
Pull Requests Open Count1
Pull Requests Close Count0
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private