UNPKG

eris-keys

Version:

a JavaScript client library for eris-keys

49 lines (45 loc) 1.21 kB
var _assign = require('./_assign'); var _identity = require('./_identity'); var _isTransformer = require('./_isTransformer'); var isArrayLike = require('../isArrayLike'); var objOf = require('../objOf'); module.exports = (function() { var _stepCatArray = { '@@transducer/init': Array, '@@transducer/step': function(xs, x) { xs.push(x); return xs; }, '@@transducer/result': _identity }; var _stepCatString = { '@@transducer/init': String, '@@transducer/step': function(a, b) { return a + b; }, '@@transducer/result': _identity }; var _stepCatObject = { '@@transducer/init': Object, '@@transducer/step': function(result, input) { return _assign( result, isArrayLike(input) ? objOf(input[0], input[1]) : input ); }, '@@transducer/result': _identity }; return function _stepCat(obj) { if (_isTransformer(obj)) { return obj; } if (isArrayLike(obj)) { return _stepCatArray; } if (typeof obj === 'string') { return _stepCatString; } if (typeof obj === 'object') { return _stepCatObject; } throw new Error('Cannot create transformer for ' + obj); }; }());