UNPKG

elliptical

Version:

Interactive natural-language interfaces

207 lines (158 loc) 5.44 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _utils = require('../utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var _marked = [traverseChild, childrenTraversals, visit].map(_regenerator2.default.mark); function traverseChild(option, child, traverse) { var childOutputs, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, output, newResult, mods; return _regenerator2.default.wrap(function traverseChild$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: childOutputs = traverse(child, option); // slight performance optimization if (!(child.props.id == null)) { _context.next = 5; break; } return _context.delegateYield(childOutputs, 't0', 3); case 3: _context.next = 33; break; case 5: _iteratorNormalCompletion = true; _didIteratorError = false; _iteratorError = undefined; _context.prev = 8; _iterator = childOutputs[Symbol.iterator](); case 10: if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { _context.next = 19; break; } output = _step.value; newResult = child.props.id != null ? (0, _defineProperty3.default)({}, child.props.id, output.result) : output.result; mods = { result: newResult }; _context.next = 16; return _lodash2.default.assign({}, output, mods); case 16: _iteratorNormalCompletion = true; _context.next = 10; break; case 19: _context.next = 25; break; case 21: _context.prev = 21; _context.t1 = _context['catch'](8); _didIteratorError = true; _iteratorError = _context.t1; case 25: _context.prev = 25; _context.prev = 26; if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } case 28: _context.prev = 28; if (!_didIteratorError) { _context.next = 31; break; } throw _iteratorError; case 31: return _context.finish(28); case 32: return _context.finish(25); case 33: case 'end': return _context.stop(); } } }, _marked[0], this, [[8, 21, 25, 33], [26,, 28, 32]]); } function childrenTraversals(option, children, traverse) { var _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, child; return _regenerator2.default.wrap(function childrenTraversals$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: if (!(children && children.length > 0)) { _context2.next = 27; break; } _iteratorNormalCompletion2 = true; _didIteratorError2 = false; _iteratorError2 = undefined; _context2.prev = 4; _iterator2 = children[Symbol.iterator](); case 6: if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) { _context2.next = 13; break; } child = _step2.value; _context2.next = 10; return traverseChild(option, child, traverse); case 10: _iteratorNormalCompletion2 = true; _context2.next = 6; break; case 13: _context2.next = 19; break; case 15: _context2.prev = 15; _context2.t0 = _context2['catch'](4); _didIteratorError2 = true; _iteratorError2 = _context2.t0; case 19: _context2.prev = 19; _context2.prev = 20; if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } case 22: _context2.prev = 22; if (!_didIteratorError2) { _context2.next = 25; break; } throw _iteratorError2; case 25: return _context2.finish(22); case 26: return _context2.finish(19); case 27: case 'end': return _context2.stop(); } } }, _marked[1], this, [[4, 15, 19, 27], [20,, 22, 26]]); } function visit(option, _ref2, traverse) { var props = _ref2.props; var children = _ref2.children; var traversals; return _regenerator2.default.wrap(function visit$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: traversals = childrenTraversals(option, children, traverse); return _context3.delegateYield((0, _utils.limitIterator)(traversals, props.limit), 't0', 2); case 2: case 'end': return _context3.stop(); } } }, _marked[2], this); } exports.default = { visit: visit };