bucket.js 989 B

12345678910111213141516171819202122232425262728293031323334353637
  1. var assert = require('assert');
  2. var Lazy = require('..');
  3. exports.bucket = function () {
  4. var joined = false;
  5. var lazy = new Lazy;
  6. lazy.bucket('', function splitter (acc, x) {
  7. var accx = acc + x;
  8. var i = accx.indexOf('\n');
  9. if (i >= 0) {
  10. this(accx.slice(0, i));
  11. return splitter.call(this, accx.slice(i + 1), '');
  12. }
  13. return accx;
  14. }).join(function (lines) {
  15. assert.deepEqual(lines, 'foo bar baz quux moo'.split(' '));
  16. joined = true;
  17. });
  18. setTimeout(function () {
  19. lazy.emit('data', 'foo\nba');
  20. }, 50);
  21. setTimeout(function () {
  22. lazy.emit('data', 'r');
  23. }, 100);
  24. setTimeout(function () {
  25. lazy.emit('data', '\nbaz\nquux\nm');
  26. }, 150);
  27. setTimeout(function () {
  28. lazy.emit('data', 'oo');
  29. }, 200);
  30. setTimeout(function () {
  31. lazy.emit('data', '\nzoom');
  32. lazy.emit('end');
  33. assert.ok(joined);
  34. }, 250);
  35. };