Skip to content

nsisodiya/node-blocks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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

Transform a Node into Another

alt pic

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

Connect a Node to another

alt pic

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

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

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

Alternate Syntax

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

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