Skip to content

Latest commit

 

History

History
155 lines (117 loc) · 3.79 KB

README.md

File metadata and controls

155 lines (117 loc) · 3.79 KB

Hlang

All Contributors







A FBP-Inspired language for universal applications.


Hlang aims to make programming easier, faster and more comfortable. It avoids coding, repetition and frustration.




Ecosystem

UI & Devtool

devtool

Feature

  • 😊 Another FBP-Inspired System, but totally Reactive.
  • 🚀 Powerful ecosystem, abundant internal nodes.
  • 👬 Just use Node-Like Readable | Writable | Transform Stream API to become a node developer.
  • ✊ Production-ready and Enterprise-ready, High Performance.

🌰 Quick Start

const {
  Flow,
  ReadableNode,
  WriteableNode,
  TransformNode,
  Port,
} = require("@hlang-org/runtime");

const flowIns = new Flow();

class OneReadableNode extends ReadableNode {
  constructor() {
    super();

    // dig a port named `out`
    Port.O("out").attach(this);
  }

  _read($o) {
    // send packet to `out` port
    $o("out").send({ payload: "hello, world" });
  }
}

class OneTransformNode extends TransformNode {
  constructor() {
    super();

    // dig `in` `out` port
    Port.I("in").attach(this);
    Port.O("out").attach(this);
  }

  _transform($i, $o) {
    $i("in").receive((payload) => {
      $o("out").send(payload);
    });
  }
}

class OneWriteableNode extends WriteableNode {
  constructor() {
    super();
    Port.I("in").attach(this);
  }

  _write($i) {
    $i("in").receive(console.log);
  }
}

const $R = new OneReadableNode();
const $T = new OneTransformNode();
const $W = new OneWriteableNode();

// connect
$R.O("out").connect($T.I("in"));
$T.O("out").connect($W.I("in"));

// for fun!
flowIns.run($R);

Become a contributer ?

Install

step-1

$ npm install

step-2

$ npm run pm_install

Contributors

archersado
archersado

🚇 ⚠️ 💻
Archer
Archer

🚇 ⚠️ 💻