This repository has been archived on 2023-03-25. You can view files and clone it, but cannot push or open issues or pull requests.
mightyscape-1.1-deprecated/extensions/fablabchemnitz/papercraft/openjscad/node_modules/most/lib/fusion/Map.js

72 lines
2.0 KiB
JavaScript
Raw Normal View History

'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));
};