75

GitHub - staltz/zii: Chain function calls using a prototype function z

 5 years ago
source link: https://github.com/staltz/zii
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

readme.md

zii

Chain function calls using a prototype function .z()

Adds a function z to the Object prototype so that you can right-compose functions together. This is like the proposed pipeline operator |>, but implemented in ES5.

value.z(first).z(second) is the same as second(first(value))

  • 150 bytes small
  • Works with RxJS 6+
  • Works with Callbags
  • Works with plain functions and numbers and strings
  • Supports TypeScript

Installation

npm install zii

Usage

require('zii');
// Nothing else needed! This require will mutate the Object prototype

If you use TypeScript, then add this to your tsconfig.json file:

{
  ...
  "types": [
    "node_modules/zii/index.d.ts"
  ]
  ...
}

Examples

RxJS

require('zii')
const {from} = require('rxjs')
const {map, filter} = require('rxjs/operators')

from([1, 2, 3, 4, 5])
  .z(filter(x => x % 2 === 1))
  .z(map(x => x * 10))
  .subscribe({
    next: x => console.log(x)
  })

Callbags

require('zii')
const {fromIter, map, filter, forEach} = require('callbag-basics')

fromIter([1, 2, 3, 4, 5])
  .z(filter(x => x % 2 === 1))
  .z(map(x => x * 10))
  .z(forEach(console.log))

Simple JS

function doubleSay(str) {
  return str + ', ' + str;
}
function capitalize(str) {
  return str[0].toUpperCase() + str.substring(1);
}
function exclaim(str) {
  return str + '!';
}

'hello'
  .z(doubleSay)
  .z(capitalize)
  .z(exclaim)
  .z(console.log) // Hello, hello!

License

MIT


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK