yl

4.0.0 • Public • Published

SYNOPSIS

A tiny flow control module that destructures.

CODE

module.exports = f => {
 
  if (!f.prototype.throw) return function() {
    const args = Array.from(arguments)
    return f.bind.apply(f, [null, ...args])
  }
 
  const gen = f()
 
  ~function nextCallback() {
    const args = Array.from(arguments)
    const next = gen.next(args)
    if (!next.done) next.value(nextCallback)
  }()
}

EXAMPLE

const { run, wrap } = require('yl')
const fs = require('fs')
const assert = require('assert')
 
run(function* () {
 
  const [statError, s] = yield wrap(fs.stat)('./index.js')
 
  if (statError) return console.error(statError)
 
  const [readError, f] = yield wrap(fs.readFile)('./index.js')
 
  assert.equal(f.length, s.size)
})

Or you could wrap everything initially...

const { run, wrap } = require('yl')
const fs = wrap(require('fs'))
 
run(function* () {
 
  const [statError, s] = yield fs.stat('./index.js')
  const [readError, f] = yield fs.readFile('./index.js')
 
  assert.equal(f.length, s.size)
})

Package Sidebar

Install

npm i yl

Weekly Downloads

0

Version

4.0.0

License

ISC

Last publish

Collaborators

  • hij1nx