UNPKG

elliptical-observe-inline

Version:
70 lines (52 loc) 1.6 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = createParser; var _elliptical = require('elliptical'); var _processor = require('./processor'); var _processor2 = _interopRequireDefault(_processor); var _store = require('./store'); var _store2 = _interopRequireDefault(_store); var _zenObservable = require('zen-observable'); var _zenObservable2 = _interopRequireDefault(_zenObservable); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** @jsx createElement */ function createParser(element, otherProcessor) { var store = (0, _store2.default)(); var currentObserver = void 0; var currentInput = void 0; var processor = (0, _processor2.default)(store.register); var trueProcessor = processor; if (otherProcessor) { trueProcessor = (0, _elliptical.combineProcessors)(processor, otherProcessor); } var _parse = (0, _elliptical.compile)(element, trueProcessor); function traverse() { var outputs = _parse(currentInput); currentObserver.next(outputs); } store.data.subscribe({ next: function next() { if (currentObserver) { traverse(); } } }); return { watch: function watch(input) { if (currentObserver) { currentObserver.complete(); } return new _zenObservable2.default(function (observer) { currentObserver = observer; currentInput = input; traverse(); }); }, parse: function parse(input) { return _parse(input); }, store: store }; }