1.0.1 • Published 9 years ago

csp-ksh v1.0.1

Weekly downloads
3
License
MIT
Repository
github
Last release
9 years ago

csp-ksh

Experiments in CSP after reading:

You probably shouldn't use this. Although there are tests, I don't fully understand CSP / transducers yet!

Then I also read:

Supports:

  • transducers
  • buffer strategies: Sliding, Dropping, Fixed

Does not require generators!

Examples

See test.js. Otherwise here's an example of finding the mouse vector:

view on requirebin

var td = require('transducers-js');
var csp = require('./');
var chan = csp.chan;
var put = csp.put;
var take = csp.take;

// Create a channel with a buffer of size 2 using a sliding window strategy,
// with a transducer that groups as tuples.
var ch = chan([csp.SLIDING, 2], td.partitionAll(2));

// Built without generators, so we need our own "event loop".
(function next() {
  take(ch, function(ps) {
    var p1 = ps[0];
    var p2 = ps[1];
    if (p1 === chan.CLOSED || p2 === chan.CLOSED) return;
    document.body.innerHTML = ''
      + '<span style="font-size: 72px; text-align: center;">'
      + (p2.x - p1.x) + ', ' + (p2.y - p1.y)
      + '</span>'
    next();
  })
}())

// Always put the newest event into the channel.
document.body.addEventListener('mousemove', function(event) {
  put(ch, { x: event.clientX, y: event.clientY });
}, false)

Why?

Wanted to play around, also wanted to see how small (yet practical) I could make it, transducers and all. Generators are obviously possible via transpilation, but this provides a test bed for playing around in an environment without them.

License

MIT

1.0.1

9 years ago

1.0.0

9 years ago