Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nsisodiya/node-blocks
Flow Based Programming with JavaScript
https://github.com/nsisodiya/node-blocks
Last synced: about 1 month ago
JSON representation
Flow Based Programming with JavaScript
- Host: GitHub
- URL: https://github.com/nsisodiya/node-blocks
- Owner: nsisodiya
- License: mit
- Created: 2016-01-09T12:24:06.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2016-01-11T13:02:21.000Z (almost 9 years ago)
- Last Synced: 2024-04-14T07:51:20.991Z (9 months ago)
- Language: JavaScript
- Size: 1.17 MB
- Stars: 6
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# node-blocks
Flow Based Programming with JavaScript# Install
```
npm install node-blocks
```# Documentation
coming soon# Creating a Node
In this project Node function constructor is a variable container. You can store any variable on node![alt pic](https://raw.githubusercontent.com/nsisodiya/node-blocks/master/images/node-dia.png)
```js
import { Node } from 'node-blocks';var a1 = new Node();
a1.listen(function () {
console.log("Value of a1 got Changed", "new value", a1.read());
});a1.write('34');
a1.write('50');
```![alt pic](https://raw.githubusercontent.com/nsisodiya/node-blocks/master/images/node-out.png)
# Transform a Node into Another
![alt pic](https://raw.githubusercontent.com/nsisodiya/node-blocks/master/images/transform-dia.png)
```js
import { Node } from 'node-blocks';var a1 = new Node();
a1.listen(function () {
console.log("a1 changed", a1.read());
});var b1 = a1.transform(function (v) {
return 2 * v;
});
b1.listen(function () {
console.log("b1 changed", b1.read());
});a1.write(10);
a1.write(50);
```
![alt pic](https://raw.githubusercontent.com/nsisodiya/node-blocks/master/images/transform-out.png)# Connect a Node to another
![alt pic](https://raw.githubusercontent.com/nsisodiya/node-blocks/master/images/connect-dia.png)
```js
import { Node } from 'node-blocks';var a1 = new Node();
a1.listen(function () {
console.log("a1 changed", a1.read());
});var b1 = new Node();
b1.listen(function () {
console.log("b1 changed", b1.read());
});a1.connect(b1);
a1.write(10);
a1.write(50);
```
![alt pic](https://raw.githubusercontent.com/nsisodiya/node-blocks/master/images/connect-out.png)# Create Blocks
Block has kind of machine. Block has multiple inout and multiple out Nodes. You can connect Multiple block to
generate Bigger Blocks.
# Adder![alt pic](https://raw.githubusercontent.com/nsisodiya/node-blocks/master/images/adder-dia.png)
```js
import { Block } from 'node-blocks';var adder = new Block({
in: ["x", "y"],
out: ["sum"]
}, function (inp, out) {
var sum = inp.x.read() + inp.y.read();
out.sum.write(sum);
});adder.out.sum.listen(function () {
console.log("Total Sum is ", adder.out.sum.read());
});adder.in.x.write(10);
adder.in.y.write(20);
adder.in.x.write(30);
adder.in.y.write(50);
```
![alt pic](https://raw.githubusercontent.com/nsisodiya/node-blocks/master/images/adder-out.png)# Alternate Syntax
```js
class AdderBlock extends Block {
constructor() {
super();
}getConfig() {
return {
in: ["x", "y"],
out: ["sum"]
}
}run(inp, out) {
var sum = inp.x.read() + inp.y.read();
out.sum.write(sum);
}
}
```
# Adder + Doubler![alt pic](https://raw.githubusercontent.com/nsisodiya/node-blocks/master/images/adder-doubler-dia.png)
```js
import { Block } from 'node-blocks';var doubler = new Block({
in: ["x"],
out: ["d"]
}, function (inp, out) {
out.d.write(inp.x.read() * 2);
});var adder = new Block({
in: ["x", "y"],
out: ["sum"]
}, function (inp, out) {
var sum = inp.x.read() + inp.y.read();
out.sum.write(sum);
});adder.out.sum.connect(doubler.in.x);
doubler.out.d.listen(function () {
console.log("Double of Sum is ", doubler.out.d.read());
});adder.in.x.write(10);
adder.in.y.write(20);
adder.in.x.write(30);
adder.in.y.write(50);
```
![alt pic](https://raw.githubusercontent.com/nsisodiya/node-blocks/master/images/adder-doubler-out.png)