72 lines
2.0 KiB
JavaScript
72 lines
2.0 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = Map;
|
|
|
|
var _Pipe = require('../sink/Pipe');
|
|
|
|
var _Pipe2 = _interopRequireDefault(_Pipe);
|
|
|
|
var _Filter = require('./Filter');
|
|
|
|
var _Filter2 = _interopRequireDefault(_Filter);
|
|
|
|
var _FilterMap = require('./FilterMap');
|
|
|
|
var _FilterMap2 = _interopRequireDefault(_FilterMap);
|
|
|
|
var _prelude = require('@most/prelude');
|
|
|
|
var base = _interopRequireWildcard(_prelude);
|
|
|
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
/** @license MIT License (c) copyright 2010-2016 original author or authors */
|
|
/** @author Brian Cavalier */
|
|
/** @author John Hann */
|
|
|
|
function Map(f, source) {
|
|
this.f = f;
|
|
this.source = source;
|
|
}
|
|
|
|
/**
|
|
* Create a mapped source, fusing adjacent map.map, filter.map,
|
|
* and filter.map.map if possible
|
|
* @param {function(*):*} f mapping function
|
|
* @param {{run:function}} source source to map
|
|
* @returns {Map|FilterMap} mapped source, possibly fused
|
|
*/
|
|
Map.create = function createMap(f, source) {
|
|
if (source instanceof Map) {
|
|
return new Map(base.compose(f, source.f), source.source);
|
|
}
|
|
|
|
if (source instanceof _Filter2.default) {
|
|
return new _FilterMap2.default(source.p, f, source.source);
|
|
}
|
|
|
|
return new Map(f, source);
|
|
};
|
|
|
|
Map.prototype.run = function (sink, scheduler) {
|
|
// eslint-disable-line no-extend-native
|
|
return this.source.run(new MapSink(this.f, sink), scheduler);
|
|
};
|
|
|
|
function MapSink(f, sink) {
|
|
this.f = f;
|
|
this.sink = sink;
|
|
}
|
|
|
|
MapSink.prototype.end = _Pipe2.default.prototype.end;
|
|
MapSink.prototype.error = _Pipe2.default.prototype.error;
|
|
|
|
MapSink.prototype.event = function (t, x) {
|
|
var f = this.f;
|
|
this.sink.event(t, f(x));
|
|
}; |